[Tarantool-patches] [PATCH luajit 3/5] test: run LuaJIT tests via CMake

Igor Munkin imun at tarantool.org
Mon Feb 8 19:29:30 MSK 2021


Timur,

Thanks for your review!

On 08.02.21, Timur Safin wrote:
> Some code changes proposals below...
> 
> : From: Igor Munkin <imun at 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). 

Unfortunately... CMake is a crap and I can't fix it. Well, honestly I
don't want to fix it. But you're right: I can fix all these comments
(athough I don't really want to). I have no idea how to express this in
a more neutral way, so I propose the following:
1. s/CMake is a crap/there is no convenient way to make it in CMake/g.
2. Leave everything else unchanged.

This is not only emotions. Such comments prevent one from unintentional
refactoring of such fragile places with no failures and also from
bothering the oldies with the questions kinda "dude, why is this done so
badly". In other words, primarily I have left this for the history.

If you're OK, then I'll fix the way described above.

> 
> : +  # 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

I have thought about it for some time, and I have a strong rationale (at
least for me) to not introducing such change: this doesn't work whether
there are directories inside containing no tests. Furthermore, we're
going to re-implement several C tests, so I would like to leave
everything as it is (if you don't mind) and return to this place later.

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

<snipped>

> 
> Regards,
> Timur
> 

-- 
Best regards,
IM


More information about the Tarantool-patches mailing list