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.
This commit is contained in:
Brad King 2014-01-20 13:46:51 -05:00
parent 392a6553f9
commit d4ca30ae15
2 changed files with 32 additions and 11 deletions

View File

@ -16,6 +16,12 @@ but do not actually build anything. To add a test:
where ``SubTest1`` through ``SubTestN`` are sub-test names each where ``SubTest1`` through ``SubTestN`` are sub-test names each
corresponding to an independent CMake run and project configuration. 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:: 4. Create file ``<Test>/CMakeLists.txt`` in the directory containing::
cmake_minimum_required(...) cmake_minimum_required(...)

View File

@ -39,6 +39,15 @@ function(run_cmake test)
if(APPLE) if(APPLE)
list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_POLICY_DEFAULT_CMP0025=NEW) list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_POLICY_DEFAULT_CMP0025=NEW)
endif() endif()
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( execute_process(
COMMAND ${CMAKE_COMMAND} "${RunCMake_TEST_SOURCE_DIR}" COMMAND ${CMAKE_COMMAND} "${RunCMake_TEST_SOURCE_DIR}"
-G "${RunCMake_GENERATOR}" -G "${RunCMake_GENERATOR}"
@ -50,6 +59,7 @@ function(run_cmake test)
ERROR_VARIABLE actual_stderr ERROR_VARIABLE actual_stderr
RESULT_VARIABLE actual_result RESULT_VARIABLE actual_result
) )
endif()
set(msg "") set(msg "")
if(NOT "${actual_result}" STREQUAL "${expect_result}") if(NOT "${actual_result}" STREQUAL "${expect_result}")
set(msg "${msg}Result is [${actual_result}], not [${expect_result}].\n") set(msg "${msg}Result is [${actual_result}], not [${expect_result}].\n")
@ -86,3 +96,8 @@ function(run_cmake test)
message(STATUS "${test} - PASSED") message(STATUS "${test} - PASSED")
endif() endif()
endfunction() endfunction()
function(run_cmake_command test)
set(RunCMake_TEST_COMMAND "${ARGN}")
run_cmake(${test})
endfunction()