Skip to content
GitLab
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
04f0a634
Commit
04f0a634
authored
Jun 14, 2005
by
Andy Cedilnik
Browse files
ENH: Add commands for memory checking and coverage
parent
40d289dd
Changes
6
Hide whitespace changes
Inline
Side-by-side
Source/CMakeLists.txt
View file @
04f0a634
...
...
@@ -203,14 +203,16 @@ INCLUDE_DIRECTORIES(
# Sources for CTestLib
#
SET
(
CMTEST_SRCS cmCTest.cxx
CTest/cmCTestBuildAndTestHandler.cxx
CTest/cmCTestBuildCommand.cxx
CTest/cmCTestBuildHandler.cxx
CTest/cmCTestBuildAndTestHandler.cxx
CTest/cmCTestConfigureCommand.cxx
CTest/cmCTestConfigureHandler.cxx
CTest/cmCTestCoverageCommand.cxx
CTest/cmCTestCoverageHandler.cxx
CTest/cmCTestEmptyBinaryDirectoryCommand.cxx
CTest/cmCTestGenericHandler.cxx
CTest/cmCTestMemCheckCommand.cxx
CTest/cmCTestMemCheckHandler.cxx
CTest/cmCTestRunScriptCommand.cxx
CTest/cmCTestScriptHandler.cxx
...
...
Source/CTest/cmCTestCoverageCommand.cxx
0 → 100644
View file @
04f0a634
/*=========================================================================
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
"cmCTestCoverageCommand.h"
#include
"cmCTest.h"
#include
"cmCTestGenericHandler.h"
bool
cmCTestCoverageCommand
::
InitialPass
(
std
::
vector
<
std
::
string
>
const
&
args
)
{
const
char
*
build_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
)
{
build_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
]
==
"BUILD"
)
{
if
(
build_dir
)
{
this
->
SetError
(
"called with incorrect number of arguments. BUILD 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
;
}
}
if
(
build_dir
)
{
m_CTest
->
SetCTestConfiguration
(
"BuildDirectory"
,
build_dir
);
}
cmCTestGenericHandler
*
handler
=
m_CTest
->
GetHandler
(
"coverage"
);
if
(
!
handler
)
{
this
->
SetError
(
"internal CTest error. Cannot instantiate test handler"
);
return
false
;
}
std
::
string
current_dir
=
cmSystemTools
::
GetCurrentWorkingDirectory
();
cmSystemTools
::
ChangeDirectory
(
m_CTest
->
GetCTestConfiguration
(
"BuildDirectory"
).
c_str
());
int
res
=
handler
->
ProcessHandler
();
if
(
res_var
)
{
cmOStringStream
str
;
str
<<
res
;
m_Makefile
->
AddDefinition
(
res_var
,
str
.
str
().
c_str
());
}
cmSystemTools
::
ChangeDirectory
(
current_dir
.
c_str
());
return
true
;
}
Source/CTest/cmCTestCoverageCommand.h
0 → 100644
View file @
04f0a634
/*=========================================================================
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 cmCTestCoverageCommand_h
#define cmCTestCoverageCommand_h
#include
"cmCTestCommand.h"
/** \class cmCTestCoverage
* \brief Run a ctest script
*
* cmCTestCoverageCommand defineds the command to test the project.
*/
class
cmCTestCoverageCommand
:
public
cmCTestCommand
{
public:
cmCTestCoverageCommand
()
{}
/**
* This is a virtual constructor for the command.
*/
virtual
cmCommand
*
Clone
()
{
cmCTestCoverageCommand
*
ni
=
new
cmCTestCoverageCommand
;
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_COVERAGE"
;}
/**
* Succinct documentation.
*/
virtual
const
char
*
GetTerseDocumentation
()
{
return
"Tests the repository."
;
}
/**
* More documentation.
*/
virtual
const
char
*
GetFullDocumentation
()
{
return
" CTEST_COVERAGE([BUILD build_dir] [RETURN_VALUE res])
\n
"
"Perform the coverage of the given build directory and stores results in "
"Coverage.xml. The second argument is a variable that will hold value."
;
}
cmTypeMacro
(
cmCTestCoverageCommand
,
cmCTestCommand
);
};
#endif
Source/CTest/cmCTestMemCheckCommand.cxx
0 → 100644
View file @
04f0a634
/*=========================================================================
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
"cmCTestMemCheckCommand.h"
#include
"cmCTest.h"
#include
"cmCTestGenericHandler.h"
bool
cmCTestMemCheckCommand
::
InitialPass
(
std
::
vector
<
std
::
string
>
const
&
args
)
{
const
char
*
build_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
)
{
build_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
]
==
"BUILD"
)
{
if
(
build_dir
)
{
this
->
SetError
(
"called with incorrect number of arguments. BUILD 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
;
}
}
if
(
build_dir
)
{
m_CTest
->
SetCTestConfiguration
(
"BuildDirectory"
,
build_dir
);
}
cmCTestGenericHandler
*
handler
=
m_CTest
->
GetHandler
(
"memcheck"
);
if
(
!
handler
)
{
this
->
SetError
(
"internal CTest error. Cannot instantiate test handler"
);
return
false
;
}
std
::
string
current_dir
=
cmSystemTools
::
GetCurrentWorkingDirectory
();
cmSystemTools
::
ChangeDirectory
(
m_CTest
->
GetCTestConfiguration
(
"BuildDirectory"
).
c_str
());
int
res
=
handler
->
ProcessHandler
();
if
(
res_var
)
{
cmOStringStream
str
;
str
<<
res
;
m_Makefile
->
AddDefinition
(
res_var
,
str
.
str
().
c_str
());
}
cmSystemTools
::
ChangeDirectory
(
current_dir
.
c_str
());
return
true
;
}
Source/CTest/cmCTestMemCheckCommand.h
0 → 100644
View file @
04f0a634
/*=========================================================================
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 cmCTestMemCheckCommand_h
#define cmCTestMemCheckCommand_h
#include
"cmCTestCommand.h"
/** \class cmCTestMemCheck
* \brief Run a ctest script
*
* cmCTestMemCheckCommand defineds the command to test the project.
*/
class
cmCTestMemCheckCommand
:
public
cmCTestCommand
{
public:
cmCTestMemCheckCommand
()
{}
/**
* This is a virtual constructor for the command.
*/
virtual
cmCommand
*
Clone
()
{
cmCTestMemCheckCommand
*
ni
=
new
cmCTestMemCheckCommand
;
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_MEMCHECK"
;}
/**
* Succinct documentation.
*/
virtual
const
char
*
GetTerseDocumentation
()
{
return
"Tests the repository."
;
}
/**
* More documentation.
*/
virtual
const
char
*
GetFullDocumentation
()
{
return
" CTEST_MEMCHECK([BUILD build_dir] [RETURN_VALUE res])
\n
"
"Performs a memory checking of tests in the given build directory and "
"stores results in MemCheck.xml. The second argument is a variable that "
"will hold value."
;
}
cmTypeMacro
(
cmCTestMemCheckCommand
,
cmCTestCommand
);
};
#endif
Source/CTest/cmCTestScriptHandler.cxx
View file @
04f0a634
...
...
@@ -45,13 +45,15 @@
#include
"cmCTestBuildCommand.h"
#include
"cmCTestConfigureCommand.h"
#include
"cmCTestCoverageCommand.h"
#include
"cmCTestEmptyBinaryDirectoryCommand.h"
#include
"cmCTestMemCheckCommand.h"
#include
"cmCTestRunScriptCommand.h"
#include
"cmCTestSleepCommand.h"
#include
"cmCTestStartCommand.h"
#include
"cmCTestUpdateCommand.h"
#include
"cmCTestTestCommand.h"
#include
"cmCTestSubmitCommand.h"
#include
"cmCTestTestCommand.h"
#include
"cmCTestUpdateCommand.h"
#define CTEST_INITIAL_CMAKE_OUTPUT_FILE_NAME "CTestInitialCMakeOutput.log"
...
...
@@ -228,7 +230,9 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg)
// created with the same format lets do that - ken
this
->
AddCTestCommand
(
new
cmCTestBuildCommand
);
this
->
AddCTestCommand
(
new
cmCTestConfigureCommand
);
this
->
AddCTestCommand
(
new
cmCTestCoverageCommand
);
this
->
AddCTestCommand
(
new
cmCTestEmptyBinaryDirectoryCommand
);
this
->
AddCTestCommand
(
new
cmCTestMemCheckCommand
);
this
->
AddCTestCommand
(
new
cmCTestRunScriptCommand
);
this
->
AddCTestCommand
(
new
cmCTestSleepCommand
);
this
->
AddCTestCommand
(
new
cmCTestStartCommand
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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