| 
														
															@@ -7,14 +7,16 @@ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #include "cmGeneratorExpression.h" 
														 | 
														
														 | 
														
															 #include "cmGeneratorExpression.h" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #include "cmGeneratorTarget.h" 
														 | 
														
														 | 
														
															 #include "cmGeneratorTarget.h" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+#include "cmListFileCache.h" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #include "cmLocalGenerator.h" 
														 | 
														
														 | 
														
															 #include "cmLocalGenerator.h" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #include "cmOutputConverter.h" 
														 | 
														
														 | 
														
															 #include "cmOutputConverter.h" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #include "cmProperty.h" 
														 | 
														
														 | 
														
															 #include "cmProperty.h" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-#include "cmPropertyMap.h" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #include "cmStateTypes.h" 
														 | 
														
														 | 
														
															 #include "cmStateTypes.h" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #include "cmSystemTools.h" 
														 | 
														
														 | 
														
															 #include "cmSystemTools.h" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #include "cmTest.h" 
														 | 
														
														 | 
														
															 #include "cmTest.h" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+class cmPropertyMap; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 cmTestGenerator::cmTestGenerator( 
														 | 
														
														 | 
														
															 cmTestGenerator::cmTestGenerator( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   cmTest* test, std::vector<std::string> const& configurations) 
														 | 
														
														 | 
														
															   cmTest* test, std::vector<std::string> const& configurations) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   : cmScriptGenerator("CTEST_CONFIGURATION_TYPE", configurations) 
														 | 
														
														 | 
														
															   : cmScriptGenerator("CTEST_CONFIGURATION_TYPE", configurations) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -121,16 +123,15 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   // Output properties for the test. 
														 | 
														
														 | 
														
															   // Output properties for the test. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   cmPropertyMap& pm = this->Test->GetProperties(); 
														 | 
														
														 | 
														
															   cmPropertyMap& pm = this->Test->GetProperties(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  if (!pm.empty()) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    os << indent << "set_tests_properties(" << this->Test->GetName() 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-       << " PROPERTIES "; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    for (auto const& i : pm) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-      os << " " << i.first << " " 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-         << cmOutputConverter::EscapeForCMake( 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-              ge.Parse(i.second.GetValue())->Evaluate(this->LG, config)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    } 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    os << ")" << std::endl; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  os << indent << "set_tests_properties(" << this->Test->GetName() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+     << " PROPERTIES "; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  for (auto const& i : pm) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    os << " " << i.first << " " 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+       << cmOutputConverter::EscapeForCMake( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            ge.Parse(i.second.GetValue())->Evaluate(this->LG, config)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } 
														 | 
														
														 | 
														
															   } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  this->GenerateInternalProperties(os); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  os << ")" << std::endl; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 void cmTestGenerator::GenerateScriptNoConfig(std::ostream& os, Indent indent) 
														 | 
														
														 | 
														
															 void cmTestGenerator::GenerateScriptNoConfig(std::ostream& os, Indent indent) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -179,13 +180,37 @@ void cmTestGenerator::GenerateOldStyle(std::ostream& fout, Indent indent) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   // Output properties for the test. 
														 | 
														
														 | 
														
															   // Output properties for the test. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   cmPropertyMap& pm = this->Test->GetProperties(); 
														 | 
														
														 | 
														
															   cmPropertyMap& pm = this->Test->GetProperties(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  if (!pm.empty()) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    fout << indent << "set_tests_properties(" << this->Test->GetName() 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-         << " PROPERTIES "; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    for (auto const& i : pm) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-      fout << " " << i.first << " " 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-           << cmOutputConverter::EscapeForCMake(i.second.GetValue()); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  fout << indent << "set_tests_properties(" << this->Test->GetName() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+       << " PROPERTIES "; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  for (auto const& i : pm) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    fout << " " << i.first << " " 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+         << cmOutputConverter::EscapeForCMake(i.second.GetValue()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  this->GenerateInternalProperties(fout); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  fout << ")" << std::endl; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+void cmTestGenerator::GenerateInternalProperties(std::ostream& os) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  cmListFileBacktrace bt = this->Test->GetBacktrace(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (bt.Empty()) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    return; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  os << " " 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+     << "_BACKTRACE_TRIPLES" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+     << " \""; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  bool prependTripleSeparator = false; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  while (!bt.Empty()) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    const auto& entry = bt.Top(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (prependTripleSeparator) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      os << ";"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    fout << ")" << std::endl; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    os << entry.FilePath << ";" << entry.Line << ";" << entry.Name; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    bt = bt.Pop(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    prependTripleSeparator = true; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } 
														 | 
														
														 | 
														
															   } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  os << "\""; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 |