ENH: add more testing

This commit is contained in:
Bill Hoffman 2001-08-23 16:00:46 -04:00
parent 3a3b55679b
commit 047c7b5af4
4 changed files with 43 additions and 15 deletions

View File

@ -68,8 +68,12 @@ IF(BUILD_TESTING)
${CMake_BINARY_DIR}/Source/cmaketest.h ESCAPE_QUOTES) ${CMake_BINARY_DIR}/Source/cmaketest.h ESCAPE_QUOTES)
ADD_TEST(simple ${CMake_BINARY_DIR}/Source/cmaketest ADD_TEST(simple ${CMake_BINARY_DIR}/Source/cmaketest
${CMake_SOURCE_DIR}/Tests/Simple ${CMake_SOURCE_DIR}/Tests/Simple
${CMake_BINARY_DIR}/Tests/Simple simple ${CMake_BINARY_DIR}/Tests/Simple simple )
) ADD_TEST(complex ${CMake_BINARY_DIR}/Source/cmaketest
${CMake_SOURCE_DIR}/Tests/Complex
${CMake_BINARY_DIR}/Tests/Complex
complex
${CMake_BINARY_DIR}/Tests/Complex/bin )
ENDIF (DART_ROOT) ENDIF (DART_ROOT)
ENDIF(BUILD_TESTING) ENDIF(BUILD_TESTING)

View File

@ -131,7 +131,9 @@ inline bool operator==(std::string const& a, const char* b)
{ return (a==std::string(b)); } { return (a==std::string(b)); }
# endif // end CM_SGI_CC_720 # endif // end CM_SGI_CC_720
// use this class to shring the size of symbols in .o files
// std::string is really basic_string<....lots of stuff....>
// when combined with a map or set, the symbols can be > 2000 chars!
struct cmStdString : public std::string struct cmStdString : public std::string
{ {
typedef std::string Parent; typedef std::string Parent;

View File

@ -15,6 +15,14 @@ int main (int argc, char *argv[])
{ {
cmSystemTools::MakeDirectory(argv[2]); cmSystemTools::MakeDirectory(argv[2]);
} }
const char* sourceDirectory = argv[1];
const char* binaryDirectory = argv[2];
const char* executableName = argv[3];
const char* executableDirectory = "";
if(argc > 4)
{
executableDirectory = argv[4];
}
/** /**
* Run an executable command and put the stdout in output. * Run an executable command and put the stdout in output.
@ -23,10 +31,10 @@ int main (int argc, char *argv[])
// change to the tests directory and run cmake // change to the tests directory and run cmake
std::string cwd = cmSystemTools::GetCurrentWorkingDirectory(); std::string cwd = cmSystemTools::GetCurrentWorkingDirectory();
cmSystemTools::ChangeDirectory(argv[2]); cmSystemTools::ChangeDirectory(binaryDirectory);
std::string ccmd = CMAKE_COMMAND; std::string ccmd = CMAKE_COMMAND;
ccmd += " "; ccmd += " ";
ccmd += argv[1]; ccmd += sourceDirectory;
if (!cmSystemTools::RunCommand(ccmd.c_str(), output)) if (!cmSystemTools::RunCommand(ccmd.c_str(), output))
{ {
std::cerr << "Error: cmake execution failed\n"; std::cerr << "Error: cmake execution failed\n";
@ -39,7 +47,7 @@ int main (int argc, char *argv[])
// now build the test // now build the test
std::string makeCommand = MAKEPROGRAM; std::string makeCommand = MAKEPROGRAM;
makeCommand += " "; makeCommand += " ";
makeCommand += argv[3]; makeCommand += executableName;
#ifdef _WIN32 #ifdef _WIN32
makeCommand += ".dsw /MAKE \"ALL_BUILD - Release\" /REBUILD"; makeCommand += ".dsw /MAKE \"ALL_BUILD - Release\" /REBUILD";
#endif #endif
@ -55,20 +63,19 @@ int main (int argc, char *argv[])
// now run the compiled test if we can find it // now run the compiled test if we can find it
// See if the executable exists as written. // See if the executable exists as written.
std::string fullPath; std::string fullPath;
if(cmSystemTools::FileExists(argv[3])) if(cmSystemTools::FileExists(executableName))
{ {
fullPath = cmSystemTools::CollapseFullPath(argv[3]); fullPath = cmSystemTools::CollapseFullPath(executableName);
} }
std::string tryPath = argv[3]; std::string tryPath = executableName;
tryPath += cmSystemTools::GetExecutableExtension(); tryPath += cmSystemTools::GetExecutableExtension();
if(cmSystemTools::FileExists(tryPath.c_str())) if(cmSystemTools::FileExists(tryPath.c_str()))
{ {
fullPath = cmSystemTools::CollapseFullPath(tryPath.c_str()); fullPath = cmSystemTools::CollapseFullPath(tryPath.c_str());
} }
// try the release extension // try the release extension
tryPath = "Release/"; tryPath = "Release/";
tryPath += cmSystemTools::GetFilenameName(argv[3]); tryPath += cmSystemTools::GetFilenameName(executableName);
if(cmSystemTools::FileExists(tryPath.c_str())) if(cmSystemTools::FileExists(tryPath.c_str()))
{ {
fullPath = cmSystemTools::CollapseFullPath(tryPath.c_str()); fullPath = cmSystemTools::CollapseFullPath(tryPath.c_str());
@ -78,7 +85,22 @@ int main (int argc, char *argv[])
{ {
fullPath = cmSystemTools::CollapseFullPath(tryPath.c_str()); fullPath = cmSystemTools::CollapseFullPath(tryPath.c_str());
} }
tryPath = executableDirectory;
tryPath += "/";
tryPath += executableName;
tryPath += cmSystemTools::GetExecutableExtension();
if(cmSystemTools::FileExists(tryPath.c_str()))
{
fullPath = cmSystemTools::CollapseFullPath(tryPath.c_str());
}
tryPath = executableDirectory;
tryPath += "/Release/";
tryPath += executableName;
tryPath += cmSystemTools::GetExecutableExtension();
if(cmSystemTools::FileExists(tryPath.c_str()))
{
fullPath = cmSystemTools::CollapseFullPath(tryPath.c_str());
}
if (!cmSystemTools::RunCommand(fullPath.c_str(), output)) if (!cmSystemTools::RunCommand(fullPath.c_str(), output))
{ {
std::cerr << "Error: " << fullPath.c_str() << " execution failed\n"; std::cerr << "Error: " << fullPath.c_str() << " execution failed\n";

View File

@ -117,7 +117,7 @@ void ctest::ProcessDirectory(int &passed, int &failed)
nwd += *j; nwd += *j;
if (cmSystemTools::FileIsDirectory(nwd.c_str())) if (cmSystemTools::FileIsDirectory(nwd.c_str()))
{ {
cerr << "Changing directory into " << nwd.c_str() << "\n"; std::cerr << "Changing directory into " << nwd.c_str() << "\n";
cmSystemTools::ChangeDirectory(nwd.c_str()); cmSystemTools::ChangeDirectory(nwd.c_str());
this->ProcessDirectory(passed,failed); this->ProcessDirectory(passed,failed);
} }
@ -128,7 +128,7 @@ void ctest::ProcessDirectory(int &passed, int &failed)
if (name == "ADD_TEST") if (name == "ADD_TEST")
{ {
cerr << "Testing " << args[0] << " ... "; std::cerr << "Testing " << args[0] << " ... ";
// find the test executable // find the test executable
std::string testCommand = this->FindExecutable(args[1].c_str()); std::string testCommand = this->FindExecutable(args[1].c_str());
// add the arguments // add the arguments