[Tarantool-patches] [PATCH v2 luajit 1/5] test: add lua-Harness test suite
Igor Munkin
imun at tarantool.org
Mon Mar 15 20:37:30 MSK 2021
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?
>
> 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?
> +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.
> +
> +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.
> + ${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
More information about the Tarantool-patches
mailing list