-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
> What's the problem? When creating the logic for saving artifacts [1] a global variable has been created as `current_test` in the `runner.lua` module. Luatest has collected all the tests and runs a simple loop. At the beginning of each iteration the current test is written to the `current_test'. Server saved the value of the current test. However at some point the current test in the global variable and in the server object were different (the server stored information about the previous test). Also server does not store information about which test it was used in. > What is the solution? Redesign the logic of working with artifacts: now each test knows which server is linked to it, and each server knows about the test. For example: foo = Server:new() bar = Server:new() foo:start() bar:start() -- only `foo` artifacts g.test_with_foo = function() foo:exec(...) end -- no server artifacts g.test_without_servers = function() ... end [1] #296 Close #299
- Loading branch information
1 parent
3f13533
commit a67064f
Showing
7 changed files
with
143 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
local t = require('luatest') | ||
local utils = require('luatest.utils') | ||
local fio = require('fio') | ||
|
||
local g = t.group() | ||
local Server = t.Server | ||
|
||
local function is_server_in_test(server, test) | ||
for _, s in pairs(test.servers) do | ||
if server.id == s.id then | ||
return true | ||
end | ||
end | ||
return false | ||
end | ||
|
||
g.public = Server:new({alias = 'public'}) | ||
g.public:start() | ||
|
||
g.before_all(function() | ||
g.all = Server:new({alias = 'all'}) | ||
g.all:start() | ||
end) | ||
|
||
g.before_each(function() | ||
g.each = Server:new({alias = 'each'}) | ||
g.each:start() | ||
end) | ||
|
||
g.before_test('test_association_between_test_and_servers', function() | ||
g.test = Server:new({alias = 'test'}) | ||
g.test:start() | ||
end) | ||
|
||
|
||
g.test_association_between_test_and_servers = function() | ||
g.internal = Server:new({alias = 'internal'}) | ||
g.internal:start() | ||
|
||
local test = rawget(_G, 'current_test').value | ||
|
||
-- test static association | ||
t.assert(is_server_in_test(g.internal, test)) | ||
t.assert(is_server_in_test(g.each, test)) | ||
t.assert(is_server_in_test(g.test, test)) | ||
t.assert_not(is_server_in_test(g.public, test)) | ||
|
||
g.public:exec(function() return 1 + 1 end) | ||
g.all:exec(function() return 1 + 1 end) | ||
|
||
-- test dynamic association | ||
t.assert(is_server_in_test(g.public, test)) | ||
t.assert(is_server_in_test(g.all, test)) | ||
|
||
t.assert(utils.table_len(test.servers) == 5) | ||
end | ||
|
||
g.after_test('test_association_between_test_and_servers', function() | ||
g.test:drop() | ||
t.assert(fio.path.exists(g.test.artifacts)) | ||
end) | ||
|
||
g.after_each(function() | ||
g.each:drop() | ||
t.assert(fio.path.exists(g.each.artifacts)) | ||
end) | ||
|
||
g.after_all(function() | ||
g.all:drop() | ||
t.assert(fio.path.exists(g.all.artifacts)) | ||
end) |