diff options
author | Zach Mullen <zach.mullen@kitware.com> | 2010-03-01 16:59:00 (GMT) |
---|---|---|
committer | Zach Mullen <zach.mullen@kitware.com> | 2010-03-01 16:59:00 (GMT) |
commit | 348f6c4d8cd0945a61c070b5094bc89518cc27e0 (patch) | |
tree | 4afbd885f169c1f160545fdc7a1f808056d009fd /Source | |
parent | 09e748c69a31e54ad4ceb16229f4caa987d61d3b (diff) | |
download | CMake-348f6c4d8cd0945a61c070b5094bc89518cc27e0.zip CMake-348f6c4d8cd0945a61c070b5094bc89518cc27e0.tar.gz CMake-348f6c4d8cd0945a61c070b5094bc89518cc27e0.tar.bz2 |
If tests failed on the last run, have them run first next time
Diffstat (limited to 'Source')
-rw-r--r-- | Source/CTest/cmCTestMultiProcessHandler.cxx | 33 | ||||
-rw-r--r-- | Source/CTest/cmCTestMultiProcessHandler.h | 3 |
2 files changed, 33 insertions, 3 deletions
diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index 31aff8b..b29e4e3 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -16,6 +16,7 @@ #include "cmSystemTools.h" #include <stdlib.h> #include <stack> +#include <float.h> cmCTestMultiProcessHandler::cmCTestMultiProcessHandler() { @@ -298,6 +299,7 @@ void cmCTestMultiProcessHandler::UpdateCostData() std::string line; while(std::getline(fin, line)) { + if(line == "---") break; std::vector<cmsys::String> parts = cmSystemTools::SplitString(line.c_str(), ' '); //Format: <name> <previous_runs> <avg_cost> @@ -331,6 +333,14 @@ void cmCTestMultiProcessHandler::UpdateCostData() fout << i->second->Name << " " << i->second->PreviousRuns << " " << i->second->Cost << "\n"; } + + // Write list of failed tests + fout << "---\n"; + for(std::vector<cmStdString>::iterator i = this->Failed->begin(); + i != this->Failed->end(); ++i) + { + fout << i->c_str() << "\n"; + } fout.close(); cmSystemTools::RenameFile(tmpout.c_str(), fname.c_str()); } @@ -347,11 +357,13 @@ void cmCTestMultiProcessHandler::ReadCostData() std::string line; while(std::getline(fin, line)) { + if(line == "---") break; + std::vector<cmsys::String> parts = cmSystemTools::SplitString(line.c_str(), ' '); // Probably an older version of the file, will be fixed next run - if(parts.size() < 3) break; + if(parts.size() < 3) return; std::string name = parts[0]; int prev = atoi(parts[1].c_str()); @@ -366,6 +378,14 @@ void cmCTestMultiProcessHandler::ReadCostData() this->Properties[index]->Cost = cost; } } + // Next part of the file is the failed tests + while(std::getline(fin, line)) + { + if(line != "") + { + this->LastTestsFailed.push_back(line); + } + } fin.close(); } } @@ -392,7 +412,16 @@ void cmCTestMultiProcessHandler::CreateTestCostList() for(TestMap::iterator i = this->Tests.begin(); i != this->Tests.end(); ++i) { - this->TestCosts[this->Properties[i->first]->Cost].insert(i->first); + std::string name = this->Properties[i->first]->Name; + if(std::find(this->LastTestsFailed.begin(), this->LastTestsFailed.end(), + name) != this->LastTestsFailed.end()) + { + this->TestCosts[FLT_MAX].insert(i->first); + } + else + { + this->TestCosts[this->Properties[i->first]->Cost].insert(i->first); + } } } diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h index 6136103..ebec6c7 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.h +++ b/Source/CTest/cmCTestMultiProcessHandler.h @@ -56,7 +56,6 @@ public: cmCTestTestHandler * GetTestHandler() { return this->TestHandler; } protected: - cmCTest* CTest; // Start the next test or tests as many as are allowed by // ParallelLevel void StartNextTests(); @@ -99,10 +98,12 @@ protected: std::map<int, cmStdString> TestOutput; std::vector<cmStdString>* Passed; std::vector<cmStdString>* Failed; + std::vector<std::string> LastTestsFailed; std::vector<cmCTestTestHandler::cmCTestTestResult>* TestResults; size_t ParallelLevel; // max number of process that can be run at once std::set<cmCTestRunTest*> RunningTests; // current running tests cmCTestTestHandler * TestHandler; + cmCTest* CTest; }; #endif |