diff options
author | Andy Cedilnik <andy.cedilnik@kitware.com> | 2005-07-14 17:25:40 (GMT) |
---|---|---|
committer | Andy Cedilnik <andy.cedilnik@kitware.com> | 2005-07-14 17:25:40 (GMT) |
commit | c7de609a372961ceff9121f43c412ac13ae4af45 (patch) | |
tree | d711307b2b12bef5bcd58f064e4cb38dad8a49fb /Source/CTest | |
parent | b7b35d2c5aab37c83a77e016de5e01bfaef4eff7 (diff) | |
download | CMake-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.cxx | 29 | ||||
-rw-r--r-- | Source/CTest/cmCTestCoverageHandler.h | 10 |
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; }; |