mirror of
https://github.com/Kitware/CMake.git
synced 2026-03-09 18:09:02 -05:00
cmCTestRunTest::StartFailure(): Add total argument
This function was being called when TotalNumberOfTests hadn't been initialized, resulting in undefined output. It's not clear why this was never apparent until now. Accept a total argument to ensure it's initialized.
This commit is contained in:
@@ -230,14 +230,14 @@ bool cmCTestMultiProcessHandler::StartTestProcess(int test)
|
||||
e << "\n";
|
||||
}
|
||||
e << "Resource spec file:\n\n " << this->TestHandler->ResourceSpecFile;
|
||||
cmCTestRunTest::StartFailure(std::move(testRun), e.str(),
|
||||
cmCTestRunTest::StartFailure(std::move(testRun), this->Total, e.str(),
|
||||
"Insufficient resources");
|
||||
return false;
|
||||
}
|
||||
|
||||
cmWorkingDirectory workdir(this->Properties[test]->Directory);
|
||||
if (workdir.Failed()) {
|
||||
cmCTestRunTest::StartFailure(std::move(testRun),
|
||||
cmCTestRunTest::StartFailure(std::move(testRun), this->Total,
|
||||
"Failed to change working directory to " +
|
||||
this->Properties[test]->Directory + " : " +
|
||||
std::strerror(workdir.GetLastResult()),
|
||||
|
||||
@@ -372,7 +372,8 @@ bool cmCTestRunTest::StartAgain(std::unique_ptr<cmCTestRunTest> runner,
|
||||
// change to tests directory
|
||||
cmWorkingDirectory workdir(testRun->TestProperties->Directory);
|
||||
if (workdir.Failed()) {
|
||||
testRun->StartFailure("Failed to change working directory to " +
|
||||
testRun->StartFailure(testRun->TotalNumberOfTests,
|
||||
"Failed to change working directory to " +
|
||||
testRun->TestProperties->Directory + " : " +
|
||||
std::strerror(workdir.GetLastResult()),
|
||||
"Failed to change working directory");
|
||||
@@ -437,25 +438,25 @@ void cmCTestRunTest::MemCheckPostProcess()
|
||||
}
|
||||
|
||||
void cmCTestRunTest::StartFailure(std::unique_ptr<cmCTestRunTest> runner,
|
||||
std::string const& output,
|
||||
size_t total, std::string const& output,
|
||||
std::string const& detail)
|
||||
{
|
||||
auto* testRun = runner.get();
|
||||
|
||||
testRun->TestProcess = cm::make_unique<cmProcess>(std::move(runner));
|
||||
testRun->StartFailure(output, detail);
|
||||
testRun->StartFailure(total, output, detail);
|
||||
|
||||
testRun->FinalizeTest(false);
|
||||
}
|
||||
|
||||
void cmCTestRunTest::StartFailure(std::string const& output,
|
||||
void cmCTestRunTest::StartFailure(size_t total, std::string const& output,
|
||||
std::string const& detail)
|
||||
{
|
||||
// Still need to log the Start message so the test summary records our
|
||||
// attempt to start this test
|
||||
if (!this->CTest->GetTestProgressOutput()) {
|
||||
cmCTestLog(this->CTest, HANDLER_OUTPUT,
|
||||
std::setw(2 * getNumWidth(this->TotalNumberOfTests) + 8)
|
||||
std::setw(2 * getNumWidth(total) + 8)
|
||||
<< "Start "
|
||||
<< std::setw(getNumWidth(this->TestHandler->GetMaxIndex()))
|
||||
<< this->TestProperties->Index << ": "
|
||||
|
||||
@@ -68,7 +68,7 @@ public:
|
||||
size_t completed);
|
||||
|
||||
static void StartFailure(std::unique_ptr<cmCTestRunTest> runner,
|
||||
std::string const& output,
|
||||
size_t total, std::string const& output,
|
||||
std::string const& detail);
|
||||
|
||||
struct EndTestResult
|
||||
@@ -86,7 +86,8 @@ public:
|
||||
|
||||
void ComputeWeightedCost();
|
||||
|
||||
void StartFailure(std::string const& output, std::string const& detail);
|
||||
void StartFailure(size_t total, std::string const& output,
|
||||
std::string const& detail);
|
||||
|
||||
cmCTest* GetCTest() const { return this->CTest; }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user