Add infrastructure for CMake-only tests
Some tests only need to run CMake to configure and generate a build tree, but not actually perform the build. Add a new "Tests/CMakeOnly" directory dedicated for this purpose. Add a helper script to drive each test by creating a fresh build tree and running CMake on it. Add macro "add_CMakeOnly_test" to help create tests using the script.
This commit is contained in:
parent
bbed901178
commit
9a20abf04a
|
@ -47,6 +47,7 @@ IF(BUILD_TESTING)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
ADD_SUBDIRECTORY(CMakeLib)
|
ADD_SUBDIRECTORY(CMakeLib)
|
||||||
|
ADD_SUBDIRECTORY(CMakeOnly)
|
||||||
|
|
||||||
ADD_SUBDIRECTORY(FindPackageModeMakefileTest)
|
ADD_SUBDIRECTORY(FindPackageModeMakefileTest)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Test.cmake.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/Test.cmake @ONLY)
|
||||||
|
|
||||||
|
macro(add_CMakeOnly_test test)
|
||||||
|
add_test(CMakeOnly.${test} ${CMAKE_CMAKE_COMMAND}
|
||||||
|
-DTEST=${test}
|
||||||
|
-P ${CMAKE_CURRENT_BINARY_DIR}/Test.cmake
|
||||||
|
)
|
||||||
|
endmacro()
|
|
@ -0,0 +1,12 @@
|
||||||
|
set(source_dir "@CMAKE_CURRENT_SOURCE_DIR@/${TEST}")
|
||||||
|
set(binary_dir "@CMAKE_CURRENT_BINARY_DIR@/${TEST}-build")
|
||||||
|
file(REMOVE_RECURSE "${binary_dir}")
|
||||||
|
file(MAKE_DIRECTORY "${binary_dir}")
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${CMAKE_COMMAND} "${source_dir}" -G "@CMAKE_TEST_GENERATOR@"
|
||||||
|
WORKING_DIRECTORY "${binary_dir}"
|
||||||
|
RESULT_VARIABLE result
|
||||||
|
)
|
||||||
|
if(result)
|
||||||
|
message(FATAL_ERROR "CMake failed to configure ${TEST}")
|
||||||
|
endif()
|
Loading…
Reference in New Issue