浏览代码

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

Nils Gladitz 12 年之前
父节点
当前提交
2eccdbdc2a
共有 1 个文件被更改,包括 8 次插入1 次删除
  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);
+        }
       }
     }
 }