From 350eeeab4e3833ee12385dfacef34b8513b81fa5 Mon Sep 17 00:00:00 2001 From: Andy Cedilnik Date: Tue, 8 Oct 2002 20:02:01 -0400 Subject: [PATCH] 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 --- Source/ctest.cxx | 49 +++++++++++++++++++++++++++++++++++++++++++++--- Source/ctest.h | 6 ++++++ 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/Source/ctest.cxx b/Source/ctest.cxx index 74951418a3..85d5a2113c 100644 --- a/Source/ctest.cxx +++ b/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(); diff --git a/Source/ctest.h b/Source/ctest.h index a427e7bbd7..23c59b6d73 100644 --- a/Source/ctest.h +++ b/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,