Kaynağa Gözat

ENH: Two things. If there is CTestCustom.cmake in the toplevel directory read that file only. If there is CTestCustom.ctest in the toplevel directory, do the glob, if there is none, do nothing

Andy Cedilnik 19 yıl önce
ebeveyn
işleme
9a94d1144d
1 değiştirilmiş dosya ile 37 ekleme ve 14 silme
  1. 37 14
      Source/cmCTest.cxx

+ 37 - 14
Source/cmCTest.cxx

@@ -1876,30 +1876,53 @@ int cmCTest::ReadCustomConfigurationFileTree(const char* dir)
   lg->SetGlobalGenerator(&gg);
   cmMakefile *mf = lg->GetMakefile();
 
-  std::string rexpr = dir;
-  rexpr += "/CTestCustom.ctest";
-  cmsys::Glob gl;
-  gl.RecurseOn();
-  gl.FindFiles(rexpr);
-  std::vector<std::string>& files = gl.GetFiles();
-  std::vector<std::string>::iterator fileIt;
-  for ( fileIt = files.begin(); fileIt != files.end();
-    ++ fileIt )
+  bool found = false;
+  std::string fname = dir;
+  fname += "/CTestCustom.cmake";
+  if ( cmSystemTools::FileExists(fname.c_str()) )
     {
     cmCTestLog(this, DEBUG, "* Read custom CTest configuration file: "
-      << fileIt->c_str() << std::endl);
-    if ( !lg->GetMakefile()->ReadListFile(0, fileIt->c_str()) ||
+      << fname.c_str() << std::endl);
+    if ( !lg->GetMakefile()->ReadListFile(0, fname.c_str()) ||
       cmSystemTools::GetErrorOccuredFlag() )
       {
       cmCTestLog(this, ERROR_MESSAGE, "Problem reading custom configuration: "
+        << fname.c_str() << std::endl);
+      }
+    found = true;
+    }
+
+  std::string rexpr = dir;
+  rexpr += "/CTestCustom.ctest";
+  if ( !found && cmSystemTools::FileExists(fname.c_str()) )
+    {
+    cmsys::Glob gl;
+    gl.RecurseOn();
+    gl.FindFiles(rexpr);
+    std::vector<std::string>& files = gl.GetFiles();
+    std::vector<std::string>::iterator fileIt;
+    for ( fileIt = files.begin(); fileIt != files.end();
+      ++ fileIt )
+      {
+      cmCTestLog(this, DEBUG, "* Read custom CTest configuration file: "
         << fileIt->c_str() << std::endl);
+      if ( !lg->GetMakefile()->ReadListFile(0, fileIt->c_str()) ||
+        cmSystemTools::GetErrorOccuredFlag() )
+        {
+        cmCTestLog(this, ERROR_MESSAGE, "Problem reading custom configuration: "
+          << fileIt->c_str() << std::endl);
+        }
       }
+    found = true;
     }
 
-  cmCTest::t_TestingHandlers::iterator it;
-  for ( it = this->TestingHandlers.begin(); it != this->TestingHandlers.end(); ++ it )
+  if ( found )
     {
-    it->second->PopulateCustomVectors(mf);
+    cmCTest::t_TestingHandlers::iterator it;
+    for ( it = this->TestingHandlers.begin(); it != this->TestingHandlers.end(); ++ it )
+      {
+      it->second->PopulateCustomVectors(mf);
+      }
     }
 
   return 1;