[Tarantool-patches] [PATCH v2 luajit 13/30] test: disable PUC Lua test for tail call info

Sergey Kaplun skaplun at tarantool.org
Fri Mar 26 10:42:56 MSK 2021


LuaJIT does not provide information about tail calls in debug.getinfo(),
unlike Lua does. This missed feature is described in
https://luajit.org/status.html.

This patch disables tests for tail call checks and getfenv() checks,
because tail calls do not provide an additional level for LuaJIT
and level number given to getfenv() should be changed.

Relates to tarantool/tarantool#5702
Relates to tarantool/tarantool#5703
Part of tarantool/tarantool#5845
Part of tarantool/tarantool#4473
---
 test/PUC-Lua-5.1-tests/db.lua | 30 ++++++++++++++++++++++--------
 1 file changed, 22 insertions(+), 8 deletions(-)

diff --git a/test/PUC-Lua-5.1-tests/db.lua b/test/PUC-Lua-5.1-tests/db.lua
index c1a635a..b363abc 100644
--- a/test/PUC-Lua-5.1-tests/db.lua
+++ b/test/PUC-Lua-5.1-tests/db.lua
@@ -400,19 +400,29 @@ function g1(x) g(x) end
 
 local function h (x) local f=g1; return f(x) end
 
-h(true)
+-- LuaJIT does not provide information about tail calls,
+-- unlike Lua does. See also https://luajit.org/status.html.
+-- getfenv() behaviour is also different here,
+-- because tail calls do not provide additional level for LuaJIT
+-- and level number should be changed.
+-- FIXME: Test is disabled for LuaJIT.
+-- See also https://github.com/tarantool/tarantool/issues/5702.
+-- h(true)
 
 local b = {}
-debug.sethook(function (e) table.insert(b, e) end, "cr")
-h(false)
-debug.sethook()
+-- Behavior is different for LuaJIT. See the comment above.
+-- FIXME: Test is disabled for LuaJIT.
+-- debug.sethook(function (e) table.insert(b, e) end, "cr")
+-- h(false)
+-- debug.sethook()
 local res = {"return",   -- first return (from sethook)
   "call", "call", "call", "call",
   "return", "tail return", "return", "tail return",
   "call",    -- last call (to sethook)
 }
-for _, k in ipairs(res) do assert(k == table.remove(b, 1)) end
-
+-- Behavior is different for LuaJIT. See the comment above.
+-- FIXME: Test is disabled for LuaJIT.
+-- for _, k in ipairs(res) do assert(k == table.remove(b, 1)) end
 
 lim = 30000
 local function foo (x)
@@ -423,7 +433,9 @@ local function foo (x)
   end
 end
 
-foo(lim)
+-- Behavior is different for LuaJIT. See the comment above.
+-- FIXME: Test is disabled for LuaJIT.
+-- foo(lim)
 
 
 print"+"
@@ -459,7 +471,9 @@ end
 
 local co = coroutine.create(f)
 coroutine.resume(co, 3)
-checktraceback(co, {"yield", "db.lua", "tail", "tail", "tail"})
+-- Behavior is different for LuaJIT. See the comment to h() above.
+-- FIXME: Test is disabled for LuaJIT.
+-- checktraceback(co, {"yield", "db.lua", "tail", "tail", "tail"})
 
 
 co = coroutine.create(function (x)
-- 
2.31.0



More information about the Tarantool-patches mailing list