Browse Source

Add configure option and fix potential bug in other targets. Now the run command is actually run with directory, so eventually we should be able to run this from a subdirectory

Andy Cedilnik 23 years ago
parent
commit
350eeeab4e
2 changed files with 52 additions and 3 deletions
  1. 46 3
      Source/ctest.cxx
  2. 6 0
      Source/ctest.h

+ 46 - 3
Source/ctest.cxx

@@ -143,6 +143,10 @@ bool ctest::SetTest(const char* ttype)
     {
     m_Tests[ctest::UPDATE_TEST] = 1;
     }
+  else if ( cmSystemTools::LowerCase(ttype) == "configure" )
+    {
+    m_Tests[ctest::CONFIGURE_TEST] = 1;
+    }
   else if ( cmSystemTools::LowerCase(ttype) == "build" )
     {
     m_Tests[ctest::BUILD_TEST] = 1;
@@ -281,7 +285,7 @@ void ctest::UpdateDirectory()
     }
 
   std::string sourceDirectory = m_DartConfiguration["SourceDirectory"];
-  if ( cvsOptions.size() == 0 )
+  if ( sourceDirectory.size() == 0 )
     {
     std::cerr << "Cannot find SourceDirectory  key in the DartConfiguration.tcl" << std::endl;
     return;
@@ -293,7 +297,34 @@ void ctest::UpdateDirectory()
   int retVal;
   bool res = cmSystemTools::RunCommand(command.c_str(), output, 
                                        retVal, sourceDirectory.c_str(),
-                                       true);
+                                       m_Verbose);
+  if (! res || retVal )
+    {
+    std::cerr << "Error(s) when updating the project" << std::endl;
+    }
+}
+
+void ctest::ConfigureDirectory()
+{
+  std::string cCommand = m_DartConfiguration["ConfigureCommand"];
+  if ( cCommand.size() == 0 )
+    {
+    std::cerr << "Cannot find ConfigureCommand key in the DartConfiguration.tcl" << std::endl;
+    return;
+    }
+
+  std::string buildDirectory = m_DartConfiguration["BuildDirectory"];
+  if ( buildDirectory.size() == 0 )
+    {
+    std::cerr << "Cannot find BuildDirectory  key in the DartConfiguration.tcl" << std::endl;
+    return;
+    }
+
+  std::string output;
+  int retVal;
+  bool res = cmSystemTools::RunCommand(cCommand.c_str(), output, 
+                                       retVal, buildDirectory.c_str(),
+                                       m_Verbose);
   if (! res || retVal )
     {
     std::cerr << "Error(s) when updating the project" << std::endl;
@@ -308,10 +339,18 @@ void ctest::BuildDirectory()
     std::cerr << "Cannot find MakeCommand key in the DartConfiguration.tcl" << std::endl;
     return;
     }
+  std::string buildDirectory = m_DartConfiguration["BuildDirectory"];
+  if ( buildDirectory.size() == 0 )
+    {
+    std::cerr << "Cannot find BuildDirectory  key in the DartConfiguration.tcl" << std::endl;
+    return;
+    }
+
   std::string output;
   int retVal;
   bool res = cmSystemTools::RunCommand(makeCommand.c_str(), output, 
-                                       retVal, 0, true);
+                                       retVal, buildDirectory.c_str(), 
+                                       m_Verbose);
   if (! res || retVal )
     {
     std::cerr << "Error(s) when building project" << std::endl;
@@ -577,6 +616,10 @@ int ctest::ProcessTests()
     {
     this->UpdateDirectory();
     }
+  if ( m_Tests[CONFIGURE_TEST] || m_Tests[ALL_TEST] )
+    {
+    this->ConfigureDirectory();
+    }
   if ( m_Tests[BUILD_TEST] || m_Tests[ALL_TEST] )
     {
     this->BuildDirectory();

+ 6 - 0
Source/ctest.h

@@ -49,6 +49,11 @@ public:
    */
   void UpdateDirectory();
 
+  /**
+   * Do configure the project
+   */
+  void ConfigureDirectory();
+
   /**
    * Run the test for a directory and any subdirectories
    */
@@ -90,6 +95,7 @@ private:
   enum {
     FIRST_TEST    = 0,
     UPDATE_TEST,
+    CONFIGURE_TEST,
     BUILD_TEST,
     TEST_TEST,
     COVERAGE_TEST,