diff --git a/extra/dist/tarantoolctl.in b/extra/dist/tarantoolctl.in index 0796f46053586cbab9ca0e63d453b4c1b3ba301a..7228b78ad2d34a24ad5dad7bd6c50afb1d271089 100755 --- a/extra/dist/tarantoolctl.in +++ b/extra/dist/tarantoolctl.in @@ -547,8 +547,13 @@ local function start() end os.exit(1) end - local old_call = getmetatable(box.cfg).__call - getmetatable(box.cfg).__call = function(old_cfg, cfg) + local box_cfg_mt = getmetatable(box.cfg) + if box_cfg_mt == nil then + log.error('box.cfg() is not called in an instance file') + os.exit(1) + end + local old_call = box_cfg_mt.__call + box_cfg_mt.__call = function(old_cfg, cfg) if old_cfg.pid_file ~= nil and cfg ~= nil and cfg.pid_file ~= nil then cfg.pid_file = old_cfg.pid_file end diff --git a/test/app-tap/tarantoolctl.test.lua b/test/app-tap/tarantoolctl.test.lua index 62a78d6bf344081e88ad916c42e12a6c7c37a823..c1e1490ca1b3c2a430b6d77336eb8afa7ed80007 100755 --- a/test/app-tap/tarantoolctl.test.lua +++ b/test/app-tap/tarantoolctl.test.lua @@ -178,12 +178,14 @@ test:plan(8) -- must be stopped afterwards do local dir = fio.tempdir() - local code = [[ box.cfg{memtx_memory = 104857600} ]] - create_script(dir, 'script.lua', code) + create_script(dir, 'script.lua', [[ box.cfg{memtx_memory = 104857600} ]]) + create_script(dir, 'no_box_cfg.lua', [[ print('Hi!') ]]) local status, err = pcall(function() test:test("basic test", function(test_i) - test_i:plan(16) + test_i:plan(18) + check_ok(test_i, dir, 'start', 'no_box_cfg', 1, nil, "Starting instance", + "box.cfg() is not called in an instance file") check_ok(test_i, dir, 'start', 'script', 0, nil, "Starting instance") tctl_wait_start(dir, 'script') check_ok(test_i, dir, 'status', 'script', 0, nil, "is running")