[Cmake-commits] [cmake-commits] zach.mullen committed cmCTestMemCheckHandler.cxx 1.23 1.24 cmCTestMultiProcessHandler.cxx 1.8 1.9 cmCTestMultiProcessHandler.h 1.5 1.6 cmCTestRunTest.cxx 1.4 1.5 cmCTestRunTest.h 1.3 1.4 cmCTestTestHandler.cxx 1.107 1.108 cmCTestTestHandler.h 1.41 1.42

cmake-commits at cmake.org cmake-commits at cmake.org
Fri Aug 28 11:08:41 EDT 2009


Update of /cvsroot/CMake/CMake/Source/CTest
In directory public:/mounts/ram/cvs-serv22462/Source/CTest

Modified Files:
	cmCTestMemCheckHandler.cxx cmCTestMultiProcessHandler.cxx 
	cmCTestMultiProcessHandler.h cmCTestRunTest.cxx 
	cmCTestRunTest.h cmCTestTestHandler.cxx cmCTestTestHandler.h 
Log Message:
Added ctest -N test.  Fixed ctest working directory bug.  MemCheck fix coming soon...


Index: cmCTestMemCheckHandler.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestMemCheckHandler.cxx,v
retrieving revision 1.23
retrieving revision 1.24
diff -C 2 -d -r1.23 -r1.24
*** cmCTestMemCheckHandler.cxx	27 May 2009 15:14:08 -0000	1.23
--- cmCTestMemCheckHandler.cxx	28 Aug 2009 15:08:39 -0000	1.24
***************
*** 868,872 ****
    return true;
  }
! 
  void 
  cmCTestMemCheckHandler::ProcessOneTest(cmCTestTestProperties *props,
--- 868,872 ----
    return true;
  }
! //TODO ZACH move this logic into cmCTestRunTest
  void 
  cmCTestMemCheckHandler::ProcessOneTest(cmCTestTestProperties *props,

Index: cmCTestRunTest.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestRunTest.cxx,v
retrieving revision 1.4
retrieving revision 1.5
diff -C 2 -d -r1.4 -r1.5
*** cmCTestRunTest.cxx	27 Aug 2009 14:37:26 -0000	1.4
--- cmCTestRunTest.cxx	28 Aug 2009 15:08:39 -0000	1.5
***************
*** 56,60 ****
  
  //---------------------------------------------------------
! bool cmCTestRunTest::EndTest()
  {
    //restore the old environment
--- 56,60 ----
  
  //---------------------------------------------------------
! bool cmCTestRunTest::EndTest(int completed, int total)
  {
    //restore the old environment
***************
*** 63,67 ****
      cmSystemTools::RestoreEnv(this->OrigEnv);
      }
!   this->WriteLogOutputTop();
    std::string reason;
    bool passed = true;
--- 63,67 ----
      cmSystemTools::RestoreEnv(this->OrigEnv);
      }
!   this->WriteLogOutputTop(completed, total);
    std::string reason;
    bool passed = true;
***************
*** 260,263 ****
--- 260,264 ----
  bool cmCTestRunTest::StartTest()
  {
+   this->ComputeArguments();
    std::vector<std::string>& args = this->TestProperties->Args;
    this->TestResult.Properties = this->TestProperties;
***************
*** 269,278 ****
    this->TestResult.Path = this->TestProperties->Directory.c_str();
    
-   // find the test executable
-   this->ActualCommand 
-     = this->TestHandler->FindTheExecutable(args[1].c_str());
-   this->TestCommand
-     = cmSystemTools::ConvertToOutputPath(this->ActualCommand.c_str());
- 
    // continue if we did not find the executable
    if (this->TestCommand == "")
--- 270,273 ----
***************
*** 290,297 ****
        }
      }
  
-   /**
-    * Run an executable command and put the stdout in output.
-    */
    cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, std::endl
               << this->Index << ": "
--- 285,319 ----
        }
      }
+   this->StartTime = this->CTest->CurrentTime();
+ 
+   return this->CreateProcess(this->TestProperties->Timeout,
+                              &this->TestProperties->Environment);
+ }
+ 
+ void cmCTestRunTest::ComputeArguments()
+ {
+   std::vector<std::string>& args = this->TestProperties->Args;
+   // find the test executable
+   this->ActualCommand 
+     = this->TestHandler->FindTheExecutable(args[1].c_str());
+   this->TestCommand
+     = cmSystemTools::ConvertToOutputPath(this->ActualCommand.c_str());
+   // add the arguments
+   std::vector<std::string>::const_iterator j = 
+     this->TestProperties->Args.begin();
+   ++j; // skip test name
+   ++j; // skip command as it is in actualCommand
+ 
+     //TODO ZACH the problem is here for memcheck.  We need to call
+ //memcheckhandler.GenerateTestCommand BEFORE we run the process.
+ //  this->TestHandler->GenerateTestCommand(this->Arguments);
+   for(;j != this->TestProperties->Args.end(); ++j)
+     {
+     this->TestCommand += " ";
+     this->TestCommand += cmSystemTools::EscapeSpaces(j->c_str());
+     this->Arguments.push_back(*j);
+     }
+   this->TestResult.FullCommandLine = this->TestCommand;
  
    cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, std::endl
               << this->Index << ": "
***************
*** 299,309 ****
               << " command: " << this->TestCommand
               << std::endl);
- 
-   this->StartTime = this->CTest->CurrentTime();
- 
-   return this->CreateProcess(this->ActualCommand,
-                              this->TestProperties->Args,
-                              this->TestProperties->Timeout,
-                              &this->TestProperties->Environment);
  }
  
--- 321,324 ----
***************
*** 331,352 ****
  
  //----------------------------------------------------------------------
! bool cmCTestRunTest::CreateProcess(std::string command,
!                      std::vector<std::string> args,
!                      double testTimeOut,
                       std::vector<std::string>* environment)
  {
-   std::vector<std::string> commandArgs;
-   std::vector<std::string>::iterator i = args.begin();
- 
-   ++i; //skip test name
-   ++i; //skip executable name
-   for(; i != args.end(); ++i)
-     {
-     commandArgs.push_back(*i);
-     }
    this->TestProcess = new cmProcess;
    this->TestProcess->SetId(this->Index);
!   this->TestProcess->SetCommand(command.c_str());
!   this->TestProcess->SetCommandArguments(commandArgs);
  
    std::vector<std::string> origEnv;
--- 346,357 ----
  
  //----------------------------------------------------------------------
! bool cmCTestRunTest::CreateProcess(double testTimeOut,
                       std::vector<std::string>* environment)
  {
    this->TestProcess = new cmProcess;
    this->TestProcess->SetId(this->Index);
!   this->TestProcess->SetWorkingDirectory(this->TestProperties->Directory.c_str());
!   this->TestProcess->SetCommand(this->ActualCommand.c_str());
!   this->TestProcess->SetCommandArguments(this->Arguments);
  
    std::vector<std::string> origEnv;
***************
*** 381,385 ****
  }
  
! void cmCTestRunTest::WriteLogOutputTop()
  {
    /* Not sure whether we want to prepend the test index anymore
--- 386,390 ----
  }
  
! void cmCTestRunTest::WriteLogOutputTop(int completed, int total)
  {
    /* Not sure whether we want to prepend the test index anymore
***************
*** 387,393 ****
               << this->Index << ": ");*/
    cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3) 
!              << this->TestProperties->Index << "/");
    cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3) 
!              << this->TestHandler->TotalNumberOfTests << " ");
    if ( this->TestHandler->MemCheck )
      {
--- 392,399 ----
               << this->Index << ": ");*/
    cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3) 
!              << completed << "/");
    cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3) 
!              << total << " ");
! 
    if ( this->TestHandler->MemCheck )
      {
***************
*** 398,401 ****
--- 404,412 ----
      cmCTestLog(this->CTest, HANDLER_OUTPUT, "Testing");
      }
+ 
+   std::stringstream indexStr;
+   indexStr << " (" << this->Index << ")";
+   cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(6) 
+              << indexStr.str().c_str());
    cmCTestLog(this->CTest, HANDLER_OUTPUT, " ");
    const int maxTestNameWidth = this->CTest->GetMaxTestNameWidth();
***************
*** 403,423 ****
    outname.resize(maxTestNameWidth, '.');
  
-   // add the arguments
-   std::vector<std::string>::const_iterator j = 
-     this->TestProperties->Args.begin();
-   ++j; // skip test name
-   ++j; // skip command as it is in actualCommand
-   std::vector<const char*> arguments;
-   this->TestHandler->GenerateTestCommand(arguments);
-   arguments.push_back(this->ActualCommand.c_str());
-   for(;j != this->TestProperties->Args.end(); ++j)
-     {
-     this->TestCommand += " ";
-     this->TestCommand += cmSystemTools::EscapeSpaces(j->c_str());
-     arguments.push_back(j->c_str());
-     }
-   arguments.push_back(0);
-   this->TestResult.FullCommandLine = this->TestCommand;
- 
    *this->TestHandler->LogFile << this->TestProperties->Index << "/" 
      << this->TestHandler->TotalNumberOfTests << " Testing: " 
--- 414,417 ----
***************
*** 426,434 ****
      << this->TestHandler->TotalNumberOfTests
      << " Test: " << this->TestProperties->Name.c_str() << std::endl;
!   *this->TestHandler->LogFile << "Command: ";
!   std::vector<cmStdString>::size_type ll;
!   for ( ll = 0; ll < arguments.size()-1; ll ++ )
      {
!     *this->TestHandler->LogFile << "\"" << arguments[ll] << "\" ";
      }
    *this->TestHandler->LogFile << std::endl
--- 420,430 ----
      << this->TestHandler->TotalNumberOfTests
      << " Test: " << this->TestProperties->Name.c_str() << std::endl;
!   *this->TestHandler->LogFile << "Command: \"" << this->ActualCommand << "\"";
!   
!   for (std::vector<std::string>::iterator i = this->Arguments.begin();
!        i != this->Arguments.end(); ++i)
      {
!     *this->TestHandler->LogFile 
!       << " \"" << i->c_str() << "\"";
      }
    *this->TestHandler->LogFile << std::endl

Index: cmCTestMultiProcessHandler.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestMultiProcessHandler.cxx,v
retrieving revision 1.8
retrieving revision 1.9
diff -C 2 -d -r1.8 -r1.9
*** cmCTestMultiProcessHandler.cxx	27 Aug 2009 14:37:26 -0000	1.8
--- cmCTestMultiProcessHandler.cxx	28 Aug 2009 15:08:39 -0000	1.9
***************
*** 25,28 ****
--- 25,29 ----
  {
    this->ParallelLevel = 1;
+   this->Completed = 0;
  }
    // Set the tests
***************
*** 39,42 ****
--- 40,44 ----
      }
    this->Tests = tests;
+   this->Total = this->Tests.size();
    this->Properties = properties;
  }
***************
*** 82,86 ****
    else
      {
!     testRun->EndTest();
      }
  }
--- 84,88 ----
    else
      {
!     testRun->EndTest(this->Completed, this->Total);
      }
  }
***************
*** 131,137 ****
  void cmCTestMultiProcessHandler::StartNextTests()
  {
!   cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, std::endl
!              << "Number of running tests : " << this->RunningTests.size()
!              << "\n");
    size_t numToStart = this->ParallelLevel - this->RunningTests.size();
    if(numToStart == 0)
--- 133,139 ----
  void cmCTestMultiProcessHandler::StartNextTests()
  {
!   //cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, std::endl
!   //           << "Number of running tests : " << this->RunningTests.size()
!   //           << "\n");
    size_t numToStart = this->ParallelLevel - this->RunningTests.size();
    if(numToStart == 0)
***************
*** 184,197 ****
         i != finished.end(); ++i)
      {
      cmCTestRunTest* p = *i;
      int test = p->GetIndex();
!     
!     if(p->EndTest())
        {
!         this->Passed->push_back(p->GetTestProperties()->Name);
        }
      else
        {
!         this->Failed->push_back(p->GetTestProperties()->Name);
        }
      for(TestMap::iterator j = this->Tests.begin();
--- 186,200 ----
         i != finished.end(); ++i)
      {
+     this->Completed++;
      cmCTestRunTest* p = *i;
      int test = p->GetIndex();
! 
!     if(p->EndTest(this->Completed, this->Total))
        {
!       this->Passed->push_back(p->GetTestProperties()->Name);
        }
      else
        {
!       this->Failed->push_back(p->GetTestProperties()->Name);
        }
      for(TestMap::iterator j = this->Tests.begin();
***************
*** 227,243 ****
  }
  
! void cmCTestMultiProcessHandler::PrintTests()
  {
! #undef cout
!   for( TestMap::iterator i = this->Tests.begin();
!        i!=  this->Tests.end(); ++i)
      {
!     std::cout << "Test " << i->first << "  (";
!     for(TestSet::iterator j = i->second.begin(); 
!         j != i->second.end(); ++j)
        {
!       std::cout << *j << " ";
        }
!     std::cout << ")\n";
      }
  }
--- 230,265 ----
  }
  
! //---------------------------------------------------------------------
! //For ShowOnly mode
! void cmCTestMultiProcessHandler::PrintTestList()
  {
!   int count = 0;
!   for (PropertiesMap::iterator it = this->Properties.begin();
!        it != this->Properties.end(); it ++ )
      {
!     count++;
!     cmCTestTestHandler::cmCTestTestProperties& p = *it->second;
! 
!     cmCTestRunTest testRun;
!     testRun.SetCTest(this->CTest);
!     testRun.SetTestHandler(this->TestHandler);
!     testRun.SetIndex(p.Index);
!     testRun.SetTestProperties(&p);
!     testRun.ComputeArguments(); //logs the command in verbose mode
! 
!     cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3) 
!              << count << "/");
!     cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3) 
!              << this->Total << " ");
!     if (this->TestHandler->MemCheck)
        {
!       cmCTestLog(this->CTest, HANDLER_OUTPUT, "Memory Check");
        }
!      else
!       {
!       cmCTestLog(this->CTest, HANDLER_OUTPUT, "Testing");
!       }
!     cmCTestLog(this->CTest, HANDLER_OUTPUT, " ");
!     cmCTestLog(this->CTest, HANDLER_OUTPUT, p.Name.c_str() << std::endl);
      }
  }
***************
*** 283,323 ****
    this->TestRunningMap[index] = false;
    this->TestFinishMap[index] = true;
  }
- 
- #if 0
- int main()
- {
-   cmCTestMultiProcessHandler h;
-   h.SetParallelLevel(4);
-   std::map<int, std::set<int> > tests;
-   std::set<int> depends;
-   for(int i =1; i < 92; i++)
-     {
-     tests[i] = depends;
-     }
-   depends.clear();
-   depends.insert(45);  subprject
-   tests[46] = depends;  subproject-stage2
-   depends.clear();
-   depends.insert(55);  simpleinstall simpleinstall-s2
-   tests[56] = depends;
-   depends.clear();
-   depends.insert(70);  wrapping
-   tests[71] = depends; qtwrapping
-   depends.clear();
-   depends.insert(71);  qtwrapping
-   tests[72] = depends;  testdriver1
-   depends.clear();
-   depends.insert(72)    testdriver1
-   tests[73] = depends;  testdriver2
-   depends.clear();
-   depends.insert(73);   testdriver2
-   tests[74] = depends;  testdriver3
-   depends.clear();
-   depends.insert(79);   linkorder1
-   tests[80] = depends;  linkorder2
-   h.SetTests(tests);
-   h.PrintTests();
-   h.RunTests();
- }
- #endif
--- 305,308 ----
    this->TestRunningMap[index] = false;
    this->TestFinishMap[index] = true;
+   this->Completed++;
  }

Index: cmCTestTestHandler.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestTestHandler.h,v
retrieving revision 1.41
retrieving revision 1.42
diff -C 2 -d -r1.41 -r1.42
*** cmCTestTestHandler.h	27 Aug 2009 14:37:27 -0000	1.41
--- cmCTestTestHandler.h	28 Aug 2009 15:08:39 -0000	1.42
***************
*** 142,146 ****
    void WriteTestResultFooter(std::ostream& os, cmCTestTestResult* result);
  
-   void PrintTestList();
    //! Clean test output to specified length
    bool CleanTestOutput(std::string& output, size_t length);
--- 142,145 ----

Index: cmCTestMultiProcessHandler.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestMultiProcessHandler.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -C 2 -d -r1.5 -r1.6
*** cmCTestMultiProcessHandler.h	27 Aug 2009 14:37:26 -0000	1.5
--- cmCTestMultiProcessHandler.h	28 Aug 2009 15:08:39 -0000	1.6
***************
*** 41,45 ****
    void SetParallelLevel(size_t);
    void RunTests();
!   void PrintTests();
    //void SetCTestCommand(const char* c) { this->CTestCommand = c;}
    //void SetTestCacheFile(const char* c) { this->CTestCacheFile = c;}
--- 41,45 ----
    void SetParallelLevel(size_t);
    void RunTests();
!   void PrintTestList();
    //void SetCTestCommand(const char* c) { this->CTestCommand = c;}
    //void SetTestCacheFile(const char* c) { this->CTestCacheFile = c;}
***************
*** 81,84 ****
--- 81,88 ----
    // map from test number to set of depend tests
    TestMap Tests;
+   //Total number of tests we'll be running
+   int Total;
+   //Number of tests that are complete
+   int Completed;
    //list of test properties (indices concurrent to the test map)
    PropertiesMap Properties;

Index: cmCTestTestHandler.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestTestHandler.cxx,v
retrieving revision 1.107
retrieving revision 1.108
diff -C 2 -d -r1.107 -r1.108
*** cmCTestTestHandler.cxx	27 Aug 2009 14:37:26 -0000	1.107
--- cmCTestTestHandler.cxx	28 Aug 2009 15:08:39 -0000	1.108
***************
*** 1305,1333 ****
  
  //---------------------------------------------------------------------
- void cmCTestTestHandler::PrintTestList()
- {
-   int total = this->TotalNumberOfTests;
-   for (ListOfTests::iterator it = this->TestList.begin();
-        it != this->TestList.end(); it ++ )
-     { 
-     cmCTestTestProperties& p = *it;
-     cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3) 
-              << p.Index << "/");
-     cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3) 
-              << total << " ");
-     if (this->MemCheck)
-       {
-       cmCTestLog(this->CTest, HANDLER_OUTPUT, "Memory Check");
-       }
-      else
-       {
-       cmCTestLog(this->CTest, HANDLER_OUTPUT, "Testing");
-       }
-     cmCTestLog(this->CTest, HANDLER_OUTPUT, " ");
-     cmCTestLog(this->CTest, HANDLER_OUTPUT, p.Name.c_str() << std::endl);
-     }
- }
- 
- //---------------------------------------------------------------------
  void cmCTestTestHandler::ProcessDirectory(std::vector<cmStdString> &passed,
                                           std::vector<cmStdString> &failed)
--- 1305,1308 ----
***************
*** 1335,1343 ****
    this->ComputeTestList();
  
-   if(this->CTest->GetShowOnly())
-     {
-     this->PrintTestList();
-     return;
-     }
    cmCTestMultiProcessHandler parallel;
    parallel.SetCTest(this->CTest);
--- 1310,1313 ----
***************
*** 1381,1386 ****
    this->TestResults.clear();
    parallel.SetTestResults(&this->TestResults);
!   parallel.RunTests();
! 
    *this->LogFile << "End testing: "
       << this->CTest->CurrentTime() << std::endl;
--- 1351,1362 ----
    this->TestResults.clear();
    parallel.SetTestResults(&this->TestResults);
!   if(this->CTest->GetShowOnly())
!     {
!     parallel.PrintTestList();
!     }
!   else
!     {
!     parallel.RunTests();
!     }
    *this->LogFile << "End testing: "
       << this->CTest->CurrentTime() << std::endl;

Index: cmCTestRunTest.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestRunTest.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -C 2 -d -r1.3 -r1.4
*** cmCTestRunTest.h	27 Aug 2009 14:37:26 -0000	1.3
--- cmCTestRunTest.h	28 Aug 2009 15:08:39 -0000	1.4
***************
*** 56,68 ****
    //launch the test process, return whether it started correctly
    bool StartTest();
!   //capture the test results and send them back to the test handler
!   bool EndTest();
! protected:
    void DartProcessing();
!   bool CreateProcess(std::string executable,
!                      std::vector<std::string> args,
!                      double testTimeOut,
                       std::vector<std::string>* environment);
!   void WriteLogOutputTop();
  
    cmCTestTestHandler::cmCTestTestProperties * TestProperties;
--- 56,68 ----
    //launch the test process, return whether it started correctly
    bool StartTest();
!   //capture and report the test results
!   bool EndTest(int completed, int total);
!   //Called by ctest -N to log the command string
!   void ComputeArguments();
! private:
    void DartProcessing();
!   bool CreateProcess(double testTimeOut,
                       std::vector<std::string>* environment);
!   void WriteLogOutputTop(int completed, int total);
  
    cmCTestTestHandler::cmCTestTestProperties * TestProperties;
***************
*** 87,90 ****
--- 87,91 ----
    std::string TestCommand;
    std::string ActualCommand;
+   std::vector<std::string> Arguments;
  };
  



More information about the Cmake-commits mailing list