[Tarantool-patches] [PATCH v2 luajit 3/5] test: adjust lua-Harness test suite for Tarantool

Sergey Kaplun skaplun at tarantool.org
Tue Mar 16 09:01:42 MSK 2021


Igor,

Thanks for the review!

On 15.03.21, Igor Munkin wrote:
> Sergey,
> 
> This is ridiculous: you split two similar renames required by the one
> issue into *two* separate commits, but leaving the changes *totally
> unrelated to each other* within a single commit. Please, split this
> patch into two: one for the test directory tweak and another with
> mocking environment variable in CMake.

Sorry, but why then you said nothing about commits separation/joining
for this [1] draft series, as I asked for?

Offline we came to the agreement that we should use 3 commits for each
test suite. The first to onboard it, the second to adjust for LuaJIT,
the third to adjust it for Tarantool.
Later your asked me to send Mergens changes as is.

I specially send draft to discuss the commits content, order and so on.
You said only about separating patchset for different test suites and
merged LuaJIT test suite, so I thought that commit order is OK for you.
I'd merged changes with Tarantool-related one.

If it is not comfortable for you getting WIP series and discussing them
let's decline this practise.

Back to business, I've split the patch into two, considering your
proposal, see them below (their order is the same).

> 
> On 15.03.21, Sergey Kaplun wrote:
> > This patch makes it possible to run lua-Harness test suite using
> > Tarantool.
> > 
> > 203-lexico.t and 301-basic.t is adjusted to valid working with
> > out-of-source build in Tarantool CI.
> 
> This is done not only for Tarantool CI, but also for LuaJIT out of
> source build.
> 
> > 
> > Inside Tarantool's GitHub-CI there is no defined variable LOGNAME nor
> > USERNAME. This leads to test failure inside CI, because a string is
> > expected. So, now USERNAME is set manually via CMake.
> 
> You mix up "the symptom" and "the root cause" here again. Problem is not
> in CI, but in the test. See the comment at the end.
> 
> > 
> > Part of tarantool/tarantool#5844
> > Part of tarantool/tarantool#4473
> > ---
> >  test/lua-Harness-tests/203-lexico.t   | 14 ++++++++++----
> >  test/lua-Harness-tests/301-basic.t    |  6 +++++-
> >  test/lua-Harness-tests/CMakeLists.txt |  4 ++++
> >  3 files changed, 19 insertions(+), 5 deletions(-)
> > 
> 
> <snipped>
> 
> > diff --git a/test/lua-Harness-tests/CMakeLists.txt b/test/lua-Harness-tests/CMakeLists.txt
> > index 9b35e5a..bac279f 100644
> > --- a/test/lua-Harness-tests/CMakeLists.txt
> > +++ b/test/lua-Harness-tests/CMakeLists.txt
> > @@ -40,6 +40,10 @@ add_custom_command(TARGET lua-Harness-tests
> >      # for more info.
> >      # So use less preferable way for tests.
> >      # See the root CMakeLists.txt for more info.
> > +    # XXX: 309-os.t checks os.getenv() function by examine of
> > +    # USERNAME or LOGNAME enviroment variable. It is not present
> > +    # inside CI by itself, so it is set here manually.
> 
> Strictly saying, the issue was found in CI, but it doesn't relate
> directly to CI: this can be done via `unset USERNAME` in you bash. This
> is nothing else, but just a bad test. You can ask Francois to adjust the
> test using a bit more popular variable (such as PWD or HOME). For now I
> propose to change the comment the way below and adjust the commit
> message regarding the changes made.
> 
> s/It is not present inside CI by itself/These might not be set in the environment/.
> 
> > +    USERNAME="fperrad"
> >      ${PROVE} ${CMAKE_CURRENT_SOURCE_DIR}
> >        --exec '${LUAJIT_TEST_COMMAND} -l profile_luajit21'
> >        ${LUA_TEST_FLAGS}
> > -- 
> > 2.28.0
> > 
> 
> -- 
> Best regards,
> IM

Patch for test directory tweak. Adjusted considering [2].

===================================================================
commit a84980334dce27243a25508e3bb8fd491689e552
Author: Sergey Kaplun <skaplun at tarantool.org>
Date:   Mon Mar 15 16:24:07 2021 +0300

    test: adjust lua-Harness tests that using dofile

    This patch makes out-of-source execution lua-Harness suite tests that
    using `dofile()` correct.

    There are the following files that used `dofile()` function
    on file in test sources directory:
    * 101-boolean.t
    * 102-function.t
    * 103-nil.t
    * 104-number.t
    * 105-string.t
    * 106-table.t
    * 107-thread.t
    * 108-userdata.t
    * 203-lexico.t
    * 231-metatable.t
    * 301-basic.t
    * 305-utf8.t
    * 404-ext.t

    `dofile()` looks for files to execute in the current working directory,
    that might be not the same as the test source directory.

    This patch introduces the new function `dofile_fullpath()` that
    evaluates full path to file considering arg[0] (i.e. test filename)
    value.

    Part of tarantool/tarantool#5844
    Part of tarantool/tarantool#4473

diff --git a/test/lua-Harness-tests/101-boolean.t b/test/lua-Harness-tests/101-boolean.t
index 0033eff..b9a769f 100755
--- a/test/lua-Harness-tests/101-boolean.t
+++ b/test/lua-Harness-tests/101-boolean.t
@@ -114,7 +114,7 @@ error_like(function () local a = true; a[1] = 1; end,
            "index")
 
 if has_op53 then
-    dofile'lexico53/boolean.t'
+    dofile_fullpath'lexico53/boolean.t'
 end
 
 done_testing()
diff --git a/test/lua-Harness-tests/102-function.t b/test/lua-Harness-tests/102-function.t
index 48ed814..2858640 100755
--- a/test/lua-Harness-tests/102-function.t
+++ b/test/lua-Harness-tests/102-function.t
@@ -193,7 +193,7 @@ t[print] = true
 ok(t[print])
 
 if has_op53 then
-    dofile'lexico53/function.t'
+    dofile_fullpath'lexico53/function.t'
 end
 
 done_testing()
diff --git a/test/lua-Harness-tests/103-nil.t b/test/lua-Harness-tests/103-nil.t
index 561b101..1e7c134 100755
--- a/test/lua-Harness-tests/103-nil.t
+++ b/test/lua-Harness-tests/103-nil.t
@@ -114,7 +114,7 @@ error_like(function () local a = nil; a[1] = 1; end,
            "index")
 
 if has_op53 then
-    dofile'lexico53/nil.t'
+    dofile_fullpath'lexico53/nil.t'
 end
 
 done_testing()
diff --git a/test/lua-Harness-tests/104-number.t b/test/lua-Harness-tests/104-number.t
index 0d4d3fd..affd1a4 100755
--- a/test/lua-Harness-tests/104-number.t
+++ b/test/lua-Harness-tests/104-number.t
@@ -233,7 +233,7 @@ error_like(function () local a = 3.14; a[1] = 1; end,
            "index")
 
 if has_op53 then
-    dofile'lexico53/number.t'
+    dofile_fullpath'lexico53/number.t'
 end
 
 done_testing()
diff --git a/test/lua-Harness-tests/105-string.t b/test/lua-Harness-tests/105-string.t
index cd8c88b..f571520 100755
--- a/test/lua-Harness-tests/105-string.t
+++ b/test/lua-Harness-tests/105-string.t
@@ -264,7 +264,7 @@ error_like(function () a = 'text'; a[1] = 1; end,
            "index")
 
 if has_op53 then
-    dofile'lexico53/string.t'
+    dofile_fullpath'lexico53/string.t'
 end
 
 done_testing()
diff --git a/test/lua-Harness-tests/106-table.t b/test/lua-Harness-tests/106-table.t
index 0c0ba49..b1a1027 100755
--- a/test/lua-Harness-tests/106-table.t
+++ b/test/lua-Harness-tests/106-table.t
@@ -122,7 +122,7 @@ error_like(function () t = {}; t[0/0] = 42 end,
            "table index is NaN")
 
 if has_op53 then
-    dofile'lexico53/table.t'
+    dofile_fullpath'lexico53/table.t'
 end
 
 done_testing()
diff --git a/test/lua-Harness-tests/107-thread.t b/test/lua-Harness-tests/107-thread.t
index 3d4af18..2f332d7 100755
--- a/test/lua-Harness-tests/107-thread.t
+++ b/test/lua-Harness-tests/107-thread.t
@@ -122,7 +122,7 @@ t[co] = true
 ok(t[co])
 
 if has_op53 then
-    dofile'lexico53/thread.t'
+    dofile_fullpath'lexico53/thread.t'
 end
 
 done_testing()
diff --git a/test/lua-Harness-tests/108-userdata.t b/test/lua-Harness-tests/108-userdata.t
index b1e3641..cc4134b 100755
--- a/test/lua-Harness-tests/108-userdata.t
+++ b/test/lua-Harness-tests/108-userdata.t
@@ -119,7 +119,7 @@ t[u] = true
 ok(t[u])
 
 if has_op53 then
-    dofile'lexico53/userdata.t'
+    dofile_fullpath'lexico53/userdata.t'
 end
 
 done_testing()
diff --git a/test/lua-Harness-tests/203-lexico.t b/test/lua-Harness-tests/203-lexico.t
index c1abebf..e5e89ed 100755
--- a/test/lua-Harness-tests/203-lexico.t
+++ b/test/lua-Harness-tests/203-lexico.t
@@ -118,19 +118,19 @@ do
 end
 
 if _VERSION >= 'Lua 5.2' or jit then
-    dofile'lexico52/lexico.t'
+    dofile_fullpath('lexico52/lexico.t')
 end
 
 if _VERSION >= 'Lua 5.3' or luajit21 then
-    dofile'lexico53/lexico.t'
+    dofile_fullpath('lexico53/lexico.t')
 end
 
 if _VERSION >= 'Lua 5.4' then
-    dofile'lexico54/lexico.t'
+    dofile_fullpath('lexico54/lexico.t')
 end
 
 if jit and pcall(require, 'ffi') then
-    dofile'lexicojit/lexico.t'
+    dofile_fullpath('lexicojit/lexico.t')
 end
 
 done_testing()
diff --git a/test/lua-Harness-tests/231-metatable.t b/test/lua-Harness-tests/231-metatable.t
index a2c6499..c5684d2 100755
--- a/test/lua-Harness-tests/231-metatable.t
+++ b/test/lua-Harness-tests/231-metatable.t
@@ -589,7 +589,7 @@ do
 end
 
 if has_anno_toclose then
-    dofile'lexico54/metatable.t'
+    dofile_fullpath'lexico54/metatable.t'
 end
 
 done_testing()
diff --git a/test/lua-Harness-tests/301-basic.t b/test/lua-Harness-tests/301-basic.t
index f4f9235..460a02f 100755
--- a/test/lua-Harness-tests/301-basic.t
+++ b/test/lua-Harness-tests/301-basic.t
@@ -843,7 +843,7 @@ do -- xpcall
 end
 
 if jit and pcall(require, 'ffi') then
-    dofile'lexicojit/basic.t'
+    dofile_fullpath('lexicojit/basic.t')
 end
 
 done_testing()
diff --git a/test/lua-Harness-tests/305-utf8.t b/test/lua-Harness-tests/305-utf8.t
index 4304b6c..18c57d8 100755
--- a/test/lua-Harness-tests/305-utf8.t
+++ b/test/lua-Harness-tests/305-utf8.t
@@ -40,9 +40,9 @@ if not utf8 then
     nok(has_utf8, "no has_utf8")
 else
     plan'no_plan'
-    dofile'lexico53/utf8.t'
+    dofile_fullpath'lexico53/utf8.t'
     if _VERSION >= 'Lua 5.4' then
-        dofile'lexico54/utf8.t'
+        dofile_fullpath'lexico54/utf8.t'
     end
     done_testing()
 end
diff --git a/test/lua-Harness-tests/404-ext.t b/test/lua-Harness-tests/404-ext.t
index 22a52c7..e48d91a 100755
--- a/test/lua-Harness-tests/404-ext.t
+++ b/test/lua-Harness-tests/404-ext.t
@@ -158,7 +158,7 @@ end
 
 -- thread.exdata
 if pcall(require, 'ffi') and (profile.openresty or jit.version:match'moonjit') then
-    dofile'lexicojit/ext.t'
+    dofile_fullpath'lexicojit/ext.t'
 end
 
 done_testing()
diff --git a/test/lua-Harness-tests/tap.lua b/test/lua-Harness-tests/tap.lua
index e527687..37b9df7 100644
--- a/test/lua-Harness-tests/tap.lua
+++ b/test/lua-Harness-tests/tap.lua
@@ -205,6 +205,14 @@ function get_lua_binary_name ()
     return arg[i + 1]
 end
 
+-- XXX: If tests is run out of the tests source tree, the
+-- relative paths below become invalid. Hence, we need to
+-- prepend the directory from the script (i.e. test) name to
+-- the auxiliary files to be loaded and executed.
+function dofile_fullpath (filename)
+    return dofile(arg[0]:gsub('([^/]+)%.t$', '') .. filename)
+end
+
 --
 -- Copyright (c) 2009-2018 Francois Perrad
 --
===================================================================

Patch for mocking environment variable in CMake.

===================================================================
commit 483508b0a7863efabcde6d232ab9af2033e0011f
Author: Sergey Kaplun <skaplun at tarantool.org>
Date:   Mon Mar 15 22:08:07 2021 +0300

    test: forcify set USERNAME env var for lua-Harness

    309-os.t checks `os.getenv()` function by examining of
    USERNAME or LOGNAME environment variable.
    These variables might not be set in the environment, that leads to test
    failure.

    This patchs sets manually USERNAME environment variable for
    lua-Harness-tests target.

    Part of tarantool/tarantool#5844
    Part of tarantool/tarantool#4473

diff --git a/test/lua-Harness-tests/CMakeLists.txt b/test/lua-Harness-tests/CMakeLists.txt
index f8611ce..b844788 100644
--- a/test/lua-Harness-tests/CMakeLists.txt
+++ b/test/lua-Harness-tests/CMakeLists.txt
@@ -34,6 +34,11 @@ add_custom_command(TARGET lua-Harness-tests
   env
     LUA_PATH="${LUA_PATH}\;"
     LUA_CPATH="${LUA_CPATH}\;"
+    # XXX: 309-os.t checks os.getenv() function by examining of
+    # USERNAME or LOGNAME environment variable.
+    # These variables might not be set in the environment, so
+    # set one of them manually.
+    USERNAME="fperrad"
     ${PROVE} ${CMAKE_CURRENT_SOURCE_DIR}
       --exec '${LUAJIT_TEST_COMMAND} -l profile_luajit21'
       ${LUA_TEST_FLAGS}
===================================================================

[1]: https://lists.tarantool.org/pipermail/tarantool-patches/2021-March/022563.html
[2]: https://lists.tarantool.org/pipermail/tarantool-patches/2021-March/022710.html

-- 
Best regards,
Sergey Kaplun


More information about the Tarantool-patches mailing list