فهرست منبع

BUG: Fix new 'testing' test for CMake releases

The recent change of the 'testing' test to actually drive the tests
within it does not work on Windows with released CMakes 2.6.2 and lower
if no configuration is given to ctest with a -C option.  This works
around the problem by detecting the case and changing the empty
configuration to Debug.
Brad King 17 سال پیش
والد
کامیت
64f419c0e8
2فایلهای تغییر یافته به همراه20 افزوده شده و 0 حذف شده
  1. 5 0
      Tests/CMakeLists.txt
  2. 15 0
      Tests/EnforceConfig.cmake

+ 5 - 0
Tests/CMakeLists.txt

@@ -13,6 +13,11 @@ MACRO(ADD_TEST_MACRO NAME COMMAND)
   LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${NAME}")
 ENDMACRO(ADD_TEST_MACRO)
 
+# Make sure the 'testing' test gets a proper configuration.
+SET_DIRECTORY_PROPERTIES(PROPERTIES
+  TEST_INCLUDE_FILE "${CMake_SOURCE_DIR}/Tests/EnforceConfig.cmake"
+  )
+
 # Testing
 IF(BUILD_TESTING)
   # Collect a list of all test build directories.

+ 15 - 0
Tests/EnforceConfig.cmake

@@ -0,0 +1,15 @@
+# Older versions of CMake do not support an empty configuration name in
+# CTEST_CONFIGURATION_TYPE for the 'testing' test.
+SET(CONFIG_REQUIRED)
+IF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.6)
+  SET(CONFIG_REQUIRED 1)
+ELSE("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.6)
+  IF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" STREQUAL 2.6)
+    IF("${CMAKE_PATCH_VERSION}" LESS 3)
+      SET(CONFIG_REQUIRED 1)
+    ENDIF("${CMAKE_PATCH_VERSION}" LESS 3)
+  ENDIF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" STREQUAL 2.6)
+ENDIF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.6)
+IF(NOT CTEST_CONFIGURATION_TYPE AND CONFIG_REQUIRED)
+  SET(CTEST_CONFIGURATION_TYPE Debug)
+ENDIF(NOT CTEST_CONFIGURATION_TYPE AND CONFIG_REQUIRED)