mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-22 05:16:10 +01:00
Add optional argument to catch_discover_tests to set DYLD_FRAMEWORK_PATH (#2880)
* Added optional argument to catch_discover_tests to set the DYLD_FRAMEWORK_PATH environment variable on Apple platforms.
This commit is contained in:
parent
7af96bbb22
commit
85b7f3d6ab
@ -124,6 +124,13 @@ same as the Catch name; see also ``TEST_PREFIX`` and ``TEST_SUFFIX``.
|
|||||||
test executable and when the tests are executed themselves. This requires
|
test executable and when the tests are executed themselves. This requires
|
||||||
cmake/ctest >= 3.22.
|
cmake/ctest >= 3.22.
|
||||||
|
|
||||||
|
``DL_FRAMEWORK_PATHS path...``
|
||||||
|
Specifies paths that need to be set for the dynamic linker to find libraries
|
||||||
|
packaged as frameworks on Apple platforms when running the test executable
|
||||||
|
(DYLD_FRAMEWORK_PATH). These paths will both be set when retrieving the list
|
||||||
|
of test cases from the test executable and when the tests are executed themselves.
|
||||||
|
This requires cmake/ctest >= 3.22.
|
||||||
|
|
||||||
`DISCOVERY_MODE mode``
|
`DISCOVERY_MODE mode``
|
||||||
Provides control over when ``catch_discover_tests`` performs test discovery.
|
Provides control over when ``catch_discover_tests`` performs test discovery.
|
||||||
By default, ``POST_BUILD`` sets up a post-build command to perform test discovery
|
By default, ``POST_BUILD`` sets up a post-build command to perform test discovery
|
||||||
@ -146,7 +153,7 @@ function(catch_discover_tests TARGET)
|
|||||||
""
|
""
|
||||||
""
|
""
|
||||||
"TEST_PREFIX;TEST_SUFFIX;WORKING_DIRECTORY;TEST_LIST;REPORTER;OUTPUT_DIR;OUTPUT_PREFIX;OUTPUT_SUFFIX;DISCOVERY_MODE"
|
"TEST_PREFIX;TEST_SUFFIX;WORKING_DIRECTORY;TEST_LIST;REPORTER;OUTPUT_DIR;OUTPUT_PREFIX;OUTPUT_SUFFIX;DISCOVERY_MODE"
|
||||||
"TEST_SPEC;EXTRA_ARGS;PROPERTIES;DL_PATHS"
|
"TEST_SPEC;EXTRA_ARGS;PROPERTIES;DL_PATHS;DL_FRAMEWORK_PATHS"
|
||||||
${ARGN}
|
${ARGN}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -156,10 +163,11 @@ function(catch_discover_tests TARGET)
|
|||||||
if(NOT _TEST_LIST)
|
if(NOT _TEST_LIST)
|
||||||
set(_TEST_LIST ${TARGET}_TESTS)
|
set(_TEST_LIST ${TARGET}_TESTS)
|
||||||
endif()
|
endif()
|
||||||
if (_DL_PATHS)
|
if(_DL_PATHS AND ${CMAKE_VERSION} VERSION_LESS "3.22.0")
|
||||||
if(${CMAKE_VERSION} VERSION_LESS "3.22.0")
|
|
||||||
message(FATAL_ERROR "The DL_PATHS option requires at least cmake 3.22")
|
message(FATAL_ERROR "The DL_PATHS option requires at least cmake 3.22")
|
||||||
endif()
|
endif()
|
||||||
|
if(_DL_FRAMEWORK_PATHS AND ${CMAKE_VERSION} VERSION_LESS "3.22.0")
|
||||||
|
message(FATAL_ERROR "The DL_FRAMEWORK_PATHS option requires at least cmake 3.22")
|
||||||
endif()
|
endif()
|
||||||
if(NOT _DISCOVERY_MODE)
|
if(NOT _DISCOVERY_MODE)
|
||||||
if(NOT CMAKE_CATCH_DISCOVER_TESTS_DISCOVERY_MODE)
|
if(NOT CMAKE_CATCH_DISCOVER_TESTS_DISCOVERY_MODE)
|
||||||
@ -205,6 +213,7 @@ function(catch_discover_tests TARGET)
|
|||||||
-D "TEST_OUTPUT_PREFIX=${_OUTPUT_PREFIX}"
|
-D "TEST_OUTPUT_PREFIX=${_OUTPUT_PREFIX}"
|
||||||
-D "TEST_OUTPUT_SUFFIX=${_OUTPUT_SUFFIX}"
|
-D "TEST_OUTPUT_SUFFIX=${_OUTPUT_SUFFIX}"
|
||||||
-D "TEST_DL_PATHS=${_DL_PATHS}"
|
-D "TEST_DL_PATHS=${_DL_PATHS}"
|
||||||
|
-D "TEST_DL_FRAMEWORK_PATHS=${_DL_FRAMEWORK_PATHS}"
|
||||||
-D "CTEST_FILE=${ctest_tests_file}"
|
-D "CTEST_FILE=${ctest_tests_file}"
|
||||||
-P "${_CATCH_DISCOVER_TESTS_SCRIPT}"
|
-P "${_CATCH_DISCOVER_TESTS_SCRIPT}"
|
||||||
VERBATIM
|
VERBATIM
|
||||||
@ -250,6 +259,7 @@ function(catch_discover_tests TARGET)
|
|||||||
" TEST_OUTPUT_SUFFIX" " [==[" "${_OUTPUT_SUFFIX}" "]==]" "\n"
|
" TEST_OUTPUT_SUFFIX" " [==[" "${_OUTPUT_SUFFIX}" "]==]" "\n"
|
||||||
" CTEST_FILE" " [==[" "${ctest_tests_file}" "]==]" "\n"
|
" CTEST_FILE" " [==[" "${ctest_tests_file}" "]==]" "\n"
|
||||||
" TEST_DL_PATHS" " [==[" "${_DL_PATHS}" "]==]" "\n"
|
" TEST_DL_PATHS" " [==[" "${_DL_PATHS}" "]==]" "\n"
|
||||||
|
" TEST_DL_FRAMEWORK_PATHS" " [==[" "${_DL_FRAMEWORK_PATHS}" "]==]" "\n"
|
||||||
" CTEST_FILE" " [==[" "${CTEST_FILE}" "]==]" "\n"
|
" CTEST_FILE" " [==[" "${CTEST_FILE}" "]==]" "\n"
|
||||||
" )" "\n"
|
" )" "\n"
|
||||||
" endif()" "\n"
|
" endif()" "\n"
|
||||||
|
@ -22,7 +22,7 @@ function(catch_discover_tests_impl)
|
|||||||
""
|
""
|
||||||
""
|
""
|
||||||
"TEST_EXECUTABLE;TEST_WORKING_DIR;TEST_OUTPUT_DIR;TEST_OUTPUT_PREFIX;TEST_OUTPUT_SUFFIX;TEST_PREFIX;TEST_REPORTER;TEST_SPEC;TEST_SUFFIX;TEST_LIST;CTEST_FILE"
|
"TEST_EXECUTABLE;TEST_WORKING_DIR;TEST_OUTPUT_DIR;TEST_OUTPUT_PREFIX;TEST_OUTPUT_SUFFIX;TEST_PREFIX;TEST_REPORTER;TEST_SPEC;TEST_SUFFIX;TEST_LIST;CTEST_FILE"
|
||||||
"TEST_EXTRA_ARGS;TEST_PROPERTIES;TEST_EXECUTOR;TEST_DL_PATHS"
|
"TEST_EXTRA_ARGS;TEST_PROPERTIES;TEST_EXECUTOR;TEST_DL_PATHS;TEST_DL_FRAMEWORK_PATHS"
|
||||||
${ARGN}
|
${ARGN}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -36,6 +36,7 @@ function(catch_discover_tests_impl)
|
|||||||
set(output_prefix ${_TEST_OUTPUT_PREFIX})
|
set(output_prefix ${_TEST_OUTPUT_PREFIX})
|
||||||
set(output_suffix ${_TEST_OUTPUT_SUFFIX})
|
set(output_suffix ${_TEST_OUTPUT_SUFFIX})
|
||||||
set(dl_paths ${_TEST_DL_PATHS})
|
set(dl_paths ${_TEST_DL_PATHS})
|
||||||
|
set(dl_framework_paths ${_TEST_DL_FRAMEWORK_PATHS})
|
||||||
set(script)
|
set(script)
|
||||||
set(suite)
|
set(suite)
|
||||||
set(tests)
|
set(tests)
|
||||||
@ -60,6 +61,11 @@ function(catch_discover_tests_impl)
|
|||||||
set(ENV{${dl_paths_variable_name}} "${paths}")
|
set(ENV{${dl_paths_variable_name}} "${paths}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(APPLE AND dl_framework_paths)
|
||||||
|
cmake_path(CONVERT "${dl_framework_paths}" TO_NATIVE_PATH_LIST paths)
|
||||||
|
set(ENV{DYLD_FRAMEWORK_PATH} "${paths}")
|
||||||
|
endif()
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${_TEST_EXECUTOR} "${_TEST_EXECUTABLE}" ${spec} --list-tests --verbosity quiet
|
COMMAND ${_TEST_EXECUTOR} "${_TEST_EXECUTABLE}" ${spec} --list-tests --verbosity quiet
|
||||||
OUTPUT_VARIABLE output
|
OUTPUT_VARIABLE output
|
||||||
@ -121,6 +127,13 @@ function(catch_discover_tests_impl)
|
|||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(APPLE AND dl_framework_paths)
|
||||||
|
foreach(path ${dl_framework_paths})
|
||||||
|
cmake_path(NATIVE_PATH path native_path)
|
||||||
|
list(APPEND environment_modifications "DYLD_FRAMEWORK_PATH=path_list_prepend:${native_path}")
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
|
||||||
# Parse output
|
# Parse output
|
||||||
foreach(line ${output})
|
foreach(line ${output})
|
||||||
set(test "${line}")
|
set(test "${line}")
|
||||||
@ -187,6 +200,7 @@ if(CMAKE_SCRIPT_MODE_FILE)
|
|||||||
TEST_OUTPUT_PREFIX ${TEST_OUTPUT_PREFIX}
|
TEST_OUTPUT_PREFIX ${TEST_OUTPUT_PREFIX}
|
||||||
TEST_OUTPUT_SUFFIX ${TEST_OUTPUT_SUFFIX}
|
TEST_OUTPUT_SUFFIX ${TEST_OUTPUT_SUFFIX}
|
||||||
TEST_DL_PATHS ${TEST_DL_PATHS}
|
TEST_DL_PATHS ${TEST_DL_PATHS}
|
||||||
|
TEST_DL_FRAMEWORK_PATHS ${TEST_DL_FRAMEWORK_PATHS}
|
||||||
CTEST_FILE ${CTEST_FILE}
|
CTEST_FILE ${CTEST_FILE}
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
Loading…
Reference in New Issue
Block a user