From d4ca30ae150ea83c91bb75527a4152ce87e289e5 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 20 Jan 2014 13:46:51 -0500 Subject: 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. --- Tests/RunCMake/README.rst | 6 ++++++ 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 ``/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() -- cgit v0.12