ctest_build: Do not crash on bad generator name
If creation of the global generator fails, return early with an error message instead of trying to use the generator and crashing. Add a CTestTestBadGenerator test to cover this case. Reported-by: Mathieu Malaterre <malat@debian.org> Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=747306
This commit is contained in:
parent
9cb4677509
commit
5411128645
|
@ -113,6 +113,15 @@ cmCTestGenericHandler* cmCTestBuildCommand::InitializeHandler()
|
|||
this->GlobalGenerator =
|
||||
this->Makefile->GetCMakeInstance()->CreateGlobalGenerator(
|
||||
cmakeGeneratorName);
|
||||
if(!this->GlobalGenerator)
|
||||
{
|
||||
std::string e = "could not create generator named \"";
|
||||
e += cmakeGeneratorName;
|
||||
e += "\"";
|
||||
this->Makefile->IssueMessage(cmake::FATAL_ERROR, e);
|
||||
cmSystemTools::SetFatalErrorOccured();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if(strlen(cmakeBuildConfiguration) == 0)
|
||||
{
|
||||
|
|
|
@ -2244,6 +2244,18 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
|
|||
set_tests_properties(CTestTestBadExe PROPERTIES
|
||||
PASS_REGULAR_EXPRESSION "${CTestTestBadExe_REGEX}")
|
||||
|
||||
configure_file(
|
||||
"${CMake_SOURCE_DIR}/Tests/CTestTestBadGenerator/test.cmake.in"
|
||||
"${CMake_BINARY_DIR}/Tests/CTestTestBadGenerator/test.cmake"
|
||||
@ONLY ESCAPE_QUOTES)
|
||||
add_test(CTestTestBadGenerator ${CMAKE_CTEST_COMMAND}
|
||||
-C "\${CTestTest_CONFIG}"
|
||||
-S "${CMake_BINARY_DIR}/Tests/CTestTestBadGenerator/test.cmake" -V
|
||||
--output-log "${CMake_BINARY_DIR}/Tests/CTestTestBadGenerator/testOutput.log"
|
||||
)
|
||||
set_property(TEST CTestTestBadGenerator PROPERTY
|
||||
PASS_REGULAR_EXPRESSION "could not create generator named \"Bad Generator\"")
|
||||
|
||||
configure_file(
|
||||
"${CMake_SOURCE_DIR}/Tests/CTestTestParallel/test.cmake.in"
|
||||
"${CMake_BINARY_DIR}/Tests/CTestTestParallel/test.cmake"
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
cmake_minimum_required(VERSION 3.0)
|
||||
project(CTestTestDepends NONE)
|
||||
include(CTest)
|
|
@ -0,0 +1,7 @@
|
|||
set (CTEST_PROJECT_NAME "CTestTestBadGenerator")
|
||||
set (CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
|
||||
set (CTEST_DART_SERVER_VERSION "2")
|
||||
set(CTEST_DROP_METHOD "http")
|
||||
set(CTEST_DROP_SITE "www.cdash.org")
|
||||
set(CTEST_DROP_LOCATION "/CDash/submit.php?project=PublicDashboard")
|
||||
set(CTEST_DROP_SITE_CDASH TRUE)
|
|
@ -0,0 +1,20 @@
|
|||
cmake_minimum_required(VERSION 3.0)
|
||||
|
||||
# Settings:
|
||||
set(CTEST_DASHBOARD_ROOT "@CMake_BINARY_DIR@/Tests/CTestTest")
|
||||
set(CTEST_SITE "@SITE@")
|
||||
set(CTEST_BUILD_NAME "CTestTest-@BUILDNAME@-Depends")
|
||||
|
||||
set(CTEST_SOURCE_DIRECTORY "@CMake_SOURCE_DIR@/Tests/CTestTestBadGenerator")
|
||||
set(CTEST_BINARY_DIRECTORY "@CMake_BINARY_DIR@/Tests/CTestTestBadGenerator")
|
||||
set(CTEST_CVS_COMMAND "@CVSCOMMAND@")
|
||||
set(CTEST_CMAKE_GENERATOR "Bad Generator")
|
||||
set(CTEST_CMAKE_GENERATOR_TOOLSET "")
|
||||
set(CTEST_BUILD_CONFIGURATION "$ENV{CMAKE_CONFIG_TYPE}")
|
||||
set(CTEST_COVERAGE_COMMAND "@COVERAGE_COMMAND@")
|
||||
set(CTEST_NOTES_FILES "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}")
|
||||
|
||||
CTEST_START(Experimental)
|
||||
CTEST_CONFIGURE(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
|
||||
CTEST_BUILD(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
|
||||
CTEST_TEST(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
|
Loading…
Reference in New Issue