From 9a20abf04a7fc11b53beb545f1555fe9815ae09c Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 11 Jan 2012 17:04:04 -0500 Subject: [PATCH] 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. --- Tests/CMakeLists.txt | 1 + Tests/CMakeOnly/CMakeLists.txt | 9 +++++++++ Tests/CMakeOnly/Test.cmake.in | 12 ++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 Tests/CMakeOnly/CMakeLists.txt create mode 100644 Tests/CMakeOnly/Test.cmake.in diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 00c9ac726..badc76b66 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -47,6 +47,7 @@ IF(BUILD_TESTING) ENDIF() ADD_SUBDIRECTORY(CMakeLib) + ADD_SUBDIRECTORY(CMakeOnly) ADD_SUBDIRECTORY(FindPackageModeMakefileTest) diff --git a/Tests/CMakeOnly/CMakeLists.txt b/Tests/CMakeOnly/CMakeLists.txt new file mode 100644 index 000000000..d32e7be24 --- /dev/null +++ b/Tests/CMakeOnly/CMakeLists.txt @@ -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() diff --git a/Tests/CMakeOnly/Test.cmake.in b/Tests/CMakeOnly/Test.cmake.in new file mode 100644 index 000000000..aa2d09374 --- /dev/null +++ b/Tests/CMakeOnly/Test.cmake.in @@ -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()