Browse Source

BUG: ADD_TEST now only does stuff if ENABLE_TESTING has been run.

Amitha Perera 24 years ago
parent
commit
2eb9d09e04
2 changed files with 25 additions and 19 deletions
  1. 22 18
      Source/cmAddTestCommand.cxx
  2. 3 1
      Source/cmAddTestCommand.h

+ 22 - 18
Source/cmAddTestCommand.cxx

@@ -78,28 +78,32 @@ void cmAddTestCommand::FinalPass()
   fname += "/";
   fname += "DartTestfile.txt";
   
-  // Open the output Testfile
-  std::ofstream fout(fname.c_str(), std::ios::app);
-  if (!fout)
+
+  // If the file doesn't exist, then ENABLE_TESTING hasn't been run
+  if (cmSystemTools::FileExists(fname.c_str()))
     {
-    cmSystemTools::Error("Error Writing ", fname.c_str());
-    return;
-    }
+    // Open the output Testfile
+    std::ofstream fout(fname.c_str(), std::ios::app);
+    if (!fout)
+      {
+        cmSystemTools::Error("Error Writing ", fname.c_str());
+        return;
+      }
 
-  std::vector<std::string>::iterator it;
+    std::vector<std::string>::iterator it;
 
   // for each arg in the test
-  fout << "ADD_TEST(";
-  it = m_Args.begin();
-  fout << (*it).c_str();
-  ++it;
-  for (; it != m_Args.end(); ++it)
-    {
-    fout << " " << (*it).c_str();
-    }
-  fout << ")" << std::endl;
-  fout.close();
-  
+    fout << "ADD_TEST(";
+    it = m_Args.begin();
+    fout << (*it).c_str();
+    ++it;
+    for (; it != m_Args.end(); ++it)
+      {
+        fout << " " << (*it).c_str();
+      }
+    fout << ")" << std::endl;
+    fout.close();
+    }  
   return;
 }
 

+ 3 - 1
Source/cmAddTestCommand.h

@@ -92,7 +92,9 @@ public:
     {
     return
       "ADD_TEST(testname exename arg1 arg2 arg3 ...)\n"
-      "This command adds a test target to the current directory. "
+      "If the ENABLE_TESTING command has been run, this command adds a"
+      "test target to the current directory. If ENABLE_TESTING has not"
+      "been run, this command does nothing.\n"
       "The tests are run by the testing subsystem by executing exename "
       "with the specified arguments. exename can be either an executable "
       "built by built by this project or an arbitrary executable on the "