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
This commit is contained in:
Alexander Neundorf 2009-07-12 04:51:51 -04:00
parent 2a750cacd6
commit 7048373296
4 changed files with 36 additions and 13 deletions

View File

@ -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)

View File

@ -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;

View File

@ -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

View File

@ -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/")