|
|
@@ -2,6 +2,7 @@
|
|
|
file Copyright.txt or https://cmake.org/licensing for details. */
|
|
|
#include "cmCTestRunTest.h"
|
|
|
|
|
|
+#include <algorithm>
|
|
|
#include <chrono>
|
|
|
#include <cstddef> // IWYU pragma: keep
|
|
|
#include <cstdint>
|
|
|
@@ -44,7 +45,9 @@ void cmCTestRunTest::CheckOutput(std::string const& line)
|
|
|
// Check for special CTest XML tags in this line of output.
|
|
|
// If any are found, this line is excluded from ProcessOutput.
|
|
|
if (!line.empty() && line.find("<CTest") != std::string::npos) {
|
|
|
+ bool ctest_tag_found = false;
|
|
|
if (this->TestHandler->CustomCompletionStatusRegex.find(line)) {
|
|
|
+ ctest_tag_found = true;
|
|
|
this->TestResult.CustomCompletionStatus =
|
|
|
this->TestHandler->CustomCompletionStatusRegex.match(1);
|
|
|
cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
|
|
|
@@ -52,6 +55,20 @@ void cmCTestRunTest::CheckOutput(std::string const& line)
|
|
|
<< "Test Details changed to '"
|
|
|
<< this->TestResult.CustomCompletionStatus
|
|
|
<< "'" << std::endl);
|
|
|
+ } else if (this->TestHandler->CustomLabelRegex.find(line)) {
|
|
|
+ ctest_tag_found = true;
|
|
|
+ auto label = this->TestHandler->CustomLabelRegex.match(1);
|
|
|
+ auto& labels = this->TestProperties->Labels;
|
|
|
+ if (std::find(labels.begin(), labels.end(), label) == labels.end()) {
|
|
|
+ labels.push_back(label);
|
|
|
+ std::sort(labels.begin(), labels.end());
|
|
|
+ cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
|
|
|
+ this->GetIndex()
|
|
|
+ << ": "
|
|
|
+ << "Test Label added: '" << label << "'" << std::endl);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ctest_tag_found) {
|
|
|
return;
|
|
|
}
|
|
|
}
|