diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx
index a7a4c6f..19cfd60 100755
--- a/Source/CTest/cmCTestTestHandler.cxx
+++ b/Source/CTest/cmCTestTestHandler.cxx
@@ -816,7 +816,7 @@ void cmCTestTestHandler::ProcessOneTest(cmCTestTestProperties *it,
           }
         }
       }
-    
+
     if (res == cmsysProcess_State_Exited &&
         (retVal == 0 || it->RequiredRegularExpressions.size()) &&
         !forceFail)
@@ -892,6 +892,13 @@ void cmCTestTestHandler::ProcessOneTest(cmCTestTestProperties *it,
       }
     if ( testFailed )
       {
+      if ( this->CTest->GetOutputTestOutputOnTestFailure())
+        {
+        std::string test_outputs("\n*** Test Failed:\n");
+        test_outputs.append(output);
+        cmCTestLog(this->CTest, HANDLER_OUTPUT,
+                   test_outputs << std::endl << std::flush);
+        }
       failed.push_back(testname);
       }
     else
diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx
index 0cd5d56..69215ef 100644
--- a/Source/cmCTest.cxx
+++ b/Source/cmCTest.cxx
@@ -1215,17 +1215,9 @@ int cmCTest::RunTest(std::vector<const char*> argv,
   if(result == cmsysProcess_State_Exited)
     {
     *retVal = cmsysProcess_GetExitValue(cp);
-    if(*retVal != 0 && this->OutputTestOutputOnTestFailure)
-      {
-        OutputTestErrors(tempOutput);
-      }
     }
   else if(result == cmsysProcess_State_Exception)
     {
-    if(this->OutputTestOutputOnTestFailure)
-      {
-        OutputTestErrors(tempOutput);
-      }
     *retVal = cmsysProcess_GetExitException(cp);
     std::string outerr = "\n*** Exception executing: ";
     outerr += cmsysProcess_GetExceptionString(cp);
@@ -2763,11 +2755,3 @@ double cmCTest::GetRemainingTimeAllowed()
   return ch->GetRemainingTimeAllowed();
 }
 
-//----------------------------------------------------------------------
-void cmCTest::OutputTestErrors(std::vector<char> const &process_output)
-{
-  std::string test_outputs("\n*** Test Failed:\n");
-  test_outputs.append(&*process_output.begin(), process_output.size());
-  cmCTestLog(this, HANDLER_OUTPUT, test_outputs << std::endl << std::flush);
-}
-
diff --git a/Source/cmCTest.h b/Source/cmCTest.h
index 5eca3c3..c456eae 100644
--- a/Source/cmCTest.h
+++ b/Source/cmCTest.h
@@ -377,6 +377,9 @@ public:
   void SetStreams(std::ostream* out, std::ostream* err)
     { this->StreamOut = out; this->StreamErr = err; }
   void AddSiteProperties(std::ostream& );
+
+  bool GetOutputTestOutputOnTestFailure()
+    { return this->OutputTestOutputOnTestFailure; }
 private:
   std::string ConfigType;
   bool Verbose;
