diff options
author | Ken Martin <ken.martin@kitware.com> | 2008-01-18 15:25:25 (GMT) |
---|---|---|
committer | Ken Martin <ken.martin@kitware.com> | 2008-01-18 15:25:25 (GMT) |
commit | 7c473d482824cb251db0213955b36f1d391120a1 (patch) | |
tree | ed2fcb0b61d551a3ce6a42a8701a70ff00d1796e /Source/CTest | |
parent | 6ad79d13ddd74b9bf1a1819527d5eb1e88bac8c2 (diff) | |
download | CMake-7c473d482824cb251db0213955b36f1d391120a1.zip CMake-7c473d482824cb251db0213955b36f1d391120a1.tar.gz CMake-7c473d482824cb251db0213955b36f1d391120a1.tar.bz2 |
BUG: fix bugs 5539 (progress going beyond 100% when new files are added) and 5889 (tests are not found in some cases when using add_subdirectory to .. etc)
Diffstat (limited to 'Source/CTest')
-rw-r--r-- | Source/CTest/cmCTestTestHandler.cxx | 87 |
1 files changed, 43 insertions, 44 deletions
diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index 44bb98d..1eb0648 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -36,7 +36,7 @@ #include <memory> // auto_ptr //---------------------------------------------------------------------- -class cmCTestSubdirCommand : public cmCommand +class cmCTestAddSubdirectoryCommand : public cmCommand { public: /** @@ -44,7 +44,7 @@ public: */ virtual cmCommand* Clone() { - cmCTestSubdirCommand* c = new cmCTestSubdirCommand; + cmCTestAddSubdirectoryCommand* c = new cmCTestAddSubdirectoryCommand; c->TestHandler = this->TestHandler; return c; } @@ -58,65 +58,63 @@ public: /** * The name of the command as specified in CMakeList.txt. */ - virtual const char* GetName() { return "SUBDIRS";} + virtual const char* GetName() { return "add_subdirectory";} // Unused methods virtual const char* GetTerseDocumentation() { return ""; } virtual const char* GetFullDocumentation() { return ""; } - cmTypeMacro(cmCTestSubdirCommand, cmCommand); + cmTypeMacro(cmCTestAddSubdirectoryCommand, cmCommand); cmCTestTestHandler* TestHandler; }; //---------------------------------------------------------------------- -bool cmCTestSubdirCommand::InitialPass(std::vector<std::string> const& args) +bool cmCTestAddSubdirectoryCommand +::InitialPass(std::vector<std::string> const& args) { if(args.size() < 1 ) { this->SetError("called with incorrect number of arguments"); return false; } - std::vector<std::string>::const_iterator it; + std::string cwd = cmSystemTools::GetCurrentWorkingDirectory(); - for ( it = args.begin(); it != args.end(); ++ it ) - { - cmSystemTools::ChangeDirectory(cwd.c_str()); - std::string fname = cwd; - fname += "/"; - fname += *it; + cmSystemTools::ChangeDirectory(cwd.c_str()); + std::string fname = cwd; + fname += "/"; + fname += args[1]; - if ( !cmSystemTools::FileExists(fname.c_str()) ) - { - // No subdirectory? So what... - continue; - } - cmSystemTools::ChangeDirectory(fname.c_str()); - const char* testFilename; - if( cmSystemTools::FileExists("CTestTestfile.cmake") ) - { - // does the CTestTestfile.cmake exist ? - testFilename = "CTestTestfile.cmake"; - } - else - { - // No CTestTestfile? Who cares... - cmSystemTools::ChangeDirectory(cwd.c_str()); - continue; - } - fname += "/"; - fname += testFilename; - bool readit = - this->Makefile->ReadListFile(this->Makefile->GetCurrentListFile(), - fname.c_str()); + if ( !cmSystemTools::FileExists(fname.c_str()) ) + { + // No subdirectory? So what... + return true; + } + cmSystemTools::ChangeDirectory(fname.c_str()); + const char* testFilename; + if( cmSystemTools::FileExists("CTestTestfile.cmake") ) + { + // does the CTestTestfile.cmake exist ? + testFilename = "CTestTestfile.cmake"; + } + else + { + // No CTestTestfile? Who cares... cmSystemTools::ChangeDirectory(cwd.c_str()); - if(!readit) - { - std::string m = "Could not find include file: "; - m += fname; - this->SetError(m.c_str()); - return false; - } + return true; + } + fname += "/"; + fname += testFilename; + bool readit = + this->Makefile->ReadListFile(this->Makefile->GetCurrentListFile(), + fname.c_str()); + cmSystemTools::ChangeDirectory(cwd.c_str()); + if(!readit) + { + std::string m = "Could not find include file: "; + m += fname; + this->SetError(m.c_str()); + return false; } return true; } @@ -1260,8 +1258,9 @@ void cmCTestTestHandler::GetListOfTests() newCom1->TestHandler = this; cm.AddCommand(newCom1); - // Add handler for SUBDIR - cmCTestSubdirCommand* newCom2 = new cmCTestSubdirCommand; + // Add handler for ADD_SUBDIRECTORY + cmCTestAddSubdirectoryCommand* newCom2 = + new cmCTestAddSubdirectoryCommand; newCom2->TestHandler = this; cm.AddCommand(newCom2); |