CTest: handle dependent and non dependent test requirements equally

This commit is contained in:
Nils Gladitz 2013-10-17 22:10:35 +02:00
parent 8f2b0c3307
commit 44017a4767
1 changed files with 9 additions and 40 deletions

View File

@ -210,30 +210,7 @@ bool cmCTestMultiProcessHandler::StartTest(int test)
// and we don't want to be iterating a list while removing from it // and we don't want to be iterating a list while removing from it
TestSet depends = this->Tests[test]; TestSet depends = this->Tests[test];
size_t totalDepends = depends.size(); size_t totalDepends = depends.size();
if(totalDepends)
{
for(TestSet::const_iterator i = depends.begin();
i != depends.end(); ++i)
{
// if the test is not already running then start it
if(!this->TestRunningMap[*i])
{
// this test might be finished, but since
// this is a copy of the depend map we might
// still have it
if(!this->TestFinishMap[*i])
{
// only start one test in this function
return this->StartTest(*i);
}
else
{
// the depend has been and finished
totalDepends--;
}
}
}
}
// if there are no depends left then run this test // if there are no depends left then run this test
if(totalDepends == 0) if(totalDepends == 0)
{ {
@ -262,25 +239,17 @@ void cmCTestMultiProcessHandler::StartNextTests()
TestList copy = this->SortedTests; TestList copy = this->SortedTests;
for(TestList::iterator test = copy.begin(); test != copy.end(); ++test) for(TestList::iterator test = copy.begin(); test != copy.end(); ++test)
{ {
//in case this test has already been started due to dependency
if(this->TestRunningMap[*test] || this->TestFinishMap[*test])
{
continue;
}
size_t processors = GetProcessorsUsed(*test); size_t processors = GetProcessorsUsed(*test);
if(processors > numToStart)
if(processors <= numToStart && this->StartTest(*test))
{ {
return; if(this->StopTimePassed)
{
return;
}
numToStart -= processors;
} }
if(this->StartTest(*test)) else if(numToStart == 0)
{
if(this->StopTimePassed)
{
return;
}
numToStart -= processors;
}
if(numToStart == 0)
{ {
return; return;
} }