Browse Source

CTest: Expand directories for Cobertura search

Change the Cobertura handler to look for an environment variable
called "COBERTURADIR" which contains the directory where the
coverage.xml file is found.  If that variable doesn't exist,
continue to use the default of the binary directory.

Update the test to use an appropriate value in the environment
variables.
Joseph Snyder 10 years ago
parent
commit
32268810d9
2 changed files with 19 additions and 3 deletions
  1. 18 3
      Source/CTest/cmCTestCoverageHandler.cxx
  2. 1 0
      Tests/CMakeLists.txt

+ 18 - 3
Source/CTest/cmCTestCoverageHandler.cxx

@@ -820,11 +820,26 @@ int cmCTestCoverageHandler::HandleCoberturaCoverage(
 {
   cmParseCoberturaCoverage cov(*cont, this->CTest);
 
-  // Assume the coverage.xml is in the source directory
-  std::string coverageXMLFile = this->CTest->GetBinaryDir() + "/coverage.xml";
+  // Assume the coverage.xml is in the binary directory
+  // check for the COBERTURADIR environment variable,
+  // if it doesn't exist or is empty, assume the
+  // binary directory is used.
+  std::string coverageXMLFile;
+  const char* covDir = cmSystemTools::GetEnv("COBERTURADIR");
+  if(covDir && strlen(covDir) != 0)
+    {
+      coverageXMLFile = std::string(covDir);
+    }
+  else
+    {
+      coverageXMLFile = this->CTest->GetBinaryDir();
+    }
+  // build the find file string with the directory from above
+  coverageXMLFile += "/coverage.xml";
 
   if(cmSystemTools::FileExists(coverageXMLFile.c_str()))
     {
+    // If file exists, parse it
     cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
                "Parsing Cobertura XML file: " << coverageXMLFile
                << std::endl, this->Quiet);
@@ -833,7 +848,7 @@ int cmCTestCoverageHandler::HandleCoberturaCoverage(
   else
     {
     cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
-               "Cannot find Cobertura XML file: " << coverageXMLFile
+               " Cannot find Cobertura XML file: " << coverageXMLFile
                << std::endl, this->Quiet);
     }
   return static_cast<int>(cont->TotalCoverage.size());

+ 1 - 0
Tests/CMakeLists.txt

@@ -2544,6 +2544,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
   set_tests_properties(CTestCoberturaCoverage PROPERTIES
       PASS_REGULAR_EXPRESSION
       "Process file.*CoverageTest.java.*Total LOC:.*18.*Percentage Coverage: 72.22.*"
+      ENVIRONMENT COBERTURADIR=${CMake_BINARY_DIR}/Testing/CoberturaCoverage
       ENVIRONMENT COVFILE=)