mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2026-06-17 01:07:05 +00:00
test: support an alternative runtime library dir per test
- introduce FAIRMQ_TEST_LD_LIBRARY_PATH, which prepends a directory to each test's environment via ctest, so the tests can run against an alternative runtime library (e.g. a tsan-instrumented libstdc++) - LD_LIBRARY_PATH rather than an injected rpath: an rpath added via the linker flags cannot precede the rpath spack's gcc adds through its specs file, so the compiler's own libstdc++ would keep winning the runtime search order - scoped per test on purpose: an instrumented library has unresolved __tsan_* symbols and must not be loaded into uninstrumented tools like cmake, ctest or ninja - fail the configuration instead of silently dropping the injection on CMake < 3.22 (ENVIRONMENT_MODIFICATION) - cover the example tests too; they share the instrumented runtime but not the locale-cache warmup (their main() is the installed public header). The custom-controller env block was dead before: it tested lsan_options, which only ever existed in the add_example() function scope, so the test also never received the LSan suppressions
This commit is contained in:
committed by
Dennis Klein
parent
2febbe3146
commit
b568535910
@@ -24,9 +24,19 @@ if(definitions)
|
||||
set(definitions DEFINITIONS ${definitions})
|
||||
endif()
|
||||
|
||||
set(test_environment)
|
||||
if(ENABLE_SANITIZER_LEAK)
|
||||
get_filename_component(lsan_supps "${CMAKE_CURRENT_SOURCE_DIR}/leak_sanitizer_suppressions.txt" ABSOLUTE)
|
||||
set(environment ENVIRONMENT "LSAN_OPTIONS=set:suppressions=${lsan_supps}")
|
||||
list(APPEND test_environment "LSAN_OPTIONS=set:suppressions=${lsan_supps}")
|
||||
endif()
|
||||
# Run the tests against an alternative runtime library directory, e.g. a
|
||||
# tsan-instrumented libstdc++. Set per test (not at the job level), because
|
||||
# such a library must only be loaded into instrumented executables.
|
||||
if(FAIRMQ_TEST_LD_LIBRARY_PATH)
|
||||
list(APPEND test_environment "LD_LIBRARY_PATH=path_list_prepend:${FAIRMQ_TEST_LD_LIBRARY_PATH}")
|
||||
endif()
|
||||
if(test_environment)
|
||||
set(environment ENVIRONMENT ${test_environment})
|
||||
endif()
|
||||
|
||||
add_testhelper(runTestDevice
|
||||
|
||||
Reference in New Issue
Block a user