ENH: add more testing
This commit is contained in:
parent
3a3b55679b
commit
047c7b5af4
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue