summaryrefslogtreecommitdiffstats
path: root/cmake/tests/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/tests/CMakeLists.txt')
-rw-r--r--cmake/tests/CMakeLists.txt58
1 files changed, 40 insertions, 18 deletions
diff --git a/cmake/tests/CMakeLists.txt b/cmake/tests/CMakeLists.txt
index c7f7baafe1..6b53c9703d 100644
--- a/cmake/tests/CMakeLists.txt
+++ b/cmake/tests/CMakeLists.txt
@@ -1,26 +1,48 @@
-# These macros are taken from the ECM:
+# These macros are inspired by ECM:
# a macro for tests that have a simple format where the name matches the
# directory and project
-macro(add_test_variant NAME BASE COMMAND)
- string(REPLACE "." "/" src_dir "${BASE}")
- string(REPLACE "." "/" build_dir "${NAME}")
- string(REGEX REPLACE "[^.]*\\." "" proj "${NAME}")
- add_test("cmake_${NAME}" ${CMAKE_CTEST_COMMAND}
- --build-and-test
+
+# The following macros will produce tests that generate the build
+# system for the test project, build it and then run its tests.
+macro(add_cmake_test_generate_build_run_variant name base command)
+ string(REPLACE "." "/" src_dir "${base}")
+ string(REPLACE "." "/" build_dir "${name}")
+ string(REGEX REPLACE "[^.]*\\." "" proj "${name}")
+ add_test(NAME "cmake_${name}"
+ COMMAND ${CMAKE_CTEST_COMMAND}
+ --build-and-test
+ "${CMAKE_CURRENT_SOURCE_DIR}/${src_dir}"
+ "${CMAKE_CURRENT_BINARY_DIR}/${build_dir}"
+ --build-two-config
+ --build-generator ${CMAKE_GENERATOR}
+ --build-makeprogram ${CMAKE_MAKE_PROGRAM}
+ --build-project ${proj}
+ ${${name}_EXTRA_OPTIONS}
+ --test-command ${command} ${ARGN})
+endmacro()
+
+macro(add_cmake_test_generate_build_run name)
+ add_cmake_test_generate_build_run_variant("${name}" "${name}" ${ARGN})
+endmacro()
+
+# The following macros will produce tests that just run cmake
+# to generate the build system for the test project.
+macro(add_cmake_test_generate_variant name base)
+ string(REPLACE "." "/" src_dir "${base}")
+ string(REPLACE "." "/" build_dir "${name}")
+ file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${build_dir}")
+ add_test(NAME "cmake_${name}"
+ COMMAND "${CMAKE_COMMAND}" "-G${CMAKE_GENERATOR}"
+ "-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}"
+ ${${name}_EXTRA_OPTIONS}
"${CMAKE_CURRENT_SOURCE_DIR}/${src_dir}"
- "${CMAKE_CURRENT_BINARY_DIR}/${build_dir}"
- --build-two-config
- --build-generator ${CMAKE_GENERATOR}
- --build-makeprogram ${CMAKE_MAKE_PROGRAM}
- --build-project ${proj}
- ${${NAME}_EXTRA_OPTIONS}
- --test-command ${COMMAND} ${ARGN})
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${build_dir}")
endmacro()
-macro(add_test_macro NAME)
- add_test_variant("${NAME}" "${NAME}" ${ARGN})
+macro(add_cmake_test_generate name)
+ add_cmake_test_generate_variant("${name}" "${name}")
endmacro()
-add_test_macro(features features)
-add_test_macro(qt_make_output_file qt_make_output_file)
+add_cmake_test_generate(features)
+add_cmake_test_generate(qt_make_output_file)