CTest: Fix regression in handling of a RUN_SERIAL test that fails
Refactoring in commit v3.4.0-rc1~390^2~1 (cmCTestMultiProcessHandler: Refactor RUN_SERIAL implementation, 2015-06-01) forgot to update a code path for cleaning up after a failed RUN_SERIAL test. This causes an infinite loop after a RUN_SERIAL test fails. Fix it and add a test.
This commit is contained in:
parent
498db9b9bc
commit
e61973e1ab
|
@ -198,6 +198,10 @@ void cmCTestMultiProcessHandler::UnlockResources(int index)
|
|||
{
|
||||
this->LockedResources.erase(*i);
|
||||
}
|
||||
if (this->Properties[index]->RunSerial)
|
||||
{
|
||||
this->SerialTestRunning = false;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
|
@ -451,11 +455,6 @@ bool cmCTestMultiProcessHandler::CheckOutput()
|
|||
this->WriteCheckpoint(test);
|
||||
this->UnlockResources(test);
|
||||
this->RunningCount -= GetProcessorsUsed(test);
|
||||
if (this->Properties[test]->RunSerial)
|
||||
{
|
||||
this->SerialTestRunning = false;
|
||||
}
|
||||
|
||||
delete p;
|
||||
}
|
||||
return true;
|
||||
|
|
|
@ -78,6 +78,21 @@ endfunction()
|
|||
|
||||
run_LabelCount()
|
||||
|
||||
function(run_SerialFailed)
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/SerialFailed)
|
||||
set(RunCMake_TEST_NO_CLEAN 1)
|
||||
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
||||
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
||||
file(WRITE "${RunCMake_TEST_BINARY_DIR}/CTestTestfile.cmake" "
|
||||
add_test(NoSuchCommand no_such_command)
|
||||
set_tests_properties(NoSuchCommand PROPERTIES RUN_SERIAL ON)
|
||||
add_test(Echo \"${CMAKE_COMMAND}\" -E echo \"EchoTest\")
|
||||
")
|
||||
|
||||
run_cmake_command(SerialFailed ${CMAKE_CTEST_COMMAND} -V)
|
||||
endfunction()
|
||||
run_SerialFailed()
|
||||
|
||||
function(run_TestLoad name load)
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/TestLoad)
|
||||
set(RunCMake_TEST_NO_CLEAN 1)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
8
|
|
@ -0,0 +1 @@
|
|||
Unable to find executable: no_such_command
|
|
@ -0,0 +1,10 @@
|
|||
Could not find executable no_such_command
|
||||
.*
|
||||
2/2 Test #2: Echo ............................. Passed +[0-9.]+ sec
|
||||
+
|
||||
50% tests passed, 1 tests failed out of 2
|
||||
+
|
||||
Total Test time \(real\) = +[0-9.]+ sec
|
||||
+
|
||||
The following tests FAILED:
|
||||
[ ]+1 - NoSuchCommand \(Not Run\)$
|
Loading…
Reference in New Issue