[Tarantool-patches] [PATCH v2 luajit 03/30] test: adapt Lua 5.1 suite for out-of-source build
Sergey Kaplun
skaplun at tarantool.org
Fri Mar 26 10:42:46 MSK 2021
When tests are run out-of-source redefined `dofile()` function
failed to find file to load. So, fullpath is detected considering
`arg[0]` value. Moreover, some tests use `loadfile()` instead, so
their argument is adjusted to the full path to the files.
However, test in <verybig.lua> creates a temporary file
and executes it via `dofile()` too, so this case is handled by
the second argument -- `prefix` equals an empty string for
current working directory.
Part of tarantool/tarantool#5845
Part of tarantool/tarantool#4473
---
test/PUC-Lua-5.1-tests/all.lua | 17 +++++++++++++----
test/PUC-Lua-5.1-tests/verybig.lua | 4 +++-
2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/test/PUC-Lua-5.1-tests/all.lua b/test/PUC-Lua-5.1-tests/all.lua
index 8c4afac..85beff8 100755
--- a/test/PUC-Lua-5.1-tests/all.lua
+++ b/test/PUC-Lua-5.1-tests/all.lua
@@ -58,9 +58,18 @@ end
--
-- redefine dofile to run files through dump/undump
--
-dofile = function (n)
+-- LuaJIT: Adapt tests for testing with out-of-source build.
+-- XXX: Test in <verybig.lua> creates a temporary file
+-- and executes it via `dofile()` too, so this case is handled by
+-- the second argument -- `prefix` equals an empty string for
+-- current working directory.
+-- <all.lua> is in the same directory, where are other common
+-- executed files situated.
+local path_to_sources = arg[0]:gsub('([^/]+)%.lua$', '')
+dofile = function (n, prefix)
+ local pr = prefix or path_to_sources
showmem()
- local f = assert(loadfile(n))
+ local f = assert(loadfile(pr..n))
local b = string.dump(f)
f = assert(loadstring(b))
return f()
@@ -77,7 +86,7 @@ do
end
end
-local f = assert(loadfile('gc.lua'))
+local f = assert(loadfile(path_to_sources..'gc.lua'))
f()
dofile('db.lua')
assert(dofile('calls.lua') == deep and deep)
@@ -88,7 +97,7 @@ assert(dofile('locals.lua') == 5)
dofile('constructs.lua')
dofile('code.lua')
do
- local f = coroutine.wrap(assert(loadfile('big.lua')))
+ local f = coroutine.wrap(assert(loadfile(path_to_sources..'big.lua')))
assert(f() == 'b')
assert(f() == 'a')
end
diff --git a/test/PUC-Lua-5.1-tests/verybig.lua b/test/PUC-Lua-5.1-tests/verybig.lua
index 59e0142..edb170d 100644
--- a/test/PUC-Lua-5.1-tests/verybig.lua
+++ b/test/PUC-Lua-5.1-tests/verybig.lua
@@ -93,7 +93,9 @@ for s in string.gmatch(prog, "$([^$]+)") do
if not n then io.write(s) else F[n]() end
end
io.close()
-result = dofile(file)
+-- LuaJIT: Adapt test for testing with out-of-source build.
+-- See comment in <all.lua> near `dofile()` redefinition.
+result = dofile(file, "")
assert(os.remove(file))
print'OK'
return result
--
2.31.0
More information about the Tarantool-patches
mailing list