From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id BF4FB53B85B; Mon, 24 Jul 2023 13:53:39 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org BF4FB53B85B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1690196019; bh=GI9fzRWb/8prXfJVfVBfJi6p6WjNjaeeP7mNXDu44ts=; h=Date:To:Cc:References:In-Reply-To:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=qE5NfkCthbgFcS48ldE8+vv8uwFgB5mxVE7GGIm3yArFew2l0DUmWSjMaJ5NFsBCh H9T92YvMZcjo2gW6Ka9gPuMHw9pNfUU7VJi0t7KlTrgQE57maDFaoELcFXhZ8CoQvR W2y0V7I/XgK6qgAvR75OIUNtd3j4XtbIQfM4SYnQ= Received: from smtp52.i.mail.ru (smtp52.i.mail.ru [95.163.41.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 2393F53B85B for ; Mon, 24 Jul 2023 13:53:38 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 2393F53B85B Received: by smtp52.i.mail.ru with esmtpa (envelope-from ) id 1qNtC5-003yhq-56; Mon, 24 Jul 2023 13:53:37 +0300 Message-ID: <9dc794b3-0f71-0a17-e075-daf4a5f63e3d@tarantool.org> Date: Mon, 24 Jul 2023 13:53:36 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US To: Igor Munkin , Sergey Kaplun Cc: tarantool-patches@dev.tarantool.org References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Mailru-Src: smtp X-4EC0790: 10 X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD9227D43F3CB451B410BF03CE1B48E4F6DE839A4FE7D2C1877182A05F538085040F59C9F7E5796B07E6656E5A73B78B2D1D3766410870B4F485B7E36BD2C22B1F6 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE7B2F1B2566C686A20EA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637175EF79FCE26347D8638F802B75D45FF36EB9D2243A4F8B5A6FCA7DBDB1FC311F39EFFDF887939037866D6147AF826D82A34439EA194E8BAA7E5D28030198A85117882F4460429724CE54428C33FAD305F5C1EE8F4F765FCAA867293B0326636D2E47CDBA5A96583BD4B6F7A4D31EC0BC014FD901B82EE079FA2833FD35BB23D27C277FBC8AE2E8B6CE7A4E25BAF3B969FA2833FD35BB23DF004C90652538430302FCEF25BFAB3454AD6D5ED66289B5278DA827A17800CE7DDAFDD75627DC055D32BA5DBAC0009BE395957E7521B51C2330BD67F2E7D9AF1090A508E0FED6299176DF2183F8FC7C0DDA3EF1F92285B88CD04E86FAF290E2DB606B96278B59C421DD303D21008E29813377AFFFEAFD269176DF2183F8FC7C06B017D46BF743B9968655334FD4449CB9ECD01F8117BC8BEAAAE862A0553A39223F8577A6DFFEA7C5E1C53F199C2BB95B5C8C57E37DE458BEDA766A37F9254B7 X-C1DE0DAB: 0D63561A33F958A5E5E240BE55EE86BE2E7F04E2B6ED4A01CBDE789A041F3CB7F87CCE6106E1FC07E67D4AC08A07B9B0034D30FDF2F620DBCB5012B2E24CD356 X-C8649E89: 1C3962B70DF3F0ADE00A9FD3E00BEEDF3FED46C3ACD6F73ED3581295AF09D3DF87807E0823442EA2ED31085941D9CD0AF7F820E7B07EA4CF67E440843FAB05BBF4E96EDA3C756B9B07ECC3A54E256F055C7102C2136724C1110A92F5D16EB67FC81315DA36159FFB2CE364CF144C185635B17EA4A1B241DDE48CAC7CA610320002C26D483E81D6BE0DBAE6F56676BC7117BB6831D7356A2DEC5B5AD62611EEC62B5AFB4261A09AF0 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5ycPtXkTV4k65bRjmOUUP8cvGozZ33TWg5HZplvhhXbhDGzqmQDTd6OAevLeAnq3Ra9uf7zvY2zzsIhlcp/Y7m53TZgf2aB4JOg4gkr2biojHVt7enifY/vTexxiOiMbWQ== X-Mailru-Sender: 11C2EC085EDE56FAC07928AF2646A7692F6ECE8E867727686656E5A73B78B2D181AE5054A97140B9EBA65886582A37BD66FEC6BF5C9C28D98A98C1125256619760D574B6FC815AB872D6B4FCE48DF648AE208404248635DF X-Mras: Ok Subject: Re: [Tarantool-patches] [PATCH luajit v2 3/5] test: introduce test:done TAP helper X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Sergey Bronnikov via Tarantool-patches Reply-To: Sergey Bronnikov Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" Thanks for the patch! LGTM On 7/21/23 11:12, Igor Munkin wrote: > Before the patch all tests (except ) > in tarantool-tests suite terminate their execution via with > the status depending on the test results. However, the second argument > of was omitted and Lua universe was not properly finalized as > a result. This behaviour becomes a problem, when LuaJIT is build with > LUAJIT_USE_SYSMALLOC option and AddressSanitizer support enabled, since > the sanitizer starts reporting false positive errors about the memory > allocations without the corresponding memory releases. To resolve these > errors, the second parameter to each call terminating the test > has to be added. > > To avoid loss of the aforementioned parameter in future, > helper has been added to the TAP module. Depending on the single > parameter, the new helper either properly finalize the test being run, > or simply checks all the test assertions and raises an error if any of > them fail. The latter case is added especially to handle the specifics > of and still check that everything > works fine. > > Needed for tarantool/tarantool#5878 > > Signed-off-by: Igor Munkin > --- > .../arm64-ccall-fp-convention.test.lua | 2 +- > test/tarantool-tests/bc-jit-unpatching.test.lua | 2 +- > .../c-library-path-length.test.lua | 2 +- > .../fix-bit-shift-generation.test.lua | 2 +- > test/tarantool-tests/fix-cdata-concat.test.lua | 2 +- > test/tarantool-tests/fix-emit-rma.test.lua | 2 +- > .../fix-fold-simplify-conv-sext.test.lua | 2 +- > test/tarantool-tests/fix-gc-setupvalue.test.lua | 2 +- > .../fix-slot-check-for-mm-record.test.lua | 2 +- > .../gh-3196-incorrect-string-length.test.lua | 2 +- > test/tarantool-tests/gh-4199-gc64-fuse.test.lua | 2 +- > .../tarantool-tests/gh-4427-ffi-sandwich.test.lua | 2 +- > .../gh-4476-fix-string-find-recording.test.lua | 2 +- > .../gh-4773-tonumber-fail-on-NUL-char.test.lua | 2 +- > .../gh-5813-resolving-of-c-symbols.test.lua | 2 +- > .../gh-6065-jit-library-smoke-tests.test.lua | 2 +- > ...6084-missed-carg1-in-bctsetr-fallback.test.lua | 2 +- > .../gh-6096-external-unwinding-on-arm64.test.lua | 2 +- > ...-6098-fix-side-exit-patching-on-arm64.test.lua | 2 +- > test/tarantool-tests/gh-6163-min-max.test.lua | 2 +- > test/tarantool-tests/gh-6189-cur_L.test.lua | 2 +- > ...27-bytecode-allocator-for-comparisons.test.lua | 2 +- > .../gh-6371-string-char-no-arg.test.lua | 2 +- > .../gh-6782-stitching-in-vmevent-handler.test.lua | 2 +- > .../gh-6976-narrowing-of-unary-minus.test.lua | 2 +- > ...-7264-add-proto-trace-sysprof-default.test.lua | 2 +- > .../tarantool-tests/gh-7745-oom-on-trace.test.lua | 2 +- > .../lj-350-sload-typecheck.test.lua | 2 +- > .../lj-351-print-tostring-number.test.lua | 2 +- > .../lj-356-ir-khash-non-string-obj.test.lua | 2 +- > test/tarantool-tests/lj-357-arm64-hrefk.test.lua | 2 +- > .../lj-366-strtab-correct-size.test.lua | 2 +- > .../lj-375-ir-bufput-signed-char.test.lua | 2 +- > .../lj-378-string-format-c-null-char.test.lua | 2 +- > .../lj-408-tonumber-cdata-record.test.lua | 2 +- > .../lj-416-xor-before-jcc.test.lua | 2 +- > .../lj-418-assert-any-type.test.lua | 2 +- > ...j-426-arm64-incorrect-check-closed-uv.test.lua | 2 +- > test/tarantool-tests/lj-430-maxirconst.test.lua | 2 +- > ...-438-arm64-constant-rematerialization.test.lua | 2 +- > .../lj-445-fix-memory-probing-allocator.test.lua | 2 +- > test/tarantool-tests/lj-463-os-date-oom.test.lua | 2 +- > .../lj-494-table-chain-infinite-loop.test.lua | 2 +- > .../lj-505-fold-no-strref-for-ptrdiff.test.lua | 2 +- > .../lj-512-profiler-hook-finalizers.test.lua | 2 +- > .../lj-524-fold-conv-respect-src-irt.test.lua | 2 +- > test/tarantool-tests/lj-528-tonumber-0.test.lua | 2 +- > .../lj-556-fix-loop-realignment.test.lua | 2 +- > .../lj-574-overflow-unpack.test.lua | 2 +- > .../lj-584-bad-renames-for-sunk-values.test.lua | 2 +- > .../lj-586-debug-non-string-error.test.lua | 2 +- > .../lj-601-fix-gc-finderrfunc.test.lua | 2 +- > .../lj-603-err-snap-restore.test.lua | 15 ++++++++------- > .../lj-671-arm64-assert-after-mremap.test.lua | 2 +- > .../lj-672-cdata-allocation-recording.test.lua | 2 +- > .../lj-688-snap-ir-rename.test.lua | 2 +- > .../lj-695-ffi-vararg-call.test.lua | 2 +- > .../lj-698-arm-pcall-panic.test.lua | 2 +- > .../lj-704-bc-varg-use-def.test.lua | 2 +- > .../lj-726-profile-flush-close.test.lua | 2 +- > .../lj-727-lightuserdata-itern.test.lua | 2 +- > .../lj-735-io-close-on-closed-file.test.lua | 2 +- > test/tarantool-tests/lj-762-pcall-no-arg.test.lua | 2 +- > .../lj-819-fix-missing-uclo.test.lua | 2 +- > .../lj-864-varg-rec-base-offset.test.lua | 2 +- > test/tarantool-tests/lj-906-fix-err-mem.test.lua | 2 +- > test/tarantool-tests/lj-981-folding-0.test.lua | 2 +- > ...994-instable-types-during-loop-unroll.test.lua | 2 +- > test/tarantool-tests/lj-flush-on-trace.test.lua | 2 +- > test/tarantool-tests/math-modf.test.lua | 2 ++ > .../misclib-getmetrics-lapi.test.lua | 2 +- > .../tarantool-tests/misclib-memprof-lapi.test.lua | 2 +- > .../tarantool-tests/misclib-sysprof-lapi.test.lua | 2 +- > .../tarantool-tests/or-144-gc64-asmref-l.test.lua | 2 +- > .../or-232-unsink-64-kptr.test.lua | 2 +- > .../or-94-arm64-ir-ahuvload-bool.test.lua | 2 +- > test/tarantool-tests/tap.lua | 14 +++++++++++++- > .../tonumber-negative-non-decimal-base.test.lua | 2 +- > test/tarantool-tests/tools-utils-avl.test.lua | 2 +- > test/tarantool-tests/unit-jit-parse.test.lua | 2 +- > 80 files changed, 100 insertions(+), 85 deletions(-) > > diff --git a/test/tarantool-tests/arm64-ccall-fp-convention.test.lua b/test/tarantool-tests/arm64-ccall-fp-convention.test.lua > index 8307e8b1..c58ba697 100644 > --- a/test/tarantool-tests/arm64-ccall-fp-convention.test.lua > +++ b/test/tarantool-tests/arm64-ccall-fp-convention.test.lua > @@ -62,4 +62,4 @@ test:ok(assert_sz12(sz12_222, {2, 2, 2}), '2 structures as args') > local sz12_333 = ffi_ccall.sum3sz12(sz12_111, sz12_111, sz12_111) > test:ok(assert_sz12(sz12_333, {3, 3, 3}), '3 structures as args') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/bc-jit-unpatching.test.lua b/test/tarantool-tests/bc-jit-unpatching.test.lua > index f4f148c9..752fafac 100644 > --- a/test/tarantool-tests/bc-jit-unpatching.test.lua > +++ b/test/tarantool-tests/bc-jit-unpatching.test.lua > @@ -22,4 +22,4 @@ f(5) > test:ok(utils.frontend.hasbc(load(string.dump(f)), ret1bc), > 'bytecode unpatching is OK') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/c-library-path-length.test.lua b/test/tarantool-tests/c-library-path-length.test.lua > index 4f1e6602..63f3b695 100644 > --- a/test/tarantool-tests/c-library-path-length.test.lua > +++ b/test/tarantool-tests/c-library-path-length.test.lua > @@ -11,4 +11,4 @@ local res, err = package.loadlib(long_path, 'func') > test:ok(res == nil, 'loaded library with a too large path') > test:like(err, 'path too long', 'incorrect error') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/fix-bit-shift-generation.test.lua b/test/tarantool-tests/fix-bit-shift-generation.test.lua > index d8e8a9b4..9704f32c 100644 > --- a/test/tarantool-tests/fix-bit-shift-generation.test.lua > +++ b/test/tarantool-tests/fix-bit-shift-generation.test.lua > @@ -44,4 +44,4 @@ for i = 1, NTESTS do > test:ok(result[i] == shl(1ULL, i + 32), 'valid rol') > end > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/fix-cdata-concat.test.lua b/test/tarantool-tests/fix-cdata-concat.test.lua > index df069e58..2ea37b02 100644 > --- a/test/tarantool-tests/fix-cdata-concat.test.lua > +++ b/test/tarantool-tests/fix-cdata-concat.test.lua > @@ -18,4 +18,4 @@ debug.getmetatable(1LL).__concat = function(a, b) > end > test:ok(1LL .. 2LL == '1LL2LL', 'cdata concatenation with defined metamethod') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/fix-emit-rma.test.lua b/test/tarantool-tests/fix-emit-rma.test.lua > index 1f8e66f4..42804447 100644 > --- a/test/tarantool-tests/fix-emit-rma.test.lua > +++ b/test/tarantool-tests/fix-emit-rma.test.lua > @@ -101,4 +101,4 @@ end > -- trace. > test:ok(true, 'IR_OBAR emit_rma check correctness') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/fix-fold-simplify-conv-sext.test.lua b/test/tarantool-tests/fix-fold-simplify-conv-sext.test.lua > index 60eb3e7c..d5356816 100644 > --- a/test/tarantool-tests/fix-fold-simplify-conv-sext.test.lua > +++ b/test/tarantool-tests/fix-fold-simplify-conv-sext.test.lua > @@ -32,4 +32,4 @@ for i = 1, NTEST do > test:ok(results[i] == expected[i], 'correct cdata indexing') > end > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/fix-gc-setupvalue.test.lua b/test/tarantool-tests/fix-gc-setupvalue.test.lua > index 21acc9bf..6b57283f 100644 > --- a/test/tarantool-tests/fix-gc-setupvalue.test.lua > +++ b/test/tarantool-tests/fix-gc-setupvalue.test.lua > @@ -58,4 +58,4 @@ for i = 1, 1e2 do local _ = {string.rep('0', i)} end > > test:ok(_G.parent() == 42, 'correct set up of upvalue') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/fix-slot-check-for-mm-record.test.lua b/test/tarantool-tests/fix-slot-check-for-mm-record.test.lua > index 6161747f..602426ac 100644 > --- a/test/tarantool-tests/fix-slot-check-for-mm-record.test.lua > +++ b/test/tarantool-tests/fix-slot-check-for-mm-record.test.lua > @@ -79,4 +79,4 @@ end > jit.opt.start('hotloop=1', 'maxrecord=2048') > > test:ok(try(require('ffi').abi('gc64'))) > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-3196-incorrect-string-length.test.lua b/test/tarantool-tests/gh-3196-incorrect-string-length.test.lua > index 0342c832..b82029f6 100644 > --- a/test/tarantool-tests/gh-3196-incorrect-string-length.test.lua > +++ b/test/tarantool-tests/gh-3196-incorrect-string-length.test.lua > @@ -12,4 +12,4 @@ test:is(h:len(), 20) > h = "\x0F\x93\xE2\x1C\xCA\xDE\x28\x08\x26\x01\xED\x0A\x2F\xE4\x21\x02\x97\x77\xD9\x3E" > test:is(h:len(), 20) > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-4199-gc64-fuse.test.lua b/test/tarantool-tests/gh-4199-gc64-fuse.test.lua > index 4513d43b..ca050cf0 100644 > --- a/test/tarantool-tests/gh-4199-gc64-fuse.test.lua > +++ b/test/tarantool-tests/gh-4199-gc64-fuse.test.lua > @@ -83,4 +83,4 @@ for n = 1, 100 do > end > > test:ok(ok, 'IR constant fusion') > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua b/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua > index 677a6085..34139d86 100644 > --- a/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua > +++ b/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua > @@ -59,4 +59,4 @@ for _, subtest in pairs(cases) do > test[subtest.test](test, output, subtest.expected, subtest.message) > end > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-4476-fix-string-find-recording.test.lua b/test/tarantool-tests/gh-4476-fix-string-find-recording.test.lua > index 56776192..c4acdd3d 100644 > --- a/test/tarantool-tests/gh-4476-fix-string-find-recording.test.lua > +++ b/test/tarantool-tests/gh-4476-fix-string-find-recording.test.lua > @@ -76,4 +76,4 @@ until not e > > test:is(count_vm, count_jit) > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-4773-tonumber-fail-on-NUL-char.test.lua b/test/tarantool-tests/gh-4773-tonumber-fail-on-NUL-char.test.lua > index 112c491e..7bacc0f9 100644 > --- a/test/tarantool-tests/gh-4773-tonumber-fail-on-NUL-char.test.lua > +++ b/test/tarantool-tests/gh-4773-tonumber-fail-on-NUL-char.test.lua > @@ -19,4 +19,4 @@ test:is(tonumber(t.zero), 0) > test:is(tonumber(t.zero .. t.tail), nil) > test:is(tonumber(t.zero .. t.null .. t.tail), nil) > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-5813-resolving-of-c-symbols.test.lua b/test/tarantool-tests/gh-5813-resolving-of-c-symbols.test.lua > index 1209d288..30b8a3ca 100644 > --- a/test/tarantool-tests/gh-5813-resolving-of-c-symbols.test.lua > +++ b/test/tarantool-tests/gh-5813-resolving-of-c-symbols.test.lua > @@ -95,4 +95,4 @@ test:ok(tree_contains(symbols.cfunc, "allocate_string")) > -- perform a test in that case, since it is impossible to load Lua module > -- written in C if it doesn't have a .dynsym segment. > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-6065-jit-library-smoke-tests.test.lua b/test/tarantool-tests/gh-6065-jit-library-smoke-tests.test.lua > index 5d7fd7e2..8105c3ba 100644 > --- a/test/tarantool-tests/gh-6065-jit-library-smoke-tests.test.lua > +++ b/test/tarantool-tests/gh-6065-jit-library-smoke-tests.test.lua > @@ -10,4 +10,4 @@ test:plan(1) > -- as a second argument to the assertion. > test:ok(pcall(jit.on)) > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-6084-missed-carg1-in-bctsetr-fallback.test.lua b/test/tarantool-tests/gh-6084-missed-carg1-in-bctsetr-fallback.test.lua > index 10db7603..5cc9416a 100644 > --- a/test/tarantool-tests/gh-6084-missed-carg1-in-bctsetr-fallback.test.lua > +++ b/test/tarantool-tests/gh-6084-missed-carg1-in-bctsetr-fallback.test.lua > @@ -24,4 +24,4 @@ local res = table.move(t, 1, 1, 2) > test:ok(t == res, 'table.move returns the same table') > test:ok(t[1] == t[2], 'table.move is correct') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-6096-external-unwinding-on-arm64.test.lua b/test/tarantool-tests/gh-6096-external-unwinding-on-arm64.test.lua > index cdeea441..097e771c 100644 > --- a/test/tarantool-tests/gh-6096-external-unwinding-on-arm64.test.lua > +++ b/test/tarantool-tests/gh-6096-external-unwinding-on-arm64.test.lua > @@ -10,4 +10,4 @@ test:plan(1) > local res = pcall(require, 'not-existing-module') > test:ok(res == false, 'successful unwinding in pcall') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-6098-fix-side-exit-patching-on-arm64.test.lua b/test/tarantool-tests/gh-6098-fix-side-exit-patching-on-arm64.test.lua > index cfcc6adb..93db3041 100644 > --- a/test/tarantool-tests/gh-6098-fix-side-exit-patching-on-arm64.test.lua > +++ b/test/tarantool-tests/gh-6098-fix-side-exit-patching-on-arm64.test.lua > @@ -129,4 +129,4 @@ pxcall(cbool, false) > cbool(false) > > test:ok(true) > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-6163-min-max.test.lua b/test/tarantool-tests/gh-6163-min-max.test.lua > index 882cb1a0..63437955 100644 > --- a/test/tarantool-tests/gh-6163-min-max.test.lua > +++ b/test/tarantool-tests/gh-6163-min-max.test.lua > @@ -262,4 +262,4 @@ end > -- expected: 1.1 1.1 1.1 1.1 > test:ok(array_is_consistent(result), 'max: fold_kfold_numarith') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-6189-cur_L.test.lua b/test/tarantool-tests/gh-6189-cur_L.test.lua > index a5096a7c..d6b8eef0 100644 > --- a/test/tarantool-tests/gh-6189-cur_L.test.lua > +++ b/test/tarantool-tests/gh-6189-cur_L.test.lua > @@ -28,4 +28,4 @@ assert(pcall(libcur_L.error_from_other_thread) == false, "return from error") > cbool(false) > > test:ok(true) > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-6227-bytecode-allocator-for-comparisons.test.lua b/test/tarantool-tests/gh-6227-bytecode-allocator-for-comparisons.test.lua > index da399bcf..07152744 100644 > --- a/test/tarantool-tests/gh-6227-bytecode-allocator-for-comparisons.test.lua > +++ b/test/tarantool-tests/gh-6227-bytecode-allocator-for-comparisons.test.lua > @@ -54,4 +54,4 @@ for _ = 1, 3 do > end > > test:ok(true) > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-6371-string-char-no-arg.test.lua b/test/tarantool-tests/gh-6371-string-char-no-arg.test.lua > index 90121860..48a5857d 100644 > --- a/test/tarantool-tests/gh-6371-string-char-no-arg.test.lua > +++ b/test/tarantool-tests/gh-6371-string-char-no-arg.test.lua > @@ -27,4 +27,4 @@ for i = 1, NTEST do > test:ok(results[i] == '', 'correct recording of string.char() without args') > end > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-6782-stitching-in-vmevent-handler.test.lua b/test/tarantool-tests/gh-6782-stitching-in-vmevent-handler.test.lua > index 385e7648..afca6c40 100644 > --- a/test/tarantool-tests/gh-6782-stitching-in-vmevent-handler.test.lua > +++ b/test/tarantool-tests/gh-6782-stitching-in-vmevent-handler.test.lua > @@ -32,4 +32,4 @@ require('jit.bc').dump(loadstring(string.dump(fibb)), { > -- `jit.bc` functions inside. > test:ok(fibb(2) == 1, 'run compiled function inside vmevent handler') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-6976-narrowing-of-unary-minus.test.lua b/test/tarantool-tests/gh-6976-narrowing-of-unary-minus.test.lua > index 40387cca..31890965 100644 > --- a/test/tarantool-tests/gh-6976-narrowing-of-unary-minus.test.lua > +++ b/test/tarantool-tests/gh-6976-narrowing-of-unary-minus.test.lua > @@ -48,4 +48,4 @@ test:ok(check(function() > return res > end), 'assertion guard fail') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-7264-add-proto-trace-sysprof-default.test.lua b/test/tarantool-tests/gh-7264-add-proto-trace-sysprof-default.test.lua > index 9cce32cb..c1d68e3c 100644 > --- a/test/tarantool-tests/gh-7264-add-proto-trace-sysprof-default.test.lua > +++ b/test/tarantool-tests/gh-7264-add-proto-trace-sysprof-default.test.lua > @@ -44,4 +44,4 @@ assert(misc.sysprof.start({ mode = 'D' })) > allocate() > test:ok(misc.sysprof.stop(), 'trace record in sysprof runtime') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/gh-7745-oom-on-trace.test.lua b/test/tarantool-tests/gh-7745-oom-on-trace.test.lua > index 81be445d..9ac41ac7 100644 > --- a/test/tarantool-tests/gh-7745-oom-on-trace.test.lua > +++ b/test/tarantool-tests/gh-7745-oom-on-trace.test.lua > @@ -38,4 +38,4 @@ collectgarbage() > > test:ok(res == false) > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-350-sload-typecheck.test.lua b/test/tarantool-tests/lj-350-sload-typecheck.test.lua > index 5b25864d..33380170 100644 > --- a/test/tarantool-tests/lj-350-sload-typecheck.test.lua > +++ b/test/tarantool-tests/lj-350-sload-typecheck.test.lua > @@ -41,4 +41,4 @@ jit.off() > > test:ok(not traceinfo(2), 'the second trace should not be compiled') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-351-print-tostring-number.test.lua b/test/tarantool-tests/lj-351-print-tostring-number.test.lua > index b7041f2a..c67c6859 100644 > --- a/test/tarantool-tests/lj-351-print-tostring-number.test.lua > +++ b/test/tarantool-tests/lj-351-print-tostring-number.test.lua > @@ -26,4 +26,4 @@ for _, subtest in pairs(cases) do > ('subtest is OK for %s type'):format(subtest.typename)) > end > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-356-ir-khash-non-string-obj.test.lua b/test/tarantool-tests/lj-356-ir-khash-non-string-obj.test.lua > index 9977205d..5159ac32 100644 > --- a/test/tarantool-tests/lj-356-ir-khash-non-string-obj.test.lua > +++ b/test/tarantool-tests/lj-356-ir-khash-non-string-obj.test.lua > @@ -90,4 +90,4 @@ for i = 1, N_ITERATIONS do > test:ok(result_tab[i] == MAGIC, 'correct hash lookup from the table') > end > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-357-arm64-hrefk.test.lua b/test/tarantool-tests/lj-357-arm64-hrefk.test.lua > index d7e9c85e..8db8bbfc 100644 > --- a/test/tarantool-tests/lj-357-arm64-hrefk.test.lua > +++ b/test/tarantool-tests/lj-357-arm64-hrefk.test.lua > @@ -29,4 +29,4 @@ end > test:is(t.hrefk, -START) > test:is(t[t.hrefk], STOP) > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-366-strtab-correct-size.test.lua b/test/tarantool-tests/lj-366-strtab-correct-size.test.lua > index aa4e72e7..8a97a441 100644 > --- a/test/tarantool-tests/lj-366-strtab-correct-size.test.lua > +++ b/test/tarantool-tests/lj-366-strtab-correct-size.test.lua > @@ -202,4 +202,4 @@ test:ok(sym_is_found == true, 'symbol is found') > local ret = os.remove(elf_filename) > assert(ret == true, 'cannot remove an object file') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-375-ir-bufput-signed-char.test.lua b/test/tarantool-tests/lj-375-ir-bufput-signed-char.test.lua > index f600d898..9f913eba 100644 > --- a/test/tarantool-tests/lj-375-ir-bufput-signed-char.test.lua > +++ b/test/tarantool-tests/lj-375-ir-bufput-signed-char.test.lua > @@ -29,4 +29,4 @@ for i = 1, NTEST do > test:ok(results[i] == 0xff, 'correct 0xff signed char assembling') > end > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-378-string-format-c-null-char.test.lua b/test/tarantool-tests/lj-378-string-format-c-null-char.test.lua > index 15cefadf..7632c7fd 100644 > --- a/test/tarantool-tests/lj-378-string-format-c-null-char.test.lua > +++ b/test/tarantool-tests/lj-378-string-format-c-null-char.test.lua > @@ -8,4 +8,4 @@ test:plan(1) > -- See also https://github.com/LuaJIT/LuaJIT/issues/378. > > test:is(string.format('%c', 0), '\0', 'string.format %c on null char') > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-408-tonumber-cdata-record.test.lua b/test/tarantool-tests/lj-408-tonumber-cdata-record.test.lua > index bdd0aaaa..3a7e1f28 100644 > --- a/test/tarantool-tests/lj-408-tonumber-cdata-record.test.lua > +++ b/test/tarantool-tests/lj-408-tonumber-cdata-record.test.lua > @@ -41,4 +41,4 @@ check(0LL) > test:ok(check(0LL), 'recorded with 0LL and converted for 0LL') > test:ok(not check(NULL), 'recorded with 0LL and not converted for NULL') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-416-xor-before-jcc.test.lua b/test/tarantool-tests/lj-416-xor-before-jcc.test.lua > index 861114e8..605bb92a 100644 > --- a/test/tarantool-tests/lj-416-xor-before-jcc.test.lua > +++ b/test/tarantool-tests/lj-416-xor-before-jcc.test.lua > @@ -97,4 +97,4 @@ for _ = 1, 3 do > end > test:ok(true, 'impossible branch is not taken') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-418-assert-any-type.test.lua b/test/tarantool-tests/lj-418-assert-any-type.test.lua > index 24683554..51b21ed8 100644 > --- a/test/tarantool-tests/lj-418-assert-any-type.test.lua > +++ b/test/tarantool-tests/lj-418-assert-any-type.test.lua > @@ -15,4 +15,4 @@ xpcall(assert, function(obj) > test:ok(obj == retv, 'xpcall error handler function get non-string argument') > end, false, retv) > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-426-arm64-incorrect-check-closed-uv.test.lua b/test/tarantool-tests/lj-426-arm64-incorrect-check-closed-uv.test.lua > index 4cdf1211..a689ed60 100644 > --- a/test/tarantool-tests/lj-426-arm64-incorrect-check-closed-uv.test.lua > +++ b/test/tarantool-tests/lj-426-arm64-incorrect-check-closed-uv.test.lua > @@ -36,4 +36,4 @@ while (misc.getmetrics().gc_steps_atomic == old_steps_atomic) do > end > > test:ok(true) > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-430-maxirconst.test.lua b/test/tarantool-tests/lj-430-maxirconst.test.lua > index 531acd7d..903fad8e 100644 > --- a/test/tarantool-tests/lj-430-maxirconst.test.lua > +++ b/test/tarantool-tests/lj-430-maxirconst.test.lua > @@ -44,4 +44,4 @@ irconst4() > jit.off() > test:ok(not traceinfo(2), 'trace should not appear due to maxirconst limit') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-438-arm64-constant-rematerialization.test.lua b/test/tarantool-tests/lj-438-arm64-constant-rematerialization.test.lua > index 0a59209c..9886fe09 100644 > --- a/test/tarantool-tests/lj-438-arm64-constant-rematerialization.test.lua > +++ b/test/tarantool-tests/lj-438-arm64-constant-rematerialization.test.lua > @@ -102,4 +102,4 @@ wrap() > > test:ok(true, 'the resulting trace is correct') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-445-fix-memory-probing-allocator.test.lua b/test/tarantool-tests/lj-445-fix-memory-probing-allocator.test.lua > index a228651b..da924bb0 100644 > --- a/test/tarantool-tests/lj-445-fix-memory-probing-allocator.test.lua > +++ b/test/tarantool-tests/lj-445-fix-memory-probing-allocator.test.lua > @@ -47,4 +47,4 @@ for _ = 1, MAX_GB do > end > end > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-463-os-date-oom.test.lua b/test/tarantool-tests/lj-463-os-date-oom.test.lua > index 0861ce14..e431d19d 100644 > --- a/test/tarantool-tests/lj-463-os-date-oom.test.lua > +++ b/test/tarantool-tests/lj-463-os-date-oom.test.lua > @@ -14,4 +14,4 @@ end > > test:ok(true, 'os.date() finished without OOM') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-494-table-chain-infinite-loop.test.lua b/test/tarantool-tests/lj-494-table-chain-infinite-loop.test.lua > index aae90e8a..3dd17e7a 100644 > --- a/test/tarantool-tests/lj-494-table-chain-infinite-loop.test.lua > +++ b/test/tarantool-tests/lj-494-table-chain-infinite-loop.test.lua > @@ -174,4 +174,4 @@ for c, v in pairs(victims) do > end > test:ok(true, "table keys collisions are resolved properly (no assertions failed)") > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-505-fold-no-strref-for-ptrdiff.test.lua b/test/tarantool-tests/lj-505-fold-no-strref-for-ptrdiff.test.lua > index fec08b30..a40e7796 100644 > --- a/test/tarantool-tests/lj-505-fold-no-strref-for-ptrdiff.test.lua > +++ b/test/tarantool-tests/lj-505-fold-no-strref-for-ptrdiff.test.lua > @@ -18,4 +18,4 @@ for _ = 1, 20 do > end > test:ok(true, "string.find offset aritmetics wasn't broken while recording") > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-512-profiler-hook-finalizers.test.lua b/test/tarantool-tests/lj-512-profiler-hook-finalizers.test.lua > index f7ee344f..a282a10f 100644 > --- a/test/tarantool-tests/lj-512-profiler-hook-finalizers.test.lua > +++ b/test/tarantool-tests/lj-512-profiler-hook-finalizers.test.lua > @@ -28,4 +28,4 @@ profile.stop() > test:ok(nsamples >= 0.5 * (finish - start) * 1e3 / INTERVAL, > 'profiler sampling') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-524-fold-conv-respect-src-irt.test.lua b/test/tarantool-tests/lj-524-fold-conv-respect-src-irt.test.lua > index a13e5d55..70d330ac 100644 > --- a/test/tarantool-tests/lj-524-fold-conv-respect-src-irt.test.lua > +++ b/test/tarantool-tests/lj-524-fold-conv-respect-src-irt.test.lua > @@ -21,4 +21,4 @@ end > > test:is(tonumber(sq), math.fmod(math.pow(42, 8), math.pow(2, 32))) > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-528-tonumber-0.test.lua b/test/tarantool-tests/lj-528-tonumber-0.test.lua > index 27f17e54..8b4c0832 100644 > --- a/test/tarantool-tests/lj-528-tonumber-0.test.lua > +++ b/test/tarantool-tests/lj-528-tonumber-0.test.lua > @@ -10,4 +10,4 @@ test:plan(1) > -- As numbers -0 equals to 0, so convert it back to string. > test:ok(tostring(tonumber('-0')) == '-0', 'correct "-0" string parsing') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-556-fix-loop-realignment.test.lua b/test/tarantool-tests/lj-556-fix-loop-realignment.test.lua > index b94bd3e9..89f70693 100644 > --- a/test/tarantool-tests/lj-556-fix-loop-realignment.test.lua > +++ b/test/tarantool-tests/lj-556-fix-loop-realignment.test.lua > @@ -17,4 +17,4 @@ while s > 0 do > end > > test:ok(true, 'loop is compiled and ran successfully') > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-574-overflow-unpack.test.lua b/test/tarantool-tests/lj-574-overflow-unpack.test.lua > index 6715d947..671ccddd 100644 > --- a/test/tarantool-tests/lj-574-overflow-unpack.test.lua > +++ b/test/tarantool-tests/lj-574-overflow-unpack.test.lua > @@ -9,4 +9,4 @@ test:plan(1) > local r, e = pcall(unpack, {}, 0, 2^31 - 1) > test:ok(not r and e == 'too many results to unpack', 'overflow check in unpack') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-584-bad-renames-for-sunk-values.test.lua b/test/tarantool-tests/lj-584-bad-renames-for-sunk-values.test.lua > index e0c3e577..cb0623b1 100644 > --- a/test/tarantool-tests/lj-584-bad-renames-for-sunk-values.test.lua > +++ b/test/tarantool-tests/lj-584-bad-renames-for-sunk-values.test.lua > @@ -96,4 +96,4 @@ end, function() > test:fail('Invalid Lua stack has been restored') > end) > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-586-debug-non-string-error.test.lua b/test/tarantool-tests/lj-586-debug-non-string-error.test.lua > index c00301a1..67869708 100644 > --- a/test/tarantool-tests/lj-586-debug-non-string-error.test.lua > +++ b/test/tarantool-tests/lj-586-debug-non-string-error.test.lua > @@ -44,4 +44,4 @@ EOF]]):format(luabin, magic) > > local res = io.popen(cmd):read('*all'):gsub('%s+$', '') > test:ok(res == expected, 'handle non-string error in debug.debug()') > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-601-fix-gc-finderrfunc.test.lua b/test/tarantool-tests/lj-601-fix-gc-finderrfunc.test.lua > index 2122c7a0..1549257d 100644 > --- a/test/tarantool-tests/lj-601-fix-gc-finderrfunc.test.lua > +++ b/test/tarantool-tests/lj-601-fix-gc-finderrfunc.test.lua > @@ -35,4 +35,4 @@ a = nil > -- frame. As a result, error is raised in __gc metamethod above. > test:ok(mixcframe.test_handle_err(), 'error in __gc is successfully handled') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-603-err-snap-restore.test.lua b/test/tarantool-tests/lj-603-err-snap-restore.test.lua > index a6c831ed..791107ba 100644 > --- a/test/tarantool-tests/lj-603-err-snap-restore.test.lua > +++ b/test/tarantool-tests/lj-603-err-snap-restore.test.lua > @@ -55,16 +55,17 @@ end > -- restoration from the snapshot. > if require('ffi').abi('gc64') then > -- luacheck: no unused > - local _, _, _, _, _, _ > + local _, _, _, _, _ > do_test() > else > -- luacheck: no unused > - local _, _, _, _ > + local _, _, _, _, _, _, _, _, _, _, _, _, _ > do_test() > end > > --- XXX: Don't use `os.exit()` here by intention. When error on > --- snap restoration is raised, `err_unwind()` doesn't stop on > --- correct cframe. So later, on exit from VM this corrupted cframe > --- chain shows itself. `os.exit()` literally calls `exit()` and > --- doesn't show the issue. > +-- XXX: Don't force `test:done()` finish test with `os.exit()` by > +-- intention. When error on snapshot restoration is raised, > +-- `err_unwind()` doesn't stop on the correct cframe. So later, on > +-- exit from VM this corrupted cframe chain shows itself. > +-- `os.exit()` just calls `exit()` and doesn't show the issue. > +test:done(false) > diff --git a/test/tarantool-tests/lj-671-arm64-assert-after-mremap.test.lua b/test/tarantool-tests/lj-671-arm64-assert-after-mremap.test.lua > index 0558cbe3..74ade1db 100644 > --- a/test/tarantool-tests/lj-671-arm64-assert-after-mremap.test.lua > +++ b/test/tarantool-tests/lj-671-arm64-assert-after-mremap.test.lua > @@ -21,4 +21,4 @@ local DEFAULT_MMAP_THRESHOLD = 128 * 1024 > local s = string.rep('x', DEFAULT_MMAP_THRESHOLD)..'x' > test:ok(s) > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-672-cdata-allocation-recording.test.lua b/test/tarantool-tests/lj-672-cdata-allocation-recording.test.lua > index 1d6b19ba..22deac5d 100644 > --- a/test/tarantool-tests/lj-672-cdata-allocation-recording.test.lua > +++ b/test/tarantool-tests/lj-672-cdata-allocation-recording.test.lua > @@ -28,4 +28,4 @@ end > > test:ok(traceinfo(1), 'new trace created') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-688-snap-ir-rename.test.lua b/test/tarantool-tests/lj-688-snap-ir-rename.test.lua > index 46bddd9f..807e0811 100644 > --- a/test/tarantool-tests/lj-688-snap-ir-rename.test.lua > +++ b/test/tarantool-tests/lj-688-snap-ir-rename.test.lua > @@ -57,4 +57,4 @@ end > test:ok(true, 'IR_RENAME is fine') > -- `test:check() and 0 or 1` is replaced with just test:check() > -- here, because otherwise, it affects the renaming process. > -os.exit(test:check()) > +test:done(true) > diff --git a/test/tarantool-tests/lj-695-ffi-vararg-call.test.lua b/test/tarantool-tests/lj-695-ffi-vararg-call.test.lua > index 04be1998..496a4c0d 100644 > --- a/test/tarantool-tests/lj-695-ffi-vararg-call.test.lua > +++ b/test/tarantool-tests/lj-695-ffi-vararg-call.test.lua > @@ -13,4 +13,4 @@ local result = ffi.string(str) > test:is(#result, strlen) > test:is(result, 'try vararg function: imun:9.00(9) - 18446744073709551615') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-698-arm-pcall-panic.test.lua b/test/tarantool-tests/lj-698-arm-pcall-panic.test.lua > index 88476d3e..5f9d193a 100644 > --- a/test/tarantool-tests/lj-698-arm-pcall-panic.test.lua > +++ b/test/tarantool-tests/lj-698-arm-pcall-panic.test.lua > @@ -15,4 +15,4 @@ local runner = ffi.cast("int (*)(int, int, int, int, int, int, int, int, int)", > local st = pcall(runner, 1, 1, 1, 1, 1, 1, 1, 1, 1) > test:ok(not st, 'error handling completed correctly') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-704-bc-varg-use-def.test.lua b/test/tarantool-tests/lj-704-bc-varg-use-def.test.lua > index e6a0973b..93455e3c 100644 > --- a/test/tarantool-tests/lj-704-bc-varg-use-def.test.lua > +++ b/test/tarantool-tests/lj-704-bc-varg-use-def.test.lua > @@ -90,4 +90,4 @@ wrap_ret_bc(ON_TRACE_VALUE) > > test:ok(result ~= 0, 'use-def analysis for FUNCV with jump before BC_VARG') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-726-profile-flush-close.test.lua b/test/tarantool-tests/lj-726-profile-flush-close.test.lua > index a3f8def9..36cca43d 100644 > --- a/test/tarantool-tests/lj-726-profile-flush-close.test.lua > +++ b/test/tarantool-tests/lj-726-profile-flush-close.test.lua > @@ -26,4 +26,4 @@ test:ok(f:read(0), 'profile output was flushed and closed') > > assert(os.remove(TEST_FILE)) > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-727-lightuserdata-itern.test.lua b/test/tarantool-tests/lj-727-lightuserdata-itern.test.lua > index 3e459f43..bb01f122 100644 > --- a/test/tarantool-tests/lj-727-lightuserdata-itern.test.lua > +++ b/test/tarantool-tests/lj-727-lightuserdata-itern.test.lua > @@ -42,4 +42,4 @@ end) > test.strict = true > test:is_deeply(visited, t, 'userdata node is visited') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-735-io-close-on-closed-file.test.lua b/test/tarantool-tests/lj-735-io-close-on-closed-file.test.lua > index 2a590df0..a23aa0d4 100644 > --- a/test/tarantool-tests/lj-735-io-close-on-closed-file.test.lua > +++ b/test/tarantool-tests/lj-735-io-close-on-closed-file.test.lua > @@ -21,4 +21,4 @@ test:ok(err:match('attempt to use a closed file'), 'correct error message') > > assert(os.remove(TEST_FILE)) > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-762-pcall-no-arg.test.lua b/test/tarantool-tests/lj-762-pcall-no-arg.test.lua > index 6cbfe707..db16c3dd 100644 > --- a/test/tarantool-tests/lj-762-pcall-no-arg.test.lua > +++ b/test/tarantool-tests/lj-762-pcall-no-arg.test.lua > @@ -12,4 +12,4 @@ local result, err = pcall(pcall) > test:ok(not result, 'pcall() without args: bad status') > test:like(err, 'value expected', 'pcall() without args: error message') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-819-fix-missing-uclo.test.lua b/test/tarantool-tests/lj-819-fix-missing-uclo.test.lua > index 942c22b2..e2352c92 100644 > --- a/test/tarantool-tests/lj-819-fix-missing-uclo.test.lua > +++ b/test/tarantool-tests/lj-819-fix-missing-uclo.test.lua > @@ -112,4 +112,4 @@ local _ > _, res = pcall(f) > test:ok(type(res) == 'function', 'consistency on compilation: type of returned value is correct') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-864-varg-rec-base-offset.test.lua b/test/tarantool-tests/lj-864-varg-rec-base-offset.test.lua > index d41e33ff..02864e44 100644 > --- a/test/tarantool-tests/lj-864-varg-rec-base-offset.test.lua > +++ b/test/tarantool-tests/lj-864-varg-rec-base-offset.test.lua > @@ -24,4 +24,4 @@ end > -- due to failing assertion guard for type of loaded vararg slot. > test:ok(test_rec_varg(42, 0), 'correct BC_VARG recording') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-906-fix-err-mem.test.lua b/test/tarantool-tests/lj-906-fix-err-mem.test.lua > index 6c6df338..7235e829 100644 > --- a/test/tarantool-tests/lj-906-fix-err-mem.test.lua > +++ b/test/tarantool-tests/lj-906-fix-err-mem.test.lua > @@ -100,4 +100,4 @@ collectgarbage() > > test:ok(true, 'correctly throw memory error') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-981-folding-0.test.lua b/test/tarantool-tests/lj-981-folding-0.test.lua > index d156f53d..608cb2cd 100644 > --- a/test/tarantool-tests/lj-981-folding-0.test.lua > +++ b/test/tarantool-tests/lj-981-folding-0.test.lua > @@ -60,4 +60,4 @@ test:ok(result == expected, 'TDUP and -0 folding') > -- Test that there is no NEWREF -0 IR. > test:ok(not traces[1]:has_ir('NEWREF.*-0'), '-0 is canonized for TDUP tab') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-994-instable-types-during-loop-unroll.test.lua b/test/tarantool-tests/lj-994-instable-types-during-loop-unroll.test.lua > index 78c04f21..730b0e61 100644 > --- a/test/tarantool-tests/lj-994-instable-types-during-loop-unroll.test.lua > +++ b/test/tarantool-tests/lj-994-instable-types-during-loop-unroll.test.lua > @@ -50,4 +50,4 @@ end > test:is(result, true, 'TDUP load forwarding was successful') > ]] > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/lj-flush-on-trace.test.lua b/test/tarantool-tests/lj-flush-on-trace.test.lua > index fe740087..a64fac4d 100644 > --- a/test/tarantool-tests/lj-flush-on-trace.test.lua > +++ b/test/tarantool-tests/lj-flush-on-trace.test.lua > @@ -59,4 +59,4 @@ for _, subtest in pairs(cases) do > test[subtest.test](test, output, subtest.expected, subtest.message) > end > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/math-modf.test.lua b/test/tarantool-tests/math-modf.test.lua > index d8421db9..20a3bb16 100644 > --- a/test/tarantool-tests/math-modf.test.lua > +++ b/test/tarantool-tests/math-modf.test.lua > @@ -32,3 +32,5 @@ for i = 1, 3 do > end > > test:ok(array_is_consistent(r1) and array_is_consistent(r2), 'wrong modf') > + > +test:done(true) > diff --git a/test/tarantool-tests/misclib-getmetrics-lapi.test.lua b/test/tarantool-tests/misclib-getmetrics-lapi.test.lua > index 0ee71499..741900b6 100644 > --- a/test/tarantool-tests/misclib-getmetrics-lapi.test.lua > +++ b/test/tarantool-tests/misclib-getmetrics-lapi.test.lua > @@ -430,4 +430,4 @@ test:test("tracenum-base", function(subtest) > subtest:is(metrics.jit_trace_num, 0) > end) > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/misclib-memprof-lapi.test.lua b/test/tarantool-tests/misclib-memprof-lapi.test.lua > index eae20893..3cb5c8be 100644 > --- a/test/tarantool-tests/misclib-memprof-lapi.test.lua > +++ b/test/tarantool-tests/misclib-memprof-lapi.test.lua > @@ -296,4 +296,4 @@ test:test("jit-output", function(subtest) > jit.opt.start(unpack(jit_opt_default)) > end) > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/misclib-sysprof-lapi.test.lua b/test/tarantool-tests/misclib-sysprof-lapi.test.lua > index 2f0635db..fdaed46a 100644 > --- a/test/tarantool-tests/misclib-sysprof-lapi.test.lua > +++ b/test/tarantool-tests/misclib-sysprof-lapi.test.lua > @@ -129,4 +129,4 @@ check_mode("C", 100) > > os.remove(TMP_BINFILE) > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/or-144-gc64-asmref-l.test.lua b/test/tarantool-tests/or-144-gc64-asmref-l.test.lua > index 0c352c29..18c6efb2 100644 > --- a/test/tarantool-tests/or-144-gc64-asmref-l.test.lua > +++ b/test/tarantool-tests/or-144-gc64-asmref-l.test.lua > @@ -25,4 +25,4 @@ end > > test:ok(global_env == getfenv(0), 'IR_LREF assembling correctness') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/or-232-unsink-64-kptr.test.lua b/test/tarantool-tests/or-232-unsink-64-kptr.test.lua > index fc8acaaf..4a0ece89 100644 > --- a/test/tarantool-tests/or-232-unsink-64-kptr.test.lua > +++ b/test/tarantool-tests/or-232-unsink-64-kptr.test.lua > @@ -41,4 +41,4 @@ for i = 1, 1000 do > end > test:ok(true, "allocation is unsunk at the trace exit (no platform failures)") > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/or-94-arm64-ir-ahuvload-bool.test.lua b/test/tarantool-tests/or-94-arm64-ir-ahuvload-bool.test.lua > index 5418a058..990a3989 100644 > --- a/test/tarantool-tests/or-94-arm64-ir-ahuvload-bool.test.lua > +++ b/test/tarantool-tests/or-94-arm64-ir-ahuvload-bool.test.lua > @@ -145,4 +145,4 @@ for i = 1, N_TESTS do > jit.flush() > end > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/tap.lua b/test/tarantool-tests/tap.lua > index 47a8fe87..8559ee52 100644 > --- a/test/tarantool-tests/tap.lua > +++ b/test/tarantool-tests/tap.lua > @@ -10,7 +10,7 @@ local NULL = ffi.new("void *") > local function finalize(test) > -- TODO: implement finalization for subtests too. > assert(test.parent == nil, 'FIXME: There is no way to use finalize subtest') > - os.exit(test:check() and 0 or 1) > + test:done(true) > end > > local function indent(level, size) > @@ -337,12 +337,24 @@ local function skipcond(test, conditions) > return test > end > > +local function done(test, exit) > + if exit then > + -- XXX: The second argument is required to properly close Lua > + -- universe (i.e. invoke before exiting). > + -- XXX: return is added explicitly to force CALLT emitting. > + return os.exit(test:check() and 0 or 1, true) > + else > + assert(test:check(), 'Test check failed') > + end > +end > + > test_mt = { > __index = { > test = new, > plan = plan, > check = check, > diag = diag, > + done = done, > ok = ok, > fail = fail, > skip = skip, > diff --git a/test/tarantool-tests/tonumber-negative-non-decimal-base.test.lua b/test/tarantool-tests/tonumber-negative-non-decimal-base.test.lua > index 94df3b1f..c7ac6b6f 100644 > --- a/test/tarantool-tests/tonumber-negative-non-decimal-base.test.lua > +++ b/test/tarantool-tests/tonumber-negative-non-decimal-base.test.lua > @@ -26,4 +26,4 @@ test:ok(tonumber('- 1010 ', 2) == nil, 'space between sign and value') > test:ok(tonumber('-_1010 ', 2) == nil, > 'invalid character between sign and value') > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/tools-utils-avl.test.lua b/test/tarantool-tests/tools-utils-avl.test.lua > index ebcfac2e..d7aa5011 100644 > --- a/test/tarantool-tests/tools-utils-avl.test.lua > +++ b/test/tarantool-tests/tools-utils-avl.test.lua > @@ -38,4 +38,4 @@ test:is(avl.floor(root, -10), nil) > -- Not exact upper bound. > test:is(avl.floor(root, 2.75), 2) > > -os.exit(test:check() and 0 or 1) > +test:done(true) > diff --git a/test/tarantool-tests/unit-jit-parse.test.lua b/test/tarantool-tests/unit-jit-parse.test.lua > index 24216e87..2e6a2228 100644 > --- a/test/tarantool-tests/unit-jit-parse.test.lua > +++ b/test/tarantool-tests/unit-jit-parse.test.lua > @@ -42,4 +42,4 @@ for irnum = 1, N_TESTS do > test:ok(irref, 'find IR refernce by pattern: ' .. ir_pattern) > end > > -os.exit(test:check() and 0 or 1) > +test:done(true)