Explorar o código

CTest: prevent tests from being inserted in the cost list twice

Nils Gladitz %!s(int64=12) %!d(string=hai) anos
pai
achega
2eccdbdc2a
Modificáronse 1 ficheiros con 8 adicións e 1 borrados
  1. 8 1
      Source/CTest/cmCTestMultiProcessHandler.cxx

+ 8 - 1
Source/CTest/cmCTestMultiProcessHandler.cxx

@@ -441,6 +441,8 @@ int cmCTestMultiProcessHandler::SearchByName(std::string name)
 //---------------------------------------------------------
 void cmCTestMultiProcessHandler::CreateTestCostList()
 {
+  TestSet alreadySortedTests;
+
   std::list<TestSet> priorityStack;
   priorityStack.push_back(TestSet());
   TestSet &topLevel = priorityStack.back();
@@ -456,6 +458,7 @@ void cmCTestMultiProcessHandler::CreateTestCostList()
       {
       //If the test failed last time, it should be run first.
       this->SortedTests.push_back(i->first);
+      alreadySortedTests.insert(i->first);
       }
     else
       {
@@ -513,7 +516,11 @@ void cmCTestMultiProcessHandler::CreateTestCostList()
     for(TestList::const_iterator j = sortedCopy.begin();
       j != sortedCopy.end(); ++j)
       {
-      this->SortedTests.push_back(*j);
+      if(alreadySortedTests.find(*j) == alreadySortedTests.end())
+        {
+        this->SortedTests.push_back(*j);
+        alreadySortedTests.insert(*j);
+        }
       }
     }
 }