[Tarantool-patches] [PATCH v2 luajit 1/5] test: add lua-Harness test suite

Sergey Kaplun skaplun at tarantool.org
Mon Mar 15 21:10:28 MSK 2021


Igor,

Thanks for the review!

On 15.03.21, Igor Munkin wrote:
> Sergey,
> 
> Thanks for the patch!
> 
> On 15.03.21, Sergey Kaplun wrote:
> > This patch introduces lua-Harness test suite[1] into our LuaJIT
> > fork source tree.
> 
> The suite has been taken intact. To check this I used the following
> recipe:
> | $ pwd
> | /lua-Harness/test_lua
> | $ git remote -v
> | origin  https://framagit.org/fperrad/lua-Harness.git (fetch)
> | origin  https://framagit.org/fperrad/lua-Harness.git (push)
> | $ git lo -1
> | a74be27 (HEAD -> master, origin/master, origin/HEAD) Makefile for lua-5.4.3-rc1
> | $ find . -type f | sort | xargs md5sum > ~/vanilla
> | <...>
> | $ pwd
> | /tarantool-luajit/test/lua-Harness-tests
> | $ git remote -v
> | origin  git at github.com:tarantool/luajit (fetch)
> | origin  git at github.com:tarantool/luajit (push)
> | $ git lo -1
> | aeb693b1 (HEAD) test: add lua-Harness test suite
> | $ find . -type f | sort | xargs md5sum > ~/tarantool
> | $ diff ~/vanilla ~/tarantool
> | 50a51
> | > 6b2c7f2b647e0e3f72fd1426520c80a5  ./CMakeLists.txt
> | 68d68
> | < 221b08fe5c896c109f9bf22a65f52c07  ./Makefile
> 
> > 
> > Considering the different behaviour in the Tarantool runtime, several
> > tests need to be adjusted.
> > 
> > [1]: https://framagit.org/fperrad/lua-Harness/tree/a74be27/test_lua
> > 
> > Part of tarantool/tarantool#5844
> > Part of tarantool/tarantool#4473
> > ---
> > 
> > Author: Mergen Imeev <imeevma at gmail.com>
> > 
> >  .luacheckrc                                   |   1 +
> >  test/CMakeLists.txt                           |   4 +-
> >  test/lua-Harness-tests/000-sanity.t           |  54 ++
> >  test/lua-Harness-tests/001-if.t               |  88 ++
> >  test/lua-Harness-tests/002-table.t            |  67 ++
> >  test/lua-Harness-tests/011-while.t            |  89 ++
> >  test/lua-Harness-tests/012-repeat.t           |  85 ++
> >  test/lua-Harness-tests/014-fornum.t           | 151 +++
> >  test/lua-Harness-tests/015-forlist.t          | 111 +++
> >  test/lua-Harness-tests/090-tap.t              |  37 +
> >  test/lua-Harness-tests/091-profile.t          |  45 +
> >  test/lua-Harness-tests/101-boolean.t          | 127 +++
> >  test/lua-Harness-tests/102-function.t         | 206 +++++
> >  test/lua-Harness-tests/103-nil.t              | 127 +++
> >  test/lua-Harness-tests/104-number.t           | 246 +++++
> >  test/lua-Harness-tests/105-string.t           | 277 ++++++
> >  test/lua-Harness-tests/106-table.t            | 135 +++
> >  test/lua-Harness-tests/107-thread.t           | 135 +++
> >  test/lua-Harness-tests/108-userdata.t         | 132 +++
> >  test/lua-Harness-tests/200-examples.t         | 104 +++
> >  test/lua-Harness-tests/201-assign.t           | 150 +++
> >  test/lua-Harness-tests/202-expr.t             | 157 ++++
> >  test/lua-Harness-tests/203-lexico.t           | 143 +++
> >  test/lua-Harness-tests/204-grammar.t          | 233 +++++
> >  test/lua-Harness-tests/211-scope.t            |  86 ++
> >  test/lua-Harness-tests/212-function.t         | 288 ++++++
> >  test/lua-Harness-tests/213-closure.t          |  98 ++
> >  test/lua-Harness-tests/214-coroutine.t        | 244 +++++
> >  test/lua-Harness-tests/221-table.t            | 120 +++
> >  test/lua-Harness-tests/222-constructor.t      | 119 +++
> >  test/lua-Harness-tests/223-iterator.t         | 203 +++++
> >  test/lua-Harness-tests/231-metatable.t        | 602 ++++++++++++
> >  test/lua-Harness-tests/232-object.t           | 314 +++++++
> >  test/lua-Harness-tests/241-standalone.t       | 269 ++++++
> >  test/lua-Harness-tests/242-luac.t             | 341 +++++++
> >  test/lua-Harness-tests/301-basic.t            | 856 ++++++++++++++++++
> >  test/lua-Harness-tests/303-package.t          | 290 ++++++
> >  test/lua-Harness-tests/304-string.t           | 633 +++++++++++++
> >  test/lua-Harness-tests/305-utf8.t             |  55 ++
> >  test/lua-Harness-tests/306-table.t            | 372 ++++++++
> >  test/lua-Harness-tests/307-math.t             | 375 ++++++++
> >  test/lua-Harness-tests/308-io.t               | 397 ++++++++
> >  test/lua-Harness-tests/309-os.t               | 271 ++++++
> >  test/lua-Harness-tests/310-debug.t            | 322 +++++++
> >  test/lua-Harness-tests/311-bit32.t            | 127 +++
> >  test/lua-Harness-tests/314-regex.t            | 222 +++++
> >  test/lua-Harness-tests/320-stdin.t            | 133 +++
> >  test/lua-Harness-tests/401-bitop.t            | 106 +++
> >  test/lua-Harness-tests/402-ffi.t              | 142 +++
> >  test/lua-Harness-tests/403-jit.t              | 163 ++++
> >  test/lua-Harness-tests/404-ext.t              | 171 ++++
> >  test/lua-Harness-tests/411-luajit.t           | 211 +++++
> >  test/lua-Harness-tests/CMakeLists.txt         |  49 +
> >  test/lua-Harness-tests/lexico52/lexico.t      |  45 +
> >  test/lua-Harness-tests/lexico53/boolean.t     |  43 +
> >  test/lua-Harness-tests/lexico53/function.t    |  66 ++
> >  test/lua-Harness-tests/lexico53/lexico.t      |  30 +
> >  test/lua-Harness-tests/lexico53/nil.t         |  43 +
> >  test/lua-Harness-tests/lexico53/number.t      | 181 ++++
> >  test/lua-Harness-tests/lexico53/string.t      | 169 ++++
> >  test/lua-Harness-tests/lexico53/table.t       |  43 +
> >  test/lua-Harness-tests/lexico53/thread.t      |  45 +
> >  test/lua-Harness-tests/lexico53/userdata.t    |  45 +
> >  test/lua-Harness-tests/lexico53/utf8.t        | 179 ++++
> >  test/lua-Harness-tests/lexico54/lexico.t      |  19 +
> >  test/lua-Harness-tests/lexico54/metatable.t   |  38 +
> >  test/lua-Harness-tests/lexico54/utf8.t        |  54 ++
> >  test/lua-Harness-tests/lexicojit/basic.t      |  27 +
> >  test/lua-Harness-tests/lexicojit/ext.t        |  52 ++
> >  test/lua-Harness-tests/lexicojit/lexico.t     |  32 +
> >  test/lua-Harness-tests/profile.lua            |  53 ++
> >  test/lua-Harness-tests/profile_lua51.lua      |  46 +
> >  .../profile_lua51_strict.lua                  |  46 +
> >  test/lua-Harness-tests/profile_lua52.lua      |  46 +
> >  .../profile_lua52_strict.lua                  |  46 +
> >  test/lua-Harness-tests/profile_lua53.lua      |  52 ++
> >  .../profile_lua53_noconv.lua                  |  55 ++
> >  .../profile_lua53_strict.lua                  |  52 ++
> >  test/lua-Harness-tests/profile_lua54.lua      |  52 ++
> >  .../profile_lua54_noconv.lua                  |  55 ++
> >  .../profile_lua54_strict.lua                  |  53 ++
> >  test/lua-Harness-tests/profile_luajit20.lua   |  53 ++
> >  .../profile_luajit20_compat52.lua             |  53 ++
> >  test/lua-Harness-tests/profile_luajit21.lua   |  53 ++
> >  .../profile_luajit21_compat52.lua             |  53 ++
> >  test/lua-Harness-tests/profile_openresty.lua  |  53 ++
> >  test/lua-Harness-tests/profile_ravi.lua       |  58 ++
> >  test/lua-Harness-tests/profile_tiny_fork.lua  |  60 ++
> >  test/lua-Harness-tests/rx_captures            |  13 +
> >  test/lua-Harness-tests/rx_charclass           |  38 +
> >  test/lua-Harness-tests/rx_metachars           | 117 +++
> >  test/lua-Harness-tests/tap.lua                | 203 +++++
> >  92 files changed, 12903 insertions(+), 1 deletion(-)
> >  create mode 100755 test/lua-Harness-tests/000-sanity.t
> >  create mode 100755 test/lua-Harness-tests/001-if.t
> >  create mode 100755 test/lua-Harness-tests/002-table.t
> >  create mode 100755 test/lua-Harness-tests/011-while.t
> >  create mode 100755 test/lua-Harness-tests/012-repeat.t
> >  create mode 100755 test/lua-Harness-tests/014-fornum.t
> >  create mode 100755 test/lua-Harness-tests/015-forlist.t
> >  create mode 100755 test/lua-Harness-tests/090-tap.t
> >  create mode 100755 test/lua-Harness-tests/091-profile.t
> >  create mode 100755 test/lua-Harness-tests/101-boolean.t
> >  create mode 100755 test/lua-Harness-tests/102-function.t
> >  create mode 100755 test/lua-Harness-tests/103-nil.t
> >  create mode 100755 test/lua-Harness-tests/104-number.t
> >  create mode 100755 test/lua-Harness-tests/105-string.t
> >  create mode 100755 test/lua-Harness-tests/106-table.t
> >  create mode 100755 test/lua-Harness-tests/107-thread.t
> >  create mode 100755 test/lua-Harness-tests/108-userdata.t
> >  create mode 100755 test/lua-Harness-tests/200-examples.t
> >  create mode 100755 test/lua-Harness-tests/201-assign.t
> >  create mode 100755 test/lua-Harness-tests/202-expr.t
> >  create mode 100755 test/lua-Harness-tests/203-lexico.t
> >  create mode 100755 test/lua-Harness-tests/204-grammar.t
> >  create mode 100755 test/lua-Harness-tests/211-scope.t
> >  create mode 100755 test/lua-Harness-tests/212-function.t
> >  create mode 100755 test/lua-Harness-tests/213-closure.t
> >  create mode 100755 test/lua-Harness-tests/214-coroutine.t
> >  create mode 100755 test/lua-Harness-tests/221-table.t
> >  create mode 100755 test/lua-Harness-tests/222-constructor.t
> >  create mode 100755 test/lua-Harness-tests/223-iterator.t
> >  create mode 100755 test/lua-Harness-tests/231-metatable.t
> >  create mode 100755 test/lua-Harness-tests/232-object.t
> >  create mode 100755 test/lua-Harness-tests/241-standalone.t
> >  create mode 100755 test/lua-Harness-tests/242-luac.t
> >  create mode 100755 test/lua-Harness-tests/301-basic.t
> >  create mode 100755 test/lua-Harness-tests/303-package.t
> >  create mode 100755 test/lua-Harness-tests/304-string.t
> >  create mode 100755 test/lua-Harness-tests/305-utf8.t
> >  create mode 100755 test/lua-Harness-tests/306-table.t
> >  create mode 100755 test/lua-Harness-tests/307-math.t
> >  create mode 100755 test/lua-Harness-tests/308-io.t
> >  create mode 100755 test/lua-Harness-tests/309-os.t
> >  create mode 100755 test/lua-Harness-tests/310-debug.t
> >  create mode 100755 test/lua-Harness-tests/311-bit32.t
> >  create mode 100755 test/lua-Harness-tests/314-regex.t
> >  create mode 100755 test/lua-Harness-tests/320-stdin.t
> >  create mode 100755 test/lua-Harness-tests/401-bitop.t
> >  create mode 100755 test/lua-Harness-tests/402-ffi.t
> >  create mode 100755 test/lua-Harness-tests/403-jit.t
> >  create mode 100755 test/lua-Harness-tests/404-ext.t
> >  create mode 100755 test/lua-Harness-tests/411-luajit.t
> >  create mode 100644 test/lua-Harness-tests/CMakeLists.txt
> >  create mode 100644 test/lua-Harness-tests/lexico52/lexico.t
> >  create mode 100644 test/lua-Harness-tests/lexico53/boolean.t
> >  create mode 100644 test/lua-Harness-tests/lexico53/function.t
> >  create mode 100644 test/lua-Harness-tests/lexico53/lexico.t
> >  create mode 100644 test/lua-Harness-tests/lexico53/nil.t
> >  create mode 100644 test/lua-Harness-tests/lexico53/number.t
> >  create mode 100644 test/lua-Harness-tests/lexico53/string.t
> >  create mode 100644 test/lua-Harness-tests/lexico53/table.t
> >  create mode 100644 test/lua-Harness-tests/lexico53/thread.t
> >  create mode 100644 test/lua-Harness-tests/lexico53/userdata.t
> >  create mode 100644 test/lua-Harness-tests/lexico53/utf8.t
> >  create mode 100644 test/lua-Harness-tests/lexico54/lexico.t
> >  create mode 100644 test/lua-Harness-tests/lexico54/metatable.t
> >  create mode 100644 test/lua-Harness-tests/lexico54/utf8.t
> >  create mode 100644 test/lua-Harness-tests/lexicojit/basic.t
> >  create mode 100644 test/lua-Harness-tests/lexicojit/ext.t
> >  create mode 100644 test/lua-Harness-tests/lexicojit/lexico.t
> >  create mode 100644 test/lua-Harness-tests/profile.lua
> >  create mode 100644 test/lua-Harness-tests/profile_lua51.lua
> >  create mode 100644 test/lua-Harness-tests/profile_lua51_strict.lua
> >  create mode 100644 test/lua-Harness-tests/profile_lua52.lua
> >  create mode 100644 test/lua-Harness-tests/profile_lua52_strict.lua
> >  create mode 100644 test/lua-Harness-tests/profile_lua53.lua
> >  create mode 100644 test/lua-Harness-tests/profile_lua53_noconv.lua
> >  create mode 100644 test/lua-Harness-tests/profile_lua53_strict.lua
> >  create mode 100644 test/lua-Harness-tests/profile_lua54.lua
> >  create mode 100644 test/lua-Harness-tests/profile_lua54_noconv.lua
> >  create mode 100644 test/lua-Harness-tests/profile_lua54_strict.lua
> >  create mode 100644 test/lua-Harness-tests/profile_luajit20.lua
> >  create mode 100644 test/lua-Harness-tests/profile_luajit20_compat52.lua
> >  create mode 100644 test/lua-Harness-tests/profile_luajit21.lua
> >  create mode 100644 test/lua-Harness-tests/profile_luajit21_compat52.lua
> >  create mode 100644 test/lua-Harness-tests/profile_openresty.lua
> >  create mode 100644 test/lua-Harness-tests/profile_ravi.lua
> >  create mode 100644 test/lua-Harness-tests/profile_tiny_fork.lua
> >  create mode 100644 test/lua-Harness-tests/rx_captures
> >  create mode 100644 test/lua-Harness-tests/rx_charclass
> >  create mode 100644 test/lua-Harness-tests/rx_metachars
> >  create mode 100644 test/lua-Harness-tests/tap.lua
> > 
> 
> <snipped>
> 
> > diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
> > index 99471db..3a42f41 100644
> > --- a/test/CMakeLists.txt
> > +++ b/test/CMakeLists.txt
> > @@ -43,10 +43,12 @@ endif()
> >  set(LUAJIT_TEST_COMMAND "${LUAJIT_TEST_BINARY} -e dofile[[${LUAJIT_TEST_INIT}]]")
> >  separate_arguments(LUAJIT_TEST_COMMAND)
> >  
> > -add_subdirectory(tarantool-tests)
> > +add_subdirectory(lua-Harness-tests)
> >  add_subdirectory(LuaJIT-tests)
> > +add_subdirectory(tarantool-tests)
> 
> Why did you choose this order?

Alphabetically, like in `ls` output. Feel free to propose your own.

> 
> >  
> >  add_custom_target(${PROJECT_NAME}-test DEPENDS
> > +  lua-Harness-tests
> >    LuaJIT-tests
> >    tarantool-tests
> >  )
> 
> <snipped>
> 
> > diff --git a/test/lua-Harness-tests/CMakeLists.txt b/test/lua-Harness-tests/CMakeLists.txt
> > new file mode 100644
> > index 0000000..9b35e5a
> > --- /dev/null
> > +++ b/test/lua-Harness-tests/CMakeLists.txt
> > @@ -0,0 +1,49 @@
> > +# Test suite that has been added from lua-Harness test suite
> > +# in scope of https://github.com/tarantool/tarantool/issues/4473.
> > +
> > +# See the rationale in the root CMakeLists.txt
> > +cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
> > +
> > +find_program(PROVE prove)
> > +if(NOT PROVE)
> > +  message(WARNING "`prove' is not found, so lua-Harness-tests target is not generated")
> > +  return()
> > +endif()
> > +
> > +set(LUA_TEST_FLAGS --failures --shuffle)
> 
> Why did you drop TEST_DEPS variable containing the dependencies?

Sorry, don't get it. What do you mean?

> 
> > +if(CMAKE_VERBOSE_MAKEFILE)
> > +  list(APPEND LUA_TEST_FLAGS --verbose)
> > +endif()
> > +
> > +string(CONCAT LUA_PATH
> > +  "./?.lua\;"
> > +  "${CMAKE_CURRENT_SOURCE_DIR}/?.lua\;"
> > +  "${LUAJIT_SOURCE_DIR}/?.lua\;"
> > +)
> 
> There is not a word regarding such complex LUA_PATH configuration.

Ok, it can be the one long string, but, in my opinion, this format is
more readable, plus, as a bonus, with it line length is less than 120
characters. I'll join these lines into one if you insist.

> 
> > +
> > +string(CONCAT LUA_CPATH
> > +  "./?${CMAKE_SHARED_LIBRARY_SUFFIX}\;"
> > +  "${LUAJIT_SOURCE_DIR}/?${CMAKE_SHARED_LIBRARY_SUFFIX}\;"
> > +)
> 
> Ditto.
> 
> > +
> > +add_custom_target(lua-Harness-tests DEPENDS ${LUAJIT_TEST_BINARY})
> > +
> > +add_custom_command(TARGET lua-Harness-tests
> > +  COMMENT "Running lua-Harness tests"
> > +  COMMAND
> > +  env
> > +    LUA_PATH="${LUA_PATH}\;"
> > +    LUA_CPATH="${LUA_CPATH}\;"
> > +    # Tarantool doesn't support LUA_INIT and most likely it
> > +    # never will.
> > +    # See https://github.com/tarantool/tarantool/issues/5744
> > +    # for more info.
> > +    # So use less preferable way for tests.
> > +    # See the root CMakeLists.txt for more info.
> 
> Why do you need this comment here? You're using LUAJIT_TEST_COMMAND
> here, so if you need to explain its usage, it's better to leave a
> comment with the rationale right before its definition rather than each
> place it is used with prove.

Ok, dropped. See the iterative patch below. Branch is force-pushed.

===================================================================
diff --git a/test/lua-Harness-tests/CMakeLists.txt b/test/lua-Harness-tests/CMakeLists.txt
index 9b35e5a..f8611ce 100644
--- a/test/lua-Harness-tests/CMakeLists.txt
+++ b/test/lua-Harness-tests/CMakeLists.txt
@@ -34,12 +34,6 @@ add_custom_command(TARGET lua-Harness-tests
   env
     LUA_PATH="${LUA_PATH}\;"
     LUA_CPATH="${LUA_CPATH}\;"
-    # Tarantool doesn't support LUA_INIT and most likely it
-    # never will.
-    # See https://github.com/tarantool/tarantool/issues/5744
-    # for more info.
-    # So use less preferable way for tests.
-    # See the root CMakeLists.txt for more info.
     ${PROVE} ${CMAKE_CURRENT_SOURCE_DIR}
       --exec '${LUAJIT_TEST_COMMAND} -l profile_luajit21'
       ${LUA_TEST_FLAGS}
===================================================================

> 
> > +    ${PROVE} ${CMAKE_CURRENT_SOURCE_DIR}
> > +      --exec '${LUAJIT_TEST_COMMAND} -l profile_luajit21'
> > +      ${LUA_TEST_FLAGS}
> > +  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
> > +)
> > +
> > +# vim: expandtab tabstop=2 shiftwidth=2
> 
> <snipped>
> 
> > -- 
> > 2.28.0
> > 
> 
> -- 
> Best regards,
> IM

-- 
Best regards,
Sergey Kaplun


More information about the Tarantool-patches mailing list