[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