diff options
author | Brad King <brad.king@kitware.com> | 2014-01-20 18:46:51 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-01-20 18:46:51 (GMT) |
commit | d4ca30ae150ea83c91bb75527a4152ce87e289e5 (patch) | |
tree | 0ed8a710abd0a8dbded1f330fe456f5aace2d4d1 | |
parent | 392a6553f9fe9908d5d7c363ad013003d965e5e0 (diff) | |
download | CMake-d4ca30ae150ea83c91bb75527a4152ce87e289e5.zip CMake-d4ca30ae150ea83c91bb75527a4152ce87e289e5.tar.gz CMake-d4ca30ae150ea83c91bb75527a4152ce87e289e5.tar.bz2 |
Tests/RunCMake: Add function to run a specified command-line
Add a 'run_cmake_command' function that can be used by tests to run a
given command-line and check the results rather than always running a
CMake configuration process. This can be used in the future to test
'cmake -E' for example.
-rw-r--r-- | Tests/RunCMake/README.rst | 6 | ||||
-rw-r--r-- | Tests/RunCMake/RunCMake.cmake | 37 |
2 files changed, 32 insertions, 11 deletions
diff --git a/Tests/RunCMake/README.rst b/Tests/RunCMake/README.rst index d4159a5..536cff2 100644 --- a/Tests/RunCMake/README.rst +++ b/Tests/RunCMake/README.rst @@ -16,6 +16,12 @@ but do not actually build anything. To add a test: where ``SubTest1`` through ``SubTestN`` are sub-test names each corresponding to an independent CMake run and project configuration. + One may also add calls of the form:: + + run_cmake_command(SubTestI ${CMAKE_COMMAND} ...) + + to fully customize the test case command-line. + 4. Create file ``<Test>/CMakeLists.txt`` in the directory containing:: cmake_minimum_required(...) diff --git a/Tests/RunCMake/RunCMake.cmake b/Tests/RunCMake/RunCMake.cmake index 5c7c05c..1d1c523 100644 --- a/Tests/RunCMake/RunCMake.cmake +++ b/Tests/RunCMake/RunCMake.cmake @@ -39,17 +39,27 @@ function(run_cmake test) if(APPLE) list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_POLICY_DEFAULT_CMP0025=NEW) endif() - execute_process( - COMMAND ${CMAKE_COMMAND} "${RunCMake_TEST_SOURCE_DIR}" - -G "${RunCMake_GENERATOR}" - -T "${RunCMake_GENERATOR_TOOLSET}" - -DRunCMake_TEST=${test} - ${RunCMake_TEST_OPTIONS} - WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}" - OUTPUT_VARIABLE actual_stdout - ERROR_VARIABLE actual_stderr - RESULT_VARIABLE actual_result - ) + if(RunCMake_TEST_COMMAND) + execute_process( + COMMAND ${RunCMake_TEST_COMMAND} + WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}" + OUTPUT_VARIABLE actual_stdout + ERROR_VARIABLE actual_stderr + RESULT_VARIABLE actual_result + ) + else() + execute_process( + COMMAND ${CMAKE_COMMAND} "${RunCMake_TEST_SOURCE_DIR}" + -G "${RunCMake_GENERATOR}" + -T "${RunCMake_GENERATOR_TOOLSET}" + -DRunCMake_TEST=${test} + ${RunCMake_TEST_OPTIONS} + WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}" + OUTPUT_VARIABLE actual_stdout + ERROR_VARIABLE actual_stderr + RESULT_VARIABLE actual_result + ) + endif() set(msg "") if(NOT "${actual_result}" STREQUAL "${expect_result}") set(msg "${msg}Result is [${actual_result}], not [${expect_result}].\n") @@ -86,3 +96,8 @@ function(run_cmake test) message(STATUS "${test} - PASSED") endif() endfunction() + +function(run_cmake_command test) + set(RunCMake_TEST_COMMAND "${ARGN}") + run_cmake(${test}) +endfunction() |