[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