ENH: Add CTEST_EXECUTABLE_NAME to CTest scripting. This way you do not have to specify ctest executable in CTEST_COMMAND, but just a variable

This commit is contained in:
Andy Cedilnik 2004-10-01 12:21:16 -04:00
parent 7350756728
commit 6e9ec4598d
4 changed files with 16 additions and 9 deletions

View File

@ -95,7 +95,7 @@ void cmCTestScriptHandler::AddConfigurationScript(const char *script)
//----------------------------------------------------------------------
// the generic entry point for handling scripts, this routine will run all
// the scripts provides a -S arguments
int cmCTestScriptHandler::RunConfigurationScript()
int cmCTestScriptHandler::RunConfigurationScript(cmCTest* ctest)
{
int res = 0;
std::vector<cmStdString>::iterator it;
@ -104,7 +104,7 @@ int cmCTestScriptHandler::RunConfigurationScript()
it ++ )
{
// for each script run it
res += this->RunConfigurationScript(
res += this->RunConfigurationScript(ctest,
cmSystemTools::CollapseFullPath(it->c_str()));
}
return res;
@ -114,7 +114,7 @@ int cmCTestScriptHandler::RunConfigurationScript()
//----------------------------------------------------------------------
// this sets up some variables for thew script to use, creates the required
// cmake instance and generators, and then reads in the script
int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg)
int cmCTestScriptHandler::ReadInScript(cmCTest* ctest, const std::string& total_script_arg)
{
// if the argument has a , in it then it needs to be broken into the fist
// argument (which is the script) and the second argument which will be
@ -156,6 +156,8 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg)
m_LocalGenerator->GetMakefile()->AddDefinition("CTEST_SCRIPT_NAME",
cmSystemTools::GetFilenameName(
script).c_str());
m_LocalGenerator->GetMakefile()->AddDefinition("CTEST_EXECUTABLE_NAME",
ctest->GetCTestExecutable());
// add the script arg if defined
if (script_arg.size())
{
@ -277,13 +279,13 @@ void cmCTestScriptHandler::LocalSleep(unsigned int secondsToWait)
//----------------------------------------------------------------------
// run a specific script
int cmCTestScriptHandler::RunConfigurationScript(
int cmCTestScriptHandler::RunConfigurationScript(cmCTest* ctest,
const std::string& total_script_arg)
{
int result;
// read in the script
result = this->ReadInScript(total_script_arg);
result = this->ReadInScript(ctest, total_script_arg);
if (result)
{
return result;

View File

@ -26,6 +26,7 @@ class cmMakefile;
class cmLocalGenerator;
class cmGlobalGenerator;
class cmake;
class cmCTest;
/** \class cmCTestScriptHandler
* \brief A class that handles ctest -S invocations
@ -74,7 +75,7 @@ public:
/**
* Run a dashboard using a specified confiuration script
*/
int RunConfigurationScript();
int RunConfigurationScript(cmCTest* ctest);
/*
* If verbose then more informaiton is printed out
@ -86,7 +87,7 @@ public:
private:
// reads in a script
int ReadInScript(const std::string& total_script_arg);
int ReadInScript(cmCTest* ctest, const std::string& total_script_arg);
// extract vars from the script to set ivars
int ExtractVariables();
@ -103,7 +104,7 @@ private:
int BackupDirectories();
void RestoreBackupDirectories();
int RunConfigurationScript(const std::string& script);
int RunConfigurationScript(cmCTest* ctest, const std::string& script);
int RunConfigurationDashboard();
std::vector<cmStdString> m_ConfigurationScripts;

View File

@ -1575,7 +1575,7 @@ int cmCTest::Run(std::vector<std::string>const& args, std::string* output)
// call process directory
if (this->m_RunConfigurationScript)
{
res = this->ScriptHandler->RunConfigurationScript();
res = this->ScriptHandler->RunConfigurationScript(this);
}
else
{

View File

@ -179,6 +179,10 @@ public:
int RunTest(std::vector<const char*> args, std::string* output, int *retVal,
std::ostream* logfile);
//! Get the path to CTest
const char* GetCTestExecutable() { return m_CTestSelf.c_str(); }
private:
// these are helper classes
cmCTestBuildHandler *BuildHandler;