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)
ADD_TEST(simple ${CMake_BINARY_DIR}/Source/cmaketest
${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(BUILD_TESTING)

View File

@ -131,7 +131,9 @@ inline bool operator==(std::string const& a, const char* b)
{ return (a==std::string(b)); }
# 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
{
typedef std::string Parent;

View File

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

View File

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