summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKyle Edwards <kyle.edwards@kitware.com>2023-08-10 20:44:29 (GMT)
committerKyle Edwards <kyle.edwards@kitware.com>2023-08-10 20:46:25 (GMT)
commit3f5a5a5856790107bba5cad6d9d45d1170b986f1 (patch)
tree5fb996f3b8ba14174d44bbf023f4097a4db16d79
parent5ed03aa07a831cc51fefaddac2316d24a62d3137 (diff)
downloadCMake-3f5a5a5856790107bba5cad6d9d45d1170b986f1.zip
CMake-3f5a5a5856790107bba5cad6d9d45d1170b986f1.tar.gz
CMake-3f5a5a5856790107bba5cad6d9d45d1170b986f1.tar.bz2
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.
-rw-r--r--Source/CTest/cmCTestMultiProcessHandler.cxx4
-rw-r--r--Source/CTest/cmCTestRunTest.cxx11
-rw-r--r--Source/CTest/cmCTestRunTest.h5
3 files changed, 11 insertions, 9 deletions
diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx
index 7d22a87..caca04a 100644
--- a/Source/CTest/cmCTestMultiProcessHandler.cxx
+++ b/Source/CTest/cmCTestMultiProcessHandler.cxx
@@ -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()),
diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx
index 563439a..45933a5 100644
--- a/Source/CTest/cmCTestRunTest.cxx
+++ b/Source/CTest/cmCTestRunTest.cxx
@@ -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 << ": "
diff --git a/Source/CTest/cmCTestRunTest.h b/Source/CTest/cmCTestRunTest.h
index fed7296..34f23c4 100644
--- a/Source/CTest/cmCTestRunTest.h
+++ b/Source/CTest/cmCTestRunTest.h
@@ -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; }