Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
CMake
CMake
Commits
f1ebfb24
Commit
f1ebfb24
authored
May 02, 2005
by
Andy Cedilnik
Browse files
ENH: More commands. Start working on new style ctest configuration
parent
572d9f11
Changes
11
Hide whitespace changes
Inline
Side-by-side
CTestConfig.cmake
0 → 100644
View file @
f1ebfb24
SET
(
CTEST_NIGHTLY_START_TIME
"21:00:00 EDT"
)
SET
(
CTEST_DROP_SITE
"public.kitware.com"
)
SET
(
CTEST_DROP_LOCATION
"/cgi-bin/HTTPUploadDartFile.cgi"
)
SET
(
CTEST_TRIGGER_SITE
"http://
${
DROP_SITE
}
/cgi-bin/Submit-CMake-TestingResults.cgi"
)
Source/CMakeLists.txt
View file @
f1ebfb24
...
...
@@ -151,20 +151,22 @@ INCLUDE_DIRECTORIES(
# Sources for CTestLib
#
SET
(
CMTEST_SRCS cmCTest.cxx
CTest/cmCTest
GenericHandler
.cxx
CTest/cmCTest
BuildCommand
.cxx
CTest/cmCTestBuildHandler.cxx
CTest/cmCTestConfigureCommand.cxx
CTest/cmCTestConfigureHandler.cxx
CTest/cmCTestCoverageHandler.cxx
CTest/cmCTestScriptHandler.cxx
CTest/cmCTestTestHandler.cxx
CTest/cmCTestUpdateHandler.cxx
CTest/cmCTestEmptyBinaryDirectoryCommand.cxx
CTest/cmCTestGenericHandler.cxx
CTest/cmCTestMemCheckHandler.cxx
CTest/cmCTestRunScriptCommand.cxx
CTest/cmCTestScriptHandler.cxx
CTest/cmCTestSleepCommand.cxx
CTest/cmCTestStartCommand.cxx
CTest/cmCTestUpdateCommand.cxx
CTest/cmCTestMemCheckHandler.cxx
CTest/cmCTestSubmit.cxx
CTest/cmCTestTestHandler.cxx
CTest/cmCTestUpdateCommand.cxx
CTest/cmCTestUpdateHandler.cxx
)
# Build CTestLib
...
...
Source/CTest/cmCTestBuildCommand.cxx
0 → 100644
View file @
f1ebfb24
/*=========================================================================
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 "cmCTestBuildCommand.h"
#include "cmCTest.h"
#include "cmCTestGenericHandler.h"
bool
cmCTestBuildCommand
::
InitialPass
(
std
::
vector
<
std
::
string
>
const
&
args
)
{
if
(
args
.
size
()
!=
2
)
{
this
->
SetError
(
"called with incorrect number of arguments"
);
return
false
;
}
const
char
*
build_dir
=
args
[
0
].
c_str
();
const
char
*
res_var
=
args
[
1
].
c_str
();
m_CTest
->
SetDartConfiguration
(
"BuildDirectory"
,
build_dir
);
cmCTestGenericHandler
*
handler
=
m_CTest
->
GetHandler
(
"build"
);
if
(
!
handler
)
{
this
->
SetError
(
"internal CTest error. Cannot instantiate build handler"
);
return
false
;
}
int
res
=
handler
->
ProcessHandler
();
cmOStringStream
str
;
str
<<
res
;
m_Makefile
->
AddDefinition
(
res_var
,
str
.
str
().
c_str
());
return
true
;
}
Source/CTest/cmCTestBuildCommand.h
0 → 100644
View file @
f1ebfb24
/*=========================================================================
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.
=========================================================================*/
#ifndef cmCTestBuildCommand_h
#define cmCTestBuildCommand_h
#include "cmCTestCommand.h"
/** \class cmCTestBuild
* \brief Run a ctest script
*
* cmCTestBuildCommand defineds the command to build the project.
*/
class
cmCTestBuildCommand
:
public
cmCTestCommand
{
public:
cmCTestBuildCommand
()
{}
/**
* This is a virtual constructor for the command.
*/
virtual
cmCommand
*
Clone
()
{
cmCTestBuildCommand
*
ni
=
new
cmCTestBuildCommand
;
ni
->
m_CTest
=
this
->
m_CTest
;
ni
->
m_CTestScriptHandler
=
this
->
m_CTestScriptHandler
;
return
ni
;
}
/**
* This is called when the command is first encountered in
* the CMakeLists.txt file.
*/
virtual
bool
InitialPass
(
std
::
vector
<
std
::
string
>
const
&
args
);
/**
* The name of the command as specified in CMakeList.txt.
*/
virtual
const
char
*
GetName
()
{
return
"CTEST_BUILD"
;}
/**
* Succinct documentation.
*/
virtual
const
char
*
GetTerseDocumentation
()
{
return
"Builds the repository."
;
}
/**
* More documentation.
*/
virtual
const
char
*
GetFullDocumentation
()
{
return
" CTEST_BUILD(build_dir res)
\n
"
"Builds the given build directory and stores results in Build.xml."
;
}
cmTypeMacro
(
cmCTestBuildCommand
,
cmCTestCommand
);
};
#endif
Source/CTest/cmCTestConfigureCommand.cxx
0 → 100644
View file @
f1ebfb24
/*=========================================================================
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 "cmCTestConfigureCommand.h"
#include "cmCTest.h"
#include "cmCTestGenericHandler.h"
bool
cmCTestConfigureCommand
::
InitialPass
(
std
::
vector
<
std
::
string
>
const
&
args
)
{
if
(
args
.
size
()
!=
2
)
{
this
->
SetError
(
"called with incorrect number of arguments"
);
return
false
;
}
const
char
*
build_dir
=
args
[
0
].
c_str
();
const
char
*
res_var
=
args
[
1
].
c_str
();
m_CTest
->
SetDartConfigurationFromCMakeVariable
(
m_Makefile
,
"ConfigureCommand"
,
"CTEST_CONFIGURE_COMMAND"
);
m_CTest
->
SetDartConfiguration
(
"BuildDirectory"
,
build_dir
);
cmCTestGenericHandler
*
handler
=
m_CTest
->
GetHandler
(
"configure"
);
if
(
!
handler
)
{
this
->
SetError
(
"internal CTest error. Cannot instantiate configure handler"
);
return
false
;
}
int
res
=
handler
->
ProcessHandler
();
cmOStringStream
str
;
str
<<
res
;
m_Makefile
->
AddDefinition
(
res_var
,
str
.
str
().
c_str
());
return
true
;
}
Source/CTest/cmCTestConfigureCommand.h
0 → 100644
View file @
f1ebfb24
/*=========================================================================
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.
=========================================================================*/
#ifndef cmCTestConfigureCommand_h
#define cmCTestConfigureCommand_h
#include "cmCTestCommand.h"
/** \class cmCTestConfigure
* \brief Run a ctest script
*
* cmCTestConfigureCommand defineds the command to configures the project.
*/
class
cmCTestConfigureCommand
:
public
cmCTestCommand
{
public:
cmCTestConfigureCommand
()
{}
/**
* This is a virtual constructor for the command.
*/
virtual
cmCommand
*
Clone
()
{
cmCTestConfigureCommand
*
ni
=
new
cmCTestConfigureCommand
;
ni
->
m_CTest
=
this
->
m_CTest
;
ni
->
m_CTestScriptHandler
=
this
->
m_CTestScriptHandler
;
return
ni
;
}
/**
* This is called when the command is first encountered in
* the CMakeLists.txt file.
*/
virtual
bool
InitialPass
(
std
::
vector
<
std
::
string
>
const
&
args
);
/**
* The name of the command as specified in CMakeList.txt.
*/
virtual
const
char
*
GetName
()
{
return
"CTEST_CONFIGURE"
;}
/**
* Succinct documentation.
*/
virtual
const
char
*
GetTerseDocumentation
()
{
return
"Configures the repository."
;
}
/**
* More documentation.
*/
virtual
const
char
*
GetFullDocumentation
()
{
return
" CTEST_CONFIGURE(build_dir res)
\n
"
"Configures the given build directory and stores results in Configure.xml. The "
"second argument is a variable that will hold return value."
;
}
cmTypeMacro
(
cmCTestConfigureCommand
,
cmCTestCommand
);
};
#endif
Source/CTest/cmCTestScriptHandler.cxx
View file @
f1ebfb24
...
...
@@ -42,6 +42,8 @@
# include <unistd.h>
#endif
#include "cmCTestBuildCommand.h"
#include "cmCTestConfigureCommand.h"
#include "cmCTestEmptyBinaryDirectoryCommand.h"
#include "cmCTestRunScriptCommand.h"
#include "cmCTestSleepCommand.h"
...
...
@@ -220,8 +222,10 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg)
// add any ctest specific commands, probably should have common superclass
// for ctest commands to clean this up. If a couple more commands are
// created with the same format lets do that - ken
this
->
AddCTestCommand
(
new
cmCTestRunScriptCommand
);
this
->
AddCTestCommand
(
new
cmCTestBuildCommand
);
this
->
AddCTestCommand
(
new
cmCTestConfigureCommand
);
this
->
AddCTestCommand
(
new
cmCTestEmptyBinaryDirectoryCommand
);
this
->
AddCTestCommand
(
new
cmCTestRunScriptCommand
);
this
->
AddCTestCommand
(
new
cmCTestSleepCommand
);
this
->
AddCTestCommand
(
new
cmCTestStartCommand
);
this
->
AddCTestCommand
(
new
cmCTestUpdateCommand
);
...
...
@@ -372,6 +376,7 @@ int cmCTestScriptHandler::RunConfigurationScript(const std::string& total_script
return
result
;
}
//----------------------------------------------------------------------
int
cmCTestScriptHandler
::
RunCurrentScript
()
{
int
result
;
...
...
Source/CTest/cmCTestStartCommand.cxx
View file @
f1ebfb24
...
...
@@ -17,6 +17,8 @@
#include "cmCTestStartCommand.h"
#include "cmCTest.h"
#include "cmLocalGenerator.h"
#include "cmGlobalGenerator.h"
bool
cmCTestStartCommand
::
InitialPass
(
std
::
vector
<
std
::
string
>
const
&
args
)
...
...
@@ -65,6 +67,27 @@ bool cmCTestStartCommand::InitialPass(
std
::
cout
<<
"Run dashboard with model "
<<
smodel
<<
" for src dir: "
<<
src_dir
<<
" and binary dir: "
<<
bld_dir
<<
std
::
endl
;
std
::
string
fname
=
src_dir
;
fname
+=
"/CTestConfig.cmake"
;
cmSystemTools
::
ConvertToUnixSlashes
(
fname
);
if
(
cmSystemTools
::
FileExists
(
fname
.
c_str
())
)
{
std
::
cout
<<
" Reading ctest configuration file: "
<<
fname
.
c_str
()
<<
std
::
endl
;
bool
readit
=
m_Makefile
->
ReadListFile
(
m_Makefile
->
GetCurrentListFile
(),
fname
.
c_str
()
);
if
(
!
readit
)
{
std
::
string
m
=
"Could not find include file: "
;
m
+=
fname
;
this
->
SetError
(
m
.
c_str
());
return
false
;
}
}
m_CTest
->
SetDartConfigurationFromCMakeVariable
(
m_Makefile
,
"NightlyStartTime"
,
"CTEST_NIGHTLY_START_TIME"
);
m_CTest
->
SetDartConfiguration
(
"SourceDirectory"
,
src_dir
);
m_CTest
->
SetDartConfiguration
(
"BuildDirectory"
,
bld_dir
);
int
model
=
m_CTest
->
GetTestModelFromString
(
smodel
);
m_CTest
->
SetTestModel
(
model
);
m_CTest
->
SetProduceXML
(
true
);
...
...
Source/CTest/cmCTestUpdateCommand.cxx
View file @
f1ebfb24
...
...
@@ -31,6 +31,9 @@ bool cmCTestUpdateCommand::InitialPass(
const
char
*
source_dir
=
args
[
0
].
c_str
();
const
char
*
res_var
=
args
[
1
].
c_str
();
m_CTest
->
SetDartConfigurationFromCMakeVariable
(
m_Makefile
,
"CVSCommand"
,
"CTEST_CVS_COMMAND"
);
m_CTest
->
SetDartConfigurationFromCMakeVariable
(
m_Makefile
,
"SVNCommand"
,
"CTEST_SVN_COMMAND"
);
cmCTestGenericHandler
*
handler
=
m_CTest
->
GetHandler
(
"update"
);
if
(
!
handler
)
{
...
...
Source/cmCTest.cxx
View file @
f1ebfb24
...
...
@@ -227,6 +227,7 @@ cmCTest::cmCTest()
m_BuildNoClean
=
false
;
m_BuildTwoConfig
=
false
;
m_Verbose
=
false
;
m_ExtraVerbose
=
false
;
m_ProduceXML
=
false
;
m_ShowOnly
=
false
;
m_RunConfigurationScript
=
false
;
...
...
@@ -343,7 +344,7 @@ int cmCTest::Initialize(const char* binary_dir)
if
(
m_TestModel
==
cmCTest
::
NIGHTLY
)
{
lctime
=
cmCTest
::
GetNightlyTime
(
m_DartConfiguration
[
"NightlyStartTime"
],
m_Verbose
,
m_
Extra
Verbose
,
m_TomorrowTag
);
}
char
datestring
[
100
];
...
...
@@ -627,7 +628,7 @@ int cmCTest::SubmitResults()
std
::
cout
<<
"Submit files (using "
<<
m_DartConfiguration
[
"DropMethod"
]
<<
")"
<<
std
::
endl
;
cmCTestSubmit
submit
;
submit
.
SetVerbose
(
m_Verbose
);
submit
.
SetVerbose
(
m_
Extra
Verbose
);
submit
.
SetLogFile
(
&
ofs
);
if
(
m_DartConfiguration
[
"DropMethod"
]
==
""
||
m_DartConfiguration
[
"DropMethod"
]
==
"ftp"
)
...
...
@@ -1048,7 +1049,7 @@ int cmCTest::RunTest(std::vector<const char*> argv,
}
cmSystemTools
::
ChangeDirectory
(
oldpath
.
c_str
());
if
(
m_Verbose
)
if
(
m_
Extra
Verbose
)
{
std
::
cout
<<
"Internal cmCTest object used to run test.
\n
"
;
std
::
cout
<<
*
output
<<
"
\n
"
;
...
...
@@ -1079,7 +1080,7 @@ int cmCTest::RunTest(std::vector<const char*> argv,
{
tempOutput
.
insert
(
tempOutput
.
end
(),
data
,
data
+
length
);
}
if
(
m_Verbose
)
if
(
m_
Extra
Verbose
)
{
std
::
cout
.
write
(
data
,
length
);
std
::
cout
.
flush
();
...
...
@@ -1096,7 +1097,7 @@ int cmCTest::RunTest(std::vector<const char*> argv,
{
output
->
append
(
&*
tempOutput
.
begin
(),
tempOutput
.
size
());
}
if
(
m_Verbose
)
if
(
m_
Extra
Verbose
)
{
std
::
cout
<<
"-- Process completed"
<<
std
::
endl
;
}
...
...
@@ -1113,7 +1114,7 @@ int cmCTest::RunTest(std::vector<const char*> argv,
std
::
string
outerr
=
"
\n
*** Exception executing: "
;
outerr
+=
cmsysProcess_GetExceptionString
(
cp
);
*
output
+=
outerr
;
if
(
m_Verbose
)
if
(
m_
Extra
Verbose
)
{
std
::
cout
<<
outerr
.
c_str
()
<<
"
\n
"
;
std
::
cout
.
flush
();
...
...
@@ -1124,7 +1125,7 @@ int cmCTest::RunTest(std::vector<const char*> argv,
std
::
string
outerr
=
"
\n
*** ERROR executing: "
;
outerr
+=
cmsysProcess_GetErrorString
(
cp
);
*
output
+=
outerr
;
if
(
m_Verbose
)
if
(
m_
Extra
Verbose
)
{
std
::
cout
<<
outerr
.
c_str
()
<<
"
\n
"
;
std
::
cout
.
flush
();
...
...
@@ -1246,11 +1247,11 @@ int cmCTest::Run(std::vector<std::string>const& args, std::string* output)
if
(
arg
.
find
(
"-V"
,
0
)
==
0
||
arg
.
find
(
"--verbose"
,
0
)
==
0
)
{
this
->
m_Verbose
=
true
;
cmCTest
::
t_TestingHandlers
::
iterator
it
;
for
(
it
=
m_TestingHandlers
.
begin
();
it
!=
m_TestingHandlers
.
end
();
++
it
)
{
it
->
second
->
SetVerbose
(
this
->
m_Verbose
)
;
}
}
if
(
arg
.
find
(
"-VV"
,
0
)
==
0
||
arg
.
find
(
"--extra-verbose"
,
0
)
==
0
)
{
this
->
m_
Extra
Verbose
=
true
;
this
->
m_Verbose
=
true
;
}
if
(
arg
.
find
(
"-N"
,
0
)
==
0
||
arg
.
find
(
"--show-only"
,
0
)
==
0
)
...
...
@@ -1670,10 +1671,22 @@ int cmCTest::Run(std::vector<std::string>const& args, std::string* output)
// call process directory
if
(
this
->
m_RunConfigurationScript
)
{
cmCTest
::
t_TestingHandlers
::
iterator
it
;
for
(
it
=
m_TestingHandlers
.
begin
();
it
!=
m_TestingHandlers
.
end
();
++
it
)
{
it
->
second
->
SetVerbose
(
this
->
m_ExtraVerbose
);
}
this
->
GetHandler
(
"script"
)
->
SetVerbose
(
m_Verbose
);
res
=
this
->
GetHandler
(
"script"
)
->
ProcessHandler
();
}
else
{
m_Verbose
=
m_ExtraVerbose
;
cmCTest
::
t_TestingHandlers
::
iterator
it
;
for
(
it
=
m_TestingHandlers
.
begin
();
it
!=
m_TestingHandlers
.
end
();
++
it
)
{
it
->
second
->
SetVerbose
(
this
->
m_Verbose
);
}
if
(
!
this
->
Initialize
(
cmSystemTools
::
GetCurrentWorkingDirectory
().
c_str
())
)
{
res
=
12
;
...
...
@@ -2200,6 +2213,20 @@ std::string cmCTest::GetDartConfiguration(const char *name)
return
m_DartConfiguration
[
name
];
}
void
cmCTest
::
SetDartConfiguration
(
const
char
*
name
,
const
char
*
value
)
{
if
(
!
name
)
{
return
;
}
if
(
!
value
)
{
m_DartConfiguration
.
erase
(
name
);
return
;
}
m_DartConfiguration
[
name
]
=
value
;
}
std
::
string
cmCTest
::
GetCurrentTag
()
{
...
...
@@ -2230,3 +2257,15 @@ bool cmCTest::GetProduceXML()
{
return
m_ProduceXML
;
}
bool
cmCTest
::
SetDartConfigurationFromCMakeVariable
(
cmMakefile
*
mf
,
const
char
*
dconfig
,
const
char
*
cmake_var
)
{
const
char
*
ctvar
;
ctvar
=
mf
->
GetDefinition
(
cmake_var
);
if
(
!
ctvar
)
{
return
false
;
}
this
->
SetDartConfiguration
(
dconfig
,
ctvar
);
return
true
;
}
Source/cmCTest.h
View file @
f1ebfb24
...
...
@@ -101,6 +101,7 @@ public:
static
int
GetTestModelFromString
(
const
char
*
str
);
static
std
::
string
CleanString
(
const
std
::
string
&
str
);
std
::
string
GetDartConfiguration
(
const
char
*
name
);
void
SetDartConfiguration
(
const
char
*
name
,
const
char
*
value
);
/**
* constructor and destructor
...
...
@@ -192,9 +193,15 @@ public:
*/
cmCTestGenericHandler
*
GetHandler
(
const
char
*
handler
);
/*
* Set the CTest variable from CMake variable
*/
bool
SetDartConfigurationFromCMakeVariable
(
cmMakefile
*
mf
,
const
char
*
dconfig
,
const
char
*
cmake_var
);
private:
std
::
string
m_ConfigType
;
bool
m_Verbose
;
bool
m_ExtraVerbose
;
bool
m_ProduceXML
;
bool
m_ForceNewCTestProcess
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment