From c7de609a372961ceff9121f43c412ac13ae4af45 Mon Sep 17 00:00:00 2001 From: Andy Cedilnik Date: Thu, 14 Jul 2005 13:25:40 -0400 Subject: [PATCH] ENH: Add custom supression regular expressions --- Source/CTest/cmCTestCoverageHandler.cxx | 29 +++++++++++++++++++++++++ Source/CTest/cmCTestCoverageHandler.h | 10 +++++++++ 2 files changed, 39 insertions(+) diff --git a/Source/CTest/cmCTestCoverageHandler.cxx b/Source/CTest/cmCTestCoverageHandler.cxx index 509ebec8e..b871a616e 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::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::iterator rexIt; + for ( rexIt = m_CustomCoverageExclude.begin(); + rexIt != m_CustomCoverageExclude.end(); + ++ rexIt ) + { + m_CustomCoverageExcludeRegex.push_back(cmsys::RegularExpression(rexIt->c_str())); + } typedef std::vector singleFileCoverageVector; typedef std::map 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 052dcedaa..aa6a4cd75 100644 --- a/Source/CTest/cmCTestCoverageHandler.h +++ b/Source/CTest/cmCTestCoverageHandler.h @@ -22,6 +22,8 @@ #include "cmCTestGenericHandler.h" #include "cmListFileCache.h" +#include + 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 m_CustomCoverageExclude; + std::vector m_CustomCoverageExcludeRegex; + typedef std::map tm_CoverageMap; };