1
0
Эх сурвалжийг харах

CTest: handle dependent and non dependent test requirements equally

Nils Gladitz 12 жил өмнө
parent
commit
44017a4767

+ 9 - 40
Source/CTest/cmCTestMultiProcessHandler.cxx

@@ -210,30 +210,7 @@ bool cmCTestMultiProcessHandler::StartTest(int test)
   // and we don't want to be iterating a list while removing from it
   TestSet depends = this->Tests[test];
   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(totalDepends == 0)
     {
@@ -262,25 +239,17 @@ void cmCTestMultiProcessHandler::StartNextTests()
   TestList copy = this->SortedTests;
   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);
-    if(processors > numToStart)
-      {
-      return;
-      }
-    if(this->StartTest(*test))
+
+    if(processors <= numToStart && this->StartTest(*test))
       {
-      if(this->StopTimePassed)
-        {
-        return;
-        }
-      numToStart -= processors;
+        if(this->StopTimePassed)
+          {
+          return;
+          }
+        numToStart -= processors;
       }
-    if(numToStart == 0)
+    else if(numToStart == 0)
       {
       return;
       }