summaryrefslogtreecommitdiffstats
path: root/Source/CTest
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2005-07-14 17:25:40 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2005-07-14 17:25:40 (GMT)
commitc7de609a372961ceff9121f43c412ac13ae4af45 (patch)
treed711307b2b12bef5bcd58f064e4cb38dad8a49fb /Source/CTest
parentb7b35d2c5aab37c83a77e016de5e01bfaef4eff7 (diff)
downloadCMake-c7de609a372961ceff9121f43c412ac13ae4af45.zip
CMake-c7de609a372961ceff9121f43c412ac13ae4af45.tar.gz
CMake-c7de609a372961ceff9121f43c412ac13ae4af45.tar.bz2
ENH: Add custom supression regular expressions
Diffstat (limited to 'Source/CTest')
-rw-r--r--Source/CTest/cmCTestCoverageHandler.cxx29
-rw-r--r--Source/CTest/cmCTestCoverageHandler.h10
2 files changed, 39 insertions, 0 deletions
diff --git a/Source/CTest/cmCTestCoverageHandler.cxx b/Source/CTest/cmCTestCoverageHandler.cxx
index 509ebec..b871a61 100644
--- a/Source/CTest/cmCTestCoverageHandler.cxx
+++ b/Source/CTest/cmCTestCoverageHandler.cxx
@@ -40,6 +40,7 @@ cmCTestCoverageHandler::cmCTestCoverageHandler()
void cmCTestCoverageHandler::Initialize()
{
this->Superclass::Initialize();
+ m_CustomCoverageExclude.empty();
}
//----------------------------------------------------------------------
@@ -77,6 +78,18 @@ void cmCTestCoverageHandler::EndCoverageLogFile(cmGeneratedFileStream& ostr, int
bool cmCTestCoverageHandler::ShouldIDoCoverage(const char* file, const char* srcDir,
const char* binDir)
{
+ std::vector<cmsys::RegularExpression>::iterator sit;
+ for ( sit = m_CustomCoverageExcludeRegex.begin();
+ sit != m_CustomCoverageExcludeRegex.end(); ++ sit )
+ {
+ if ( sit->find(file) )
+ {
+ cmCTestLog(m_CTest, HANDLER_VERBOSE_OUTPUT, " File " << file
+ << " is excluded in CTestCustom.ctest" << std::endl;);
+ return false;
+ }
+ }
+
std::string fSrcDir = cmSystemTools::CollapseFullPath(srcDir);
std::string fBinDir = cmSystemTools::CollapseFullPath(binDir);
std::string fFile = cmSystemTools::CollapseFullPath(file);
@@ -219,6 +232,15 @@ int cmCTestCoverageHandler::ProcessHandler()
// No coverage files is a valid thing, so the exit code is 0
return 0;
}
+
+ m_CustomCoverageExcludeRegex.empty();
+ std::vector<cmStdString>::iterator rexIt;
+ for ( rexIt = m_CustomCoverageExclude.begin();
+ rexIt != m_CustomCoverageExclude.end();
+ ++ rexIt )
+ {
+ m_CustomCoverageExcludeRegex.push_back(cmsys::RegularExpression(rexIt->c_str()));
+ }
typedef std::vector<int> singleFileCoverageVector;
typedef std::map<std::string, singleFileCoverageVector> totalCoverageMap;
@@ -697,3 +719,10 @@ int cmCTestCoverageHandler::ProcessHandler()
}
return 0;
}
+
+//----------------------------------------------------------------------
+void cmCTestCoverageHandler::PopulateCustomVectors(cmMakefile *mf)
+{
+ cmCTest::PopulateCustomVector(mf, "CTEST_CUSTOM_COVERAGE_EXCLUDE",
+ m_CustomCoverageExclude);
+}
diff --git a/Source/CTest/cmCTestCoverageHandler.h b/Source/CTest/cmCTestCoverageHandler.h
index 052dced..aa6a4cd 100644
--- a/Source/CTest/cmCTestCoverageHandler.h
+++ b/Source/CTest/cmCTestCoverageHandler.h
@@ -22,6 +22,8 @@
#include "cmCTestGenericHandler.h"
#include "cmListFileCache.h"
+#include <cmsys/RegularExpression.hxx>
+
class cmGeneratedFileStream;
/** \class cmCTestCoverageHandler
@@ -42,6 +44,11 @@ public:
virtual void Initialize();
+ /**
+ * This method is called when reading CTest custom file
+ */
+ void PopulateCustomVectors(cmMakefile *mf);
+
private:
bool ShouldIDoCoverage(const char* file, const char* srcDir,
const char* binDir);
@@ -90,6 +97,9 @@ private:
bool m_Show;
};
+ std::vector<cmStdString> m_CustomCoverageExclude;
+ std::vector<cmsys::RegularExpression> m_CustomCoverageExcludeRegex;
+
typedef std::map<std::string, cmCTestCoverage> tm_CoverageMap;
};