| 
					
				 | 
			
			
				@@ -302,6 +302,8 @@ cmCTestTestHandler::cmCTestTestHandler() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   m_MemCheck = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  m_LogFile = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   m_DartStuff.compile("(<DartMeasurement.*/DartMeasurement[a-zA-Z]*>)"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -406,6 +408,10 @@ int cmCTestTestHandler::ProcessHandler() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cmGeneratedFileStream mLogFile; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  this->StartLogFile("Tests", mLogFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  m_LogFile = &mLogFile; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   std::vector<cmStdString> passed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   std::vector<cmStdString> failed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int total; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -474,6 +480,7 @@ int cmCTestTestHandler::ProcessHandler() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cmCTestLog(m_CTest, ERROR_MESSAGE, "Cannot create " << (m_MemCheck ? "memory check" : "testing") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         << " XML file" << std::endl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      m_LogFile = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this->GenerateDartOutput(xmlfile); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -481,13 +488,16 @@ int cmCTestTestHandler::ProcessHandler() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if ( ! this->PostProcessHandler() ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    m_LogFile = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if ( !failed.empty() ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    m_LogFile = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  m_LogFile = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -501,23 +511,12 @@ void cmCTestTestHandler::ProcessDirectory(std::vector<cmStdString> &passed, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   this->GetListOfTests(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tm_ListOfTests::size_type tmsize = m_TestList.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cmGeneratedFileStream ofs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cmGeneratedFileStream *olog = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if ( !m_CTest->GetShowOnly() && tmsize > 0 &&  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this->StartResultingXML((m_MemCheck?"MemCheck":"Test"), ofs) ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    olog = &ofs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   m_StartTest = m_CTest->CurrentTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   double elapsed_time_start = cmSystemTools::GetTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if ( olog ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    *olog << "Start testing: " << m_StartTest << std::endl 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      << "----------------------------------------------------------" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      << std::endl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  *m_LogFile << "Start testing: " << m_StartTest << std::endl 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    << "----------------------------------------------------------" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    << std::endl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // how many tests are in based on RegExp? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int inREcnt = 0; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -559,6 +558,8 @@ void cmCTestTestHandler::ProcessDirectory(std::vector<cmStdString> &passed, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cmCTestLog(m_CTest, HANDLER_VERBOSE_OUTPUT, "Changing directory into "  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         << it->m_Directory.c_str() << "\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      *m_LogFile << "Changing directory into: " << it->m_Directory.c_str() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        << std::endl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       last_directory = it->m_Directory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cmSystemTools::ChangeDirectory(it->m_Directory.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -590,6 +591,8 @@ void cmCTestTestHandler::ProcessDirectory(std::vector<cmStdString> &passed, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cmCTestLog(m_CTest, HANDLER_OUTPUT, std::setw(3) << tmsize << " Testing "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::string outname = testname; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     outname.resize(30, ' '); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    *m_LogFile << cnt << "/" << tmsize << " Testing: " << testname 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      << std::endl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if ( m_CTest->GetShowOnly() ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -608,6 +611,8 @@ void cmCTestTestHandler::ProcessDirectory(std::vector<cmStdString> &passed, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // continue if we did not find the executable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (testCommand == "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      *m_LogFile << "Unable to find executable: " << args[1].c_str() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        << std::endl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cmCTestLog(m_CTest, ERROR_MESSAGE, "Unable to find executable: " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         << args[1].c_str() << std::endl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if ( !m_CTest->GetShowOnly() ) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -642,37 +647,34 @@ void cmCTestTestHandler::ProcessDirectory(std::vector<cmStdString> &passed, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cmCTestLog(m_CTest, HANDLER_VERBOSE_OUTPUT, std::endl << (m_MemCheck?"MemCheck":"Test") << " command: " << testCommand << std::endl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if ( olog ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    *m_LogFile << cnt << "/" << tmsize  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      << " Test: " << testname.c_str() << std::endl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    *m_LogFile << "Command: "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::vector<cmStdString>::size_type ll; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for ( ll = 0; ll < arguments.size()-1; ll ++ ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      *olog << cnt << "/" << tmsize  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        << " Test: " << testname.c_str() << std::endl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      *olog << "Command: "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      std::vector<cmStdString>::size_type ll; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      for ( ll = 0; ll < arguments.size()-1; ll ++ ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        *olog << "\"" << arguments[ll] << "\" "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      *olog  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        << std::endl  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        << "Directory: " << it->m_Directory << std::endl  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        << "\"" << testname.c_str() << "\" start time: "  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        << m_CTest->CurrentTime() << std::endl 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        << "Output:" << std::endl  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        << "----------------------------------------------------------" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        << std::endl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      *m_LogFile << "\"" << arguments[ll] << "\" "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    *m_LogFile  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      << std::endl  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      << "Directory: " << it->m_Directory << std::endl  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      << "\"" << testname.c_str() << "\" start time: "  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      << m_CTest->CurrentTime() << std::endl 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      << "Output:" << std::endl  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      << "----------------------------------------------------------" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      << std::endl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     int res = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     double clock_start, clock_finish; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     clock_start = cmSystemTools::GetTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if ( !m_CTest->GetShowOnly() ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      res = m_CTest->RunTest(arguments, &output, &retVal, olog); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      res = m_CTest->RunTest(arguments, &output, &retVal, m_LogFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     clock_finish = cmSystemTools::GetTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if ( olog ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if ( m_LogFile ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       double ttime = clock_finish - clock_start; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       int hours = static_cast<int>(ttime / (60 * 60)); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -680,7 +682,7 @@ void cmCTestTestHandler::ProcessDirectory(std::vector<cmStdString> &passed, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       int seconds = static_cast<int>(ttime) % 60; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       char buffer[100]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       sprintf(buffer, "%02d:%02d:%02d", hours, minutes, seconds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      *olog  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      *m_LogFile  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         << "----------------------------------------------------------" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         << std::endl 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         << "\"" << testname.c_str() << "\" end time: "  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -776,9 +778,9 @@ void cmCTestTestHandler::ProcessDirectory(std::vector<cmStdString> &passed, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   m_EndTest = m_CTest->CurrentTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   m_ElapsedTestingTime = cmSystemTools::GetTime() - elapsed_time_start; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if ( olog ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if ( m_LogFile ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    *olog << "End testing: " << m_EndTest << std::endl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    *m_LogFile << "End testing: " << m_EndTest << std::endl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   cmSystemTools::ChangeDirectory(current_dir.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |