From f0bcd78b6791a41fa49d41ac494e53a0c1dc0949 Mon Sep 17 00:00:00 2001 From: Yaroslav Lobankov <y.lobankov@tarantool.org> Date: Mon, 26 Aug 2024 20:54:32 +0400 Subject: [PATCH] test: use `justrun` module from luatest NO_DOC=test NO_TEST=test NO_CHANGELOG=test (cherry picked from commit 90d197ded13d49dfc405ff80bbd183b2e260dc56) --- ...0_abort_recording_on_fiber_switch_test.lua | 2 +- ...rors_in_init_scripts_are_stripped_test.lua | 2 +- .../gh_5983_jit_library_smoke_tests_test.lua | 2 +- test/app-luatest/module_search_test.lua | 2 +- test/app-luatest/override_misc_test.lua | 2 +- test/app-luatest/override_panic_test.lua | 2 +- test/app-luatest/override_test.lua | 2 +- test/app-luatest/preload_test.lua | 2 +- test/box-luatest/box_cfg_env_test.lua | 2 +- test/justrun.lua | 152 ------------------ 10 files changed, 9 insertions(+), 161 deletions(-) delete mode 100644 test/justrun.lua diff --git a/test/app-luatest/gh_1700_abort_recording_on_fiber_switch_test.lua b/test/app-luatest/gh_1700_abort_recording_on_fiber_switch_test.lua index 86b7131096..f9d0120e55 100644 --- a/test/app-luatest/gh_1700_abort_recording_on_fiber_switch_test.lua +++ b/test/app-luatest/gh_1700_abort_recording_on_fiber_switch_test.lua @@ -1,6 +1,6 @@ local t = require('luatest') local treegen = require('luatest.treegen') -local justrun = require('test.justrun').tarantool +local justrun = require('luatest.justrun').tarantool local pathjoin = require('fio').pathjoin local g = t.group() diff --git a/test/app-luatest/gh_4975_errors_in_init_scripts_are_stripped_test.lua b/test/app-luatest/gh_4975_errors_in_init_scripts_are_stripped_test.lua index 0ef38cba0d..2f8a434a62 100644 --- a/test/app-luatest/gh_4975_errors_in_init_scripts_are_stripped_test.lua +++ b/test/app-luatest/gh_4975_errors_in_init_scripts_are_stripped_test.lua @@ -1,5 +1,5 @@ local t = require('luatest') -local justrun = require('test.justrun') +local justrun = require('luatest.justrun') local g = t.group('gh-4975') diff --git a/test/app-luatest/gh_5983_jit_library_smoke_tests_test.lua b/test/app-luatest/gh_5983_jit_library_smoke_tests_test.lua index fb7d7d957c..a53e805850 100644 --- a/test/app-luatest/gh_5983_jit_library_smoke_tests_test.lua +++ b/test/app-luatest/gh_5983_jit_library_smoke_tests_test.lua @@ -1,6 +1,6 @@ local t = require('luatest') local treegen = require('luatest.treegen') -local justrun = require('test.justrun').tarantool +local justrun = require('luatest.justrun').tarantool local g = t.group() diff --git a/test/app-luatest/module_search_test.lua b/test/app-luatest/module_search_test.lua index 33d2080e15..bcc165b872 100644 --- a/test/app-luatest/module_search_test.lua +++ b/test/app-luatest/module_search_test.lua @@ -2,7 +2,7 @@ local fio = require('fio') local t = require('luatest') local treegen = require('luatest.treegen') -local justrun = require('test.justrun') +local justrun = require('luatest.justrun') local g = t.group() diff --git a/test/app-luatest/override_misc_test.lua b/test/app-luatest/override_misc_test.lua index 04a2be6342..2ce3802ce1 100644 --- a/test/app-luatest/override_misc_test.lua +++ b/test/app-luatest/override_misc_test.lua @@ -1,6 +1,6 @@ local t = require('luatest') local treegen = require('luatest.treegen') -local justrun = require('test.justrun') +local justrun = require('luatest.justrun') local g = t.group() diff --git a/test/app-luatest/override_panic_test.lua b/test/app-luatest/override_panic_test.lua index a0d693c96c..c0346e30fc 100644 --- a/test/app-luatest/override_panic_test.lua +++ b/test/app-luatest/override_panic_test.lua @@ -1,6 +1,6 @@ local t = require('luatest') local treegen = require('luatest.treegen') -local justrun = require('test.justrun') +local justrun = require('luatest.justrun') local g = t.group() diff --git a/test/app-luatest/override_test.lua b/test/app-luatest/override_test.lua index 71cf625741..b1fb0d9d2c 100644 --- a/test/app-luatest/override_test.lua +++ b/test/app-luatest/override_test.lua @@ -1,6 +1,6 @@ local t = require('luatest') local treegen = require('luatest.treegen') -local justrun = require('test.justrun') +local justrun = require('luatest.justrun') local g = t.group() diff --git a/test/app-luatest/preload_test.lua b/test/app-luatest/preload_test.lua index 522c979ae3..d9546bb50f 100644 --- a/test/app-luatest/preload_test.lua +++ b/test/app-luatest/preload_test.lua @@ -1,7 +1,7 @@ local fio = require('fio') local t = require('luatest') local treegen = require('luatest.treegen') -local justrun = require('test.justrun') +local justrun = require('luatest.justrun') local g = t.group() diff --git a/test/box-luatest/box_cfg_env_test.lua b/test/box-luatest/box_cfg_env_test.lua index 4d1ee116c7..6bd3264b5e 100644 --- a/test/box-luatest/box_cfg_env_test.lua +++ b/test/box-luatest/box_cfg_env_test.lua @@ -2,7 +2,7 @@ local fun = require('fun') local json = require('json') local t = require('luatest') local treegen = require('luatest.treegen') -local justrun = require('test.justrun') +local justrun = require('luatest.justrun') local g = t.group() diff --git a/test/justrun.lua b/test/justrun.lua deleted file mode 100644 index 953b53fefe..0000000000 --- a/test/justrun.lua +++ /dev/null @@ -1,152 +0,0 @@ -local fun = require('fun') -local log = require('log') -local json = require('json') -local fiber = require('fiber') -local popen = require('popen') - -local justrun = {} - -local function collect_stderr(ph) - local f = fiber.new(function() - local fiber_name = "child's stderr collector" - fiber.name(fiber_name, {truncate = true}) - - local chunks = {} - - while true do - local chunk, err = ph:read({stderr = true}) - if chunk == nil then - log.warn(('%s: got error, exiting: %s'):format( - fiber_name, tostring(err))) - break - end - if chunk == '' then - log.info(('%s: got EOF, exiting'):format(fiber_name)) - break - end - table.insert(chunks, chunk) - end - - -- Glue all chunks, strip trailing newline. - return table.concat(chunks):rstrip() - end) - f:set_joinable(true) - return f -end - -local function cancel_stderr_fiber(stderr_fiber) - if stderr_fiber == nil then - return - end - stderr_fiber:cancel() -end - -local function join_stderr_fiber(stderr_fiber) - if stderr_fiber == nil then - return - end - return select(2, assert(stderr_fiber:join())) -end - --- Run tarantool in given directory with given environment and --- command line arguments and catch its output. --- --- Expects JSON lines as the output and parses it into an array --- (it can be disabled using `nojson` option). --- --- Options: --- --- - nojson (boolean, default: false) --- --- Don't attempt to decode stdout as a stream of JSON lines, --- return as is. --- --- - stderr (boolean, default: false) --- --- Collect stderr and place it into the `stderr` field of the --- return value --- --- - quote_args (boolean, default: false) --- --- Quote CLI arguments before concatenating them into a shell --- command. -function justrun.tarantool(dir, env, args, opts) - assert(type(dir) == 'string') - assert(type(env) == 'table') - assert(type(args) == 'table') - local opts = opts or {} - assert(type(opts) == 'table') - - -- Prevent system/user inputrc configuration file from - -- influencing testing code. - env['INPUTRC'] = '/dev/null' - - local tarantool_exe = arg[-1] - -- Use popen.shell() instead of popen.new() due to lack of - -- cwd option in popen (gh-5633). - local env_str = table.concat(fun.iter(env):map(function(k, v) - return ('%s=%q'):format(k, v) - end):totable(), ' ') - local args_str = table.concat(fun.iter(args):map(function(v) - return opts.quote_args and ('%q'):format(v) or v - end):totable(), ' ') - local command = ('cd %s && %s %s %s'):format(dir, env_str, tarantool_exe, - args_str) - log.info(('Running a command: %s'):format(command)) - local mode = opts.stderr and 'rR' or 'r' - local ph = popen.shell(command, mode) - - local stderr_fiber - if opts.stderr then - stderr_fiber = collect_stderr(ph) - end - - -- Read everything until EOF. - local chunks = {} - while true do - local chunk, err = ph:read() - if chunk == nil then - cancel_stderr_fiber(stderr_fiber) - ph:close() - error(err) - end - if chunk == '' then -- EOF - break - end - table.insert(chunks, chunk) - end - - local exit_code = ph:wait().exit_code - local stderr = join_stderr_fiber(stderr_fiber) - ph:close() - - -- If an error occurs, discard the output and return only the - -- exit code. However, return stderr. - if exit_code ~= 0 then - return { - exit_code = exit_code, - stderr = stderr, - } - end - - -- Glue all chunks, strip trailing newline. - local res = table.concat(chunks):rstrip() - log.info(('Command output:\n%s'):format(res)) - - -- Decode JSON object per line into array of tables (if - -- `nojson` option is not passed). - local decoded - if opts.nojson then - decoded = res - else - decoded = fun.iter(res:split('\n')):map(json.decode):totable() - end - - return { - exit_code = exit_code, - stdout = decoded, - stderr = stderr, - } -end - -return justrun -- GitLab