| 
					
				 | 
			
			
				@@ -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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 |