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:
parent
2a750cacd6
commit
7048373296
10
Modules/CTestScriptMode.cmake
Normal file
10
Modules/CTestScriptMode.cmake
Normal 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)
|
||||||
|
|
@ -418,12 +418,13 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg)
|
|||||||
this->Makefile->AddFunctionBlocker(f);
|
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,
|
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
|
header and executables are set correctly and can be used. Makes new-style
|
||||||
ctest scripting easier. */
|
ctest scripting easier. */
|
||||||
std::string systemFile =
|
std::string systemFile =
|
||||||
this->Makefile->GetModulesFile("CMakeDetermineSystem.cmake");
|
this->Makefile->GetModulesFile("CTestScriptMode.cmake");
|
||||||
if (!this->Makefile->ReadListFile(0, systemFile.c_str()) ||
|
if (!this->Makefile->ReadListFile(0, systemFile.c_str()) ||
|
||||||
cmSystemTools::GetErrorOccuredFlag())
|
cmSystemTools::GetErrorOccuredFlag())
|
||||||
{
|
{
|
||||||
@ -432,16 +433,6 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg)
|
|||||||
return 2;
|
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
|
// finally read in the script
|
||||||
if (!this->Makefile->ReadListFile(0, script.c_str()) ||
|
if (!this->Makefile->ReadListFile(0, script.c_str()) ||
|
||||||
cmSystemTools::GetErrorOccuredFlag())
|
cmSystemTools::GetErrorOccuredFlag())
|
||||||
@ -966,7 +957,8 @@ int cmCTestScriptHandler::RunConfigurationDashboard()
|
|||||||
}
|
}
|
||||||
cmCTestLog(this->CTest, ERROR_MESSAGE,
|
cmCTestLog(this->CTest, ERROR_MESSAGE,
|
||||||
"Unable to run ctest:" << std::endl
|
"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)
|
if (!res)
|
||||||
{
|
{
|
||||||
return 11;
|
return 11;
|
||||||
|
@ -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")
|
LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/BundleGeneratorTest")
|
||||||
ENDIF(APPLE AND CTEST_TEST_CPACK)
|
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)
|
SET(CTEST_TEST_UPDATE 1)
|
||||||
IF(CTEST_TEST_UPDATE)
|
IF(CTEST_TEST_UPDATE)
|
||||||
# Test CTest Update with Subversion
|
# Test CTest Update with Subversion
|
||||||
|
14
Tests/CTestScriptMode/CTestTestScriptMode.cmake.in
Normal file
14
Tests/CTestScriptMode/CTestTestScriptMode.cmake.in
Normal 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/")
|
Loading…
x
Reference in New Issue
Block a user