Explorar el Código

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.
Brad King hace 11 años
padre
commit
d4ca30ae15
Se han modificado 2 ficheros con 32 adiciones y 11 borrados
  1. 6 0
      Tests/RunCMake/README.rst
  2. 26 11
      Tests/RunCMake/RunCMake.cmake

+ 6 - 0
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(...)

+ 26 - 11
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()