Skip to content

Parameterization for group breaks tests, before_all is not executed #390

@Serpentian

Description

@Serpentian

When before_all trigger is defined as g.before_all = function() ..., then test with group config doesn't work, it seems before_all doesn't launch at all, as the test fails with the following error:

[001] replication-luatest/check_group_test.lua                                                                                                           [ fail ]
[001] Test failed! Output from reject file /tmp/t/rejects/replication-luatest/check_group.reject:
[001] Tarantool version is 3.3.0-entrypoint-107-g0c7f17ffe
[001] TAP version 13
[001] 1..2
[001] # Started on Thu Sep 26 11:48:30 2024
[001] # Starting group: hey.engine:"memtx"
[001] not ok 1	hey.engine:"memtx".test_something
[001] #   .../tarantool/test/replication-luatest/check_group_test.lua:20: attempt to index field 'master' (a nil value)
[001] #   stack traceback:
[001] #   	...
[001] #   	[C]: in function 'xpcall'
[001] # Starting group: hey.engine:"vinyl"
[001] not ok 2	hey.engine:"vinyl".test_something
[001] #   .../tarantool/test/replication-luatest/check_group_test.lua:20: attempt to index field 'master' (a nil value)
[001] #   stack traceback:
[001] #   	...
[001] #   	[C]: in function 'xpcall'
[001] # Ran 2 tests in 0.001 seconds, 0 succeeded, 2 errored

However, when it's defined as g.before_all(function()...), everything is fine.

Broken one
local t = require('luatest')
local replica_set = require('luatest.replica_set')
local server = require('luatest.server')

local g = t.group('hey', {{engine = 'memtx'}, {engine = 'vinyl'}})

g.before_all = function(lg)
    lg.replica_set = replica_set:new({})
    lg.master = lg.replica_set:build_and_add_server({alias = 'master', box_cfg = {
        replication_timeout = 0.1,
    }})
    lg.replica_set:start()
end

g.after_all = function(lg)
    lg.replica_set:drop()
end

g.test_something = function(lg)
    lg.master:exec(function()
        t.assert(true)
    end)
end
Working one
local t = require('luatest')
local replica_set = require('luatest.replica_set')
local server = require('luatest.server')

local g = t.group('hey', {{engine = 'memtx'}, {engine = 'vinyl'}})

g.before_all(function(lg)
    lg.replica_set = replica_set:new({})
    lg.master = lg.replica_set:build_and_add_server({alias = 'master', box_cfg = {
        replication_timeout = 0.1,
    }})
    lg.replica_set:start()
end)

g.after_all(function(lg)
    lg.replica_set:drop()
end)

g.test_something = function(lg)
    lg.master:exec(function()
        t.assert(true)
    end)
end

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions