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 3E01753A8ED; Fri, 21 Jul 2023 11:24:59 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 3E01753A8ED DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1689927899; bh=Q01TScWwdCM2NNl2LkyZNvDhHwMDe/ZULDAxtnJHadI=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=s5KD0tiXY9bpOwG+b33XR5rUhtnaKvwadLM/muLHQWbc8YwG0mHnEWScScILtRGU9 xLQxomPZBZc+DrTFx/OnRG7XebAr3600VWy39WGlIRt9D71hv/NbexHXFSu/LjUMGS lGbhQjq2zCM8Lq17WMEX/XvmBNubu0h6ACjMu7lg= Received: from smtp33.i.mail.ru (smtp33.i.mail.ru [95.163.41.74]) (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 E0FEF53A8EF for ; Fri, 21 Jul 2023 11:23:28 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org E0FEF53A8EF Received: by smtp33.i.mail.ru with esmtpa (envelope-from ) id 1qMlQ7-007UVO-M1; Fri, 21 Jul 2023 11:23:28 +0300 To: Sergey Kaplun , Sergey Bronnikov Date: Fri, 21 Jul 2023 08:12:06 +0000 Message-Id: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailru-Src: smtp X-4EC0790: 10 X-7564579A: B8F34718100C35BD X-77F55803: 4F1203BC0FB41BD9227D43F3CB451B41EC079F463F492D22BD9C91F12D99EFE2182A05F538085040EE8FF1190F459A229BC78D7608676B6054869EC454FE43F0BC87646F6F246008 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE786614E11AFA257BFC2099A533E45F2D0395957E7521B51C2CFCAF695D4D8E9FCEA1F7E6F0F101C6778DA827A17800CE720D3C300AFAD22438F08D7030A58E5AD1A62830130A00468AEEEE3FBA3A834EE7353EFBB553375668FD7D7AE04D938931038D029BAC8938D0788EA283024D0E8A471835C12D1D9774AD6D5ED66289B5278DA827A17800CE7328B01A8D746D8839FA2833FD35BB23D2EF20D2F80756B5F868A13BD56FB6657A471835C12D1D977725E5C173C3A84C3EF0AF71940E62277117882F4460429728AD0CFFFB425014E868A13BD56FB6657D81D268191BDAD3DC09775C1D3CA48CFBD39A56654533F9176E601842F6C81A12EF20D2F80756B5FB606B96278B59C4276E601842F6C81A127C277FBC8AE2E8B5F0C88D684269EDED81D268191BDAD3D3666184CF4C3C14F3FC91FA280E0CE3D1A620F70A64A45A98AA50765F79006372E808ACE2090B5E1725E5C173C3A84C3C5EA940A35A165FF2DBA43225CD8A89F3695E42C86E34F97089D37D7C0E48F6C5571747095F342E88FB05168BE4CE3AF X-C1DE0DAB: 0D63561A33F958A5DF2573218B99E188F1FBBE4910BDE6B58C42A4831BFC11FDF87CCE6106E1FC07E67D4AC08A07B9B0B6FBD635917D924D9C5DF10A05D560A950611B66E3DA6D700B0A020F03D25A0997E3FB2386030E77 X-C8649E89: 1C3962B70DF3F0ADE00A9FD3E00BEEDF3FED46C3ACD6F73ED3581295AF09D3DF87807E0823442EA2ED31085941D9CD0AF7F820E7B07EA4CFFE0C22FBB3AECAB44DF0E111C9DF17F76E32ECF816AB135EE737E135037B6DFB1EB2640544212C897A512D943FCE53BF2C6F8B5AE035463C6D73E56FC39C6AA9A74DFFEFA5DC0E7F02C26D483E81D6BEECAEF3E2CCC1ED8C383653B6C8D9AE0FD16FCAA6493B703A X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5ycPtXkTV4k65bRjmOUUP8cvGozZ33TWg5HZplvhhXbhDGzqmQDTd6OAevLeAnq3Ra9uf7zvY2zzsIhlcp/Y7m53TZgf2aB4JOg4gkr2biojhjdY/2lpWUJEfbkpZz/7jg== X-Mailru-Sender: 2FEBA92C8E508479FE7B9A1DF348D5312354B6DF3EEE8F140DCA94F66C533A0AAD49838AFA339EA02326FE6F2A341ACE0FB9F97486540B4CD9E8847AB8CFED4D9ABF8A61C016C2CFB0DAF586E7D11B3E67EA787935ED9F1B X-Mras: Ok Subject: [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: Igor Munkin via Tarantool-patches Reply-To: Igor Munkin Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" 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) -- 2.30.2