mirror of
https://github.com/reactos/CMake.git
synced 2025-02-13 16:10:57 +00:00
2cc5ed49d1
1. Support for showing line numbers when debugging ctest --show-line-numbers 2. Modify the ctest initialization code, so that it can be delayed 3. Handlers now have corresponding command if they were invoked from the command (so far only update actually use that) 4. Start command is simplified and the functionality is moved to CTest 5. Update can perform initial checkout if CTEST_CHECKOUT_COMMAND is set 6. Add test that checks out kwsys and perform tests on the fresh checkout
118 lines
3.4 KiB
C++
118 lines
3.4 KiB
C++
/*=========================================================================
|
|
|
|
Program: CMake - Cross-Platform Makefile Generator
|
|
Module: $RCSfile$
|
|
Language: C++
|
|
Date: $Date$
|
|
Version: $Revision$
|
|
|
|
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
|
|
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notices for more information.
|
|
|
|
=========================================================================*/
|
|
#include "cmCTestUpdateCommand.h"
|
|
|
|
#include "cmCTest.h"
|
|
#include "cmCTestGenericHandler.h"
|
|
|
|
bool cmCTestUpdateCommand::InitialPass(
|
|
std::vector<std::string> const& args)
|
|
{
|
|
const char* source_dir = 0;
|
|
const char* res_var = 0;
|
|
|
|
bool havereturn_variable = false;
|
|
bool havesource = false;
|
|
for(size_t i=0; i < args.size(); ++i)
|
|
{
|
|
if ( havereturn_variable )
|
|
{
|
|
res_var = args[i].c_str();
|
|
havereturn_variable = false;
|
|
}
|
|
else if ( havesource )
|
|
{
|
|
source_dir = args[i].c_str();
|
|
havesource = false;
|
|
}
|
|
else if(args[i] == "RETURN_VALUE")
|
|
{
|
|
if ( res_var )
|
|
{
|
|
this->SetError("called with incorrect number of arguments. RETURN_VALUE specified twice.");
|
|
return false;
|
|
}
|
|
havereturn_variable = true;
|
|
}
|
|
else if(args[i] == "SOURCE")
|
|
{
|
|
if ( source_dir )
|
|
{
|
|
this->SetError("called with incorrect number of arguments. SOURCE specified twice.");
|
|
return false;
|
|
}
|
|
havesource = true;
|
|
}
|
|
else
|
|
{
|
|
cmOStringStream str;
|
|
str << "called with incorrect number of arguments. Extra argument is: " << args[i].c_str() << ".";
|
|
this->SetError(str.str().c_str());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
m_CTest->SetCTestConfigurationFromCMakeVariable(m_Makefile, "CVSCommand", "CTEST_CVS_COMMAND");
|
|
m_CTest->SetCTestConfigurationFromCMakeVariable(m_Makefile, "SVNCommand", "CTEST_SVN_COMMAND");
|
|
|
|
const char* initialCheckoutCommand = m_Makefile->GetDefinition("CTEST_CHECKOUT_COMMAND");
|
|
if ( !initialCheckoutCommand )
|
|
{
|
|
initialCheckoutCommand = m_Makefile->GetDefinition("CTEST_CVS_CHECKOUT");
|
|
}
|
|
|
|
cmCTestGenericHandler* handler = m_CTest->GetHandler("update");
|
|
if ( !handler )
|
|
{
|
|
this->SetError("internal CTest error. Cannot instantiate update handler");
|
|
return false;
|
|
}
|
|
handler->SetCommand(this);
|
|
if ( !source_dir )
|
|
{
|
|
this->SetError("source directory not specified. Please use SOURCE tag");
|
|
return false;
|
|
}
|
|
if ( initialCheckoutCommand )
|
|
{
|
|
handler->SetOption("InitialCheckout", initialCheckoutCommand);
|
|
}
|
|
if ( (!cmSystemTools::FileExists(source_dir) || !cmSystemTools::FileIsDirectory(source_dir))
|
|
&& !initialCheckoutCommand )
|
|
{
|
|
cmOStringStream str;
|
|
str << "cannot find source directory: " << source_dir << ".";
|
|
if ( !cmSystemTools::FileExists(source_dir) )
|
|
{
|
|
str << " Looks like it is not checked out yet. Please specify CTEST_CHECKOUT_COMMAND.";
|
|
}
|
|
this->SetError(str.str().c_str());
|
|
return false;
|
|
}
|
|
handler->SetOption("SourceDirectory", source_dir);
|
|
int res = handler->ProcessHandler();
|
|
if ( res_var )
|
|
{
|
|
cmOStringStream str;
|
|
str << res;
|
|
m_Makefile->AddDefinition(res_var, str.str().c_str());
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|