diff options
author | Alexander Neundorf <neundorf@kde.org> | 2009-07-12 08:51:51 (GMT) |
---|---|---|
committer | Alexander Neundorf <neundorf@kde.org> | 2009-07-12 08:51:51 (GMT) |
commit | 7048373296482ee38dc7336b3d96df4dc98bcb1b (patch) | |
tree | 843e0b1704e2b1979684c1794fdb316a20dade27 | |
parent | 2a750cacd62e6c84cb2120a9833e0cafd1b8e338 (diff) | |
download | CMake-7048373296482ee38dc7336b3d96df4dc98bcb1b.zip CMake-7048373296482ee38dc7336b3d96df4dc98bcb1b.tar.gz CMake-7048373296482ee38dc7336b3d96df4dc98bcb1b.tar.bz2 |
STYLE: don't load CMakeDetermineSystem and CMakeSystemSpecific directly from
cmCTestScriptHandler, but have it load the new script CTestScriptMode.cmake
-> that makes it more flexible, also add a simple test that the system name
has been determined correctly
Alex
-rw-r--r-- | Modules/CTestScriptMode.cmake | 10 | ||||
-rw-r--r-- | Source/CTest/cmCTestScriptHandler.cxx | 18 | ||||
-rw-r--r-- | Tests/CMakeLists.txt | 7 | ||||
-rw-r--r-- | Tests/CTestScriptMode/CTestTestScriptMode.cmake.in | 14 |
4 files changed, 36 insertions, 13 deletions
diff --git a/Modules/CTestScriptMode.cmake b/Modules/CTestScriptMode.cmake new file mode 100644 index 0000000..146bdf1 --- /dev/null +++ b/Modules/CTestScriptMode.cmake @@ -0,0 +1,10 @@ +# This file is read by ctest in script mode (-S) + +# Determine the current system, so this information can be used +# in ctest scripts +include(CMakeDetermineSystem) + +# Also load the system specific file, which sets up e.g. the search paths. +# This makes the FIND_XXX() calls work much better +include(CMakeSystemSpecificInformation) + diff --git a/Source/CTest/cmCTestScriptHandler.cxx b/Source/CTest/cmCTestScriptHandler.cxx index 89c98c6..12e7005 100644 --- a/Source/CTest/cmCTestScriptHandler.cxx +++ b/Source/CTest/cmCTestScriptHandler.cxx @@ -418,12 +418,13 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg) this->Makefile->AddFunctionBlocker(f); - /* Execute CMakeDetermineSystem and CMakeSystemSpecificInformation, so + /* Execute CTestScriptMode.cmake, which loads CMakeDetermineSystem and + CMakeSystemSpecificInformation, so that variables like CMAKE_SYSTEM and also the search paths for libraries, header and executables are set correctly and can be used. Makes new-style ctest scripting easier. */ std::string systemFile = - this->Makefile->GetModulesFile("CMakeDetermineSystem.cmake"); + this->Makefile->GetModulesFile("CTestScriptMode.cmake"); if (!this->Makefile->ReadListFile(0, systemFile.c_str()) || cmSystemTools::GetErrorOccuredFlag()) { @@ -432,16 +433,6 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg) return 2; } - systemFile = - this->Makefile->GetModulesFile("CMakeSystemSpecificInformation.cmake"); - if (!this->Makefile->ReadListFile(0, systemFile.c_str()) || - cmSystemTools::GetErrorOccuredFlag()) - { - cmCTestLog(this->CTest, ERROR_MESSAGE, "Error in read:" - << systemFile.c_str() << "\n"); - return 2; - } - // finally read in the script if (!this->Makefile->ReadListFile(0, script.c_str()) || cmSystemTools::GetErrorOccuredFlag()) @@ -966,7 +957,8 @@ int cmCTestScriptHandler::RunConfigurationDashboard() } cmCTestLog(this->CTest, ERROR_MESSAGE, "Unable to run ctest:" << std::endl - << output.c_str() << std::endl); + << "command: " << command.c_str() << std::endl + << "output: " << output.c_str() << std::endl); if (!res) { return 11; diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 83e11e3..8982ac3 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -877,6 +877,13 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/BundleGeneratorTest") ENDIF(APPLE AND CTEST_TEST_CPACK) + # A simple test for ctest in script mode + CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CTestScriptMode/CTestTestScriptMode.cmake.in" + "${CMake_BINARY_DIR}/Tests/CTestScriptMode/CTestTestScriptMode.cmake" @ONLY) + ADD_TEST(CTest.ScriptMode ${CMAKE_CTEST_COMMAND} + -S "${CMake_BINARY_DIR}/Tests/CTestScriptMode/CTestTestScriptMode.cmake" + ) + SET(CTEST_TEST_UPDATE 1) IF(CTEST_TEST_UPDATE) # Test CTest Update with Subversion diff --git a/Tests/CTestScriptMode/CTestTestScriptMode.cmake.in b/Tests/CTestScriptMode/CTestTestScriptMode.cmake.in new file mode 100644 index 0000000..0c4394f --- /dev/null +++ b/Tests/CTestScriptMode/CTestTestScriptMode.cmake.in @@ -0,0 +1,14 @@ +# This script will be executed with ctest -S + +# Check that the system name is determined correctly: +set(CMAKE_CMAKE_SYSTEM_NAME "@CMAKE_SYSTEM_NAME@") + +if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "${CMAKE_CMAKE_SYSTEM_NAME}") + message(FATAL_ERROR "Error: CMAKE_SYSTEM_NAME is \"${CMAKE_SYSTEM_NAME}\", but should be \"@CMAKE_SYSTEM_NAME@\"") +endif(NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "${CMAKE_CMAKE_SYSTEM_NAME}") + +# this seems to be necessary, otherwise ctest complains that these +# variables are not set: +set(CTEST_COMMAND "\"@CMAKE_CTEST_COMMAND@\"") +set(CTEST_SOURCE_DIRECTORY "@CMake_SOURCE_DIR@/Tests/CTestScriptMode/") +set(CTEST_BINARY_DIRECTORY "@CMake_BINARY_DIR@/Tests/CTestScriptMode/") |