Tarantool development patches archive
 help / color / mirror / Atom feed
From: Timur Safin via Tarantool-patches <tarantool-patches@dev.tarantool.org>
To: "'Igor Munkin'" <imun@tarantool.org>,
	"'Sergey Kaplun'" <skaplun@tarantool.org>
Cc: <tarantool-patches@dev.tarantool.org>
Subject: Re: [Tarantool-patches] [PATCH luajit 3/5] test: run LuaJIT tests via CMake
Date: Mon, 8 Feb 2021 18:05:40 +0300	[thread overview]
Message-ID: <01d401d6fe2b$dd80c160$98824420$@tarantool.org> (raw)
In-Reply-To: <6a03d693204cacc5791c75e1003efc150abb2979.1612291495.git.imun@tarantool.org>

Some code changes proposals below...

: From: Igor Munkin <imun@tarantool.org>
: Subject: [PATCH luajit 3/5] test: run LuaJIT tests via CMake
: 
: diff --git a/test/tarantool-tests/CMakeLists.txt b/test/tarantool-
: tests/CMakeLists.txt
: new file mode 100644
: index 0000000..0be4b34
: --- /dev/null
: +++ b/test/tarantool-tests/CMakeLists.txt
: @@ -0,0 +1,92 @@
: +# Test suite that has been moved from Tarantool repository in
: +# scope of https://github.com/tarantool/tarantool/issues/4478.
: +
: +# 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 tarantool-tests target is not
: generated")
: +  return()
: +endif()
: +
: +macro(BuildTestLib lib sources)
: +  add_library(${lib} SHARED EXCLUDE_FROM_ALL ${sources})
: +  target_include_directories(${lib} PRIVATE
: +    ${LUAJIT_SOURCE_DIR}
: +    ${CMAKE_CURRENT_SOURCE_DIR}
: +  )
...
: +  # XXX: Append the lib to be built to the dependecy list.
: +  # Unfortunately, CMake is a crap and there is no other way to
: +  # extend the list in parent scope but join two strings with
: +  # semicolon. If one finds the normal way to make it work, feel
: +  # free to reach me.
: +  set(TESTLIBS "${lib};${TESTLIBS}" PARENT_SCOPE)

I don't like this. It reminds me of bad examples of this note
in the libev code like "this is so uncontrollably lame" which
actually distract users. We should rather put comments in more
neutral way (IMVHO). 

: +  # Add the directory where the lib is built to the LUA_CPATH
: +  # environment variable, so interpreter can find and load it.
: +  # XXX: Here we see the other side of the coin. If one joins two
: +  # strings with semicolon, the value automatically becomes the
: +  # list. I have no idea what is wrong with this tool, but I found
: +  # a single working solution to make LUA_CPATH be a string via
: +  # "escaping" the semicolon right in string interpolation.
: +  set(LUA_CPATH
: "${CMAKE_CURRENT_BINARY_DIR}/?${CMAKE_SHARED_LIBRARY_SUFFIX}\;${LUA_CPATH}"
: PARENT_SCOPE)
: +  # Also add this directory to LD_LIBRARY_PATH environment
: +  # variable, so FFI machinery can find and load it.
: +  set(LD_LIBRARY_PATH "${CMAKE_CURRENT_BINARY_DIR}:${LD_LIBRARY_PATH}"
: PARENT_SCOPE)
: +endmacro()
: +
: +add_subdirectory(gh-4427-ffi-sandwich)
: +add_subdirectory(lj-flush-on-trace)
: +add_subdirectory(misclib-getmetrics-capi)

I liked you introduced globs for test files addition (blow), 
but unfortunately you didn't complete this with subdirectory addition

Please see my proposed patch (with reworded comments and new macro) here https://gist.github.com/tsafin/6c7505c0c764ab2b474667bf0d65fb45.

: +
: +# The part of memory profiler toolchain is located in tools
: +# directory and auxiliary tests-related modules are located in the
: +# current directory (but tests are run in the binary directory),
: +# so LUA_PATH need to be updated.
: +set(LUA_PATH
: +  "${CMAKE_CURRENT_SOURCE_DIR}/?.lua\;${PROJECT_SOURCE_DIR}/tools/?.lua"
: +)
: +set(LUA_TEST_SUFFIX .test.lua)
: +file(GLOB TEST_DEPS ${CMAKE_CURRENT_SOURCE_DIR}/*${LUA_TEST_SUFFIX})
: +
: +# LUA_CPATH and LD_LIBRARY_PATH variables and also TESTLIBS list
: +# with dependecies are set in scope of BuildTestLib macro.
: +add_custom_command(
: +  COMMENT "Running Tarantool tests"
: +  OUTPUT tests.ok
: +  DEPENDS ${LUAJIT_TEST_BINARY} ${TESTLIBS} ${TEST_DEPS}
: +  COMMAND
: +  env
: +    LUA_PATH="${LUA_PATH}\;\;"
: +    LUA_CPATH="${LUA_CPATH}\;\;"
: +    LD_LIBRARY_PATH="${LD_LIBRARY_PATH}"
: +    ${PROVE} ${CMAKE_CURRENT_SOURCE_DIR}
: +      --exec ${LUAJIT_TEST_BINARY}
: +      --ext ${LUA_TEST_SUFFIX}
: +      --failures --shuffle
: +    && touch tests.ok
: +  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
: +)
: +
: +add_custom_target(tarantool-tests DEPENDS tests.ok)

The major part of suggested patch is like this one:

--------------------------------------------------
-add_subdirectory(gh-4427-ffi-sandwich)
-add_subdirectory(lj-flush-on-trace)
-add_subdirectory(misclib-getmetrics-capi)
+macro(add_all_subdirectories)
+    file(GLOB entries RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*")
+    foreach(entry ${entries})
+        if (IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${entry})
+            add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/${entry})
+        endif()
+    endforeach()
+endmacro()
+
+add_all_subdirectories()
-------------------------------------------------

Regards,
Timur


  reply	other threads:[~2021-02-08 15:05 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-02 20:57 [Tarantool-patches] [PATCH luajit 0/5] Self-sufficient LuaJIT testing environment Igor Munkin via Tarantool-patches
2021-02-02 20:57 ` [Tarantool-patches] [PATCH luajit 1/5] build: preserve the original build system Igor Munkin via Tarantool-patches
2021-02-04 22:53   ` Timur Safin via Tarantool-patches
2021-02-08 15:56     ` Igor Munkin via Tarantool-patches
2021-02-09 11:38   ` Sergey Kaplun via Tarantool-patches
2021-02-09 12:47     ` Igor Munkin via Tarantool-patches
2021-02-09 14:45       ` Sergey Kaplun via Tarantool-patches
2021-02-09 15:28         ` Igor Munkin via Tarantool-patches
2021-02-10  9:35           ` Sergey Kaplun via Tarantool-patches
2021-02-02 20:57 ` [Tarantool-patches] [PATCH luajit 2/5] build: replace GNU Make with CMake Igor Munkin via Tarantool-patches
2021-02-04 22:53   ` Timur Safin via Tarantool-patches
2021-02-08 15:56     ` Igor Munkin via Tarantool-patches
2021-02-09 13:55       ` Timur Safin via Tarantool-patches
2021-02-09 15:09         ` Igor Munkin via Tarantool-patches
2021-02-11 19:23   ` Sergey Kaplun via Tarantool-patches
2021-02-16 15:28     ` Igor Munkin via Tarantool-patches
2021-02-18  9:56       ` Sergey Kaplun via Tarantool-patches
2021-02-20 19:18         ` Igor Munkin via Tarantool-patches
2021-02-27 10:48           ` Sergey Kaplun via Tarantool-patches
2021-02-28 18:18             ` Igor Munkin via Tarantool-patches
2021-02-13  3:47   ` Sergey Kaplun via Tarantool-patches
2021-02-16 15:32     ` Igor Munkin via Tarantool-patches
2021-02-02 20:57 ` [Tarantool-patches] [PATCH luajit 3/5] test: run LuaJIT tests via CMake Igor Munkin via Tarantool-patches
2021-02-08 15:05   ` Timur Safin via Tarantool-patches [this message]
2021-02-08 16:29     ` Igor Munkin via Tarantool-patches
2021-02-09  8:16       ` Timur Safin via Tarantool-patches
2021-02-09  8:43         ` Igor Munkin via Tarantool-patches
2021-02-09 13:59           ` Timur Safin via Tarantool-patches
2021-02-09 15:10             ` Igor Munkin via Tarantool-patches
2021-02-14 18:48   ` Sergey Kaplun via Tarantool-patches
2021-02-19 19:04     ` Igor Munkin via Tarantool-patches
2021-02-27 13:50       ` Sergey Kaplun via Tarantool-patches
2021-02-28 18:18         ` Igor Munkin via Tarantool-patches
2021-02-02 20:57 ` [Tarantool-patches] [PATCH luajit 4/5] test: fix warnings found with luacheck in misclib* Igor Munkin via Tarantool-patches
     [not found]   ` <012f01d6fe1a$a2aa6890$e7ff39b0$@tarantool.org>
     [not found]     ` <2c495492-50f4-acfd-ad66-2cb44abb5fa1@tarantool.org>
2021-02-08 15:40       ` Sergey Bronnikov via Tarantool-patches
2021-02-08 15:58       ` Igor Munkin via Tarantool-patches
2021-02-08 15:57     ` Igor Munkin via Tarantool-patches
2021-02-14 19:16   ` Sergey Kaplun via Tarantool-patches
2021-02-16 15:29     ` Igor Munkin via Tarantool-patches
2021-02-16 16:36       ` Sergey Kaplun via Tarantool-patches
2021-02-02 20:57 ` [Tarantool-patches] [PATCH luajit 5/5] test: run luacheck static analysis via CMake Igor Munkin via Tarantool-patches
2021-02-04 22:52   ` Timur Safin via Tarantool-patches
2021-02-08 15:57     ` Igor Munkin via Tarantool-patches
2021-02-14 19:32   ` Sergey Kaplun via Tarantool-patches
2021-02-19 19:14     ` Igor Munkin via Tarantool-patches
2021-02-28 22:04 ` [Tarantool-patches] [PATCH luajit 0/5] Self-sufficient LuaJIT testing environment Igor Munkin via Tarantool-patches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='01d401d6fe2b$dd80c160$98824420$@tarantool.org' \
    --to=tarantool-patches@dev.tarantool.org \
    --cc=imun@tarantool.org \
    --cc=skaplun@tarantool.org \
    --cc=tsafin@tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH luajit 3/5] test: run LuaJIT tests via CMake' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox