summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Neundorf <neundorf@kde.org>2009-07-12 08:51:51 (GMT)
committerAlexander Neundorf <neundorf@kde.org>2009-07-12 08:51:51 (GMT)
commit7048373296482ee38dc7336b3d96df4dc98bcb1b (patch)
tree843e0b1704e2b1979684c1794fdb316a20dade27
parent2a750cacd62e6c84cb2120a9833e0cafd1b8e338 (diff)
downloadCMake-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.cmake10
-rw-r--r--Source/CTest/cmCTestScriptHandler.cxx18
-rw-r--r--Tests/CMakeLists.txt7
-rw-r--r--Tests/CTestScriptMode/CTestTestScriptMode.cmake.in14
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/")