[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