Correctly capture and report stdout.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Tue, 16 Sep 2014 19:57:01 +0200
changeset 247 7387f32855da
parent 246 f0957ea6444a
child 248 82f1ff8c96a6
Correctly capture and report stdout.
reports/Builder__TestReport.st
--- a/reports/Builder__TestReport.st	Fri Aug 08 12:50:15 2014 +0200
+++ b/reports/Builder__TestReport.st	Tue Sep 16 19:57:01 2014 +0200
@@ -10,7 +10,7 @@
 !
 
 TestResult subclass:#Result
-	instanceVariableNames:'format time npassed nfailed nerror nskipped'
+	instanceVariableNames:'format time npassed nfailed nerror nskipped collector'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:TestReport
@@ -303,25 +303,27 @@
 addError: testcase detail: exception
 
     outcome result: (TestResult stateError).
+    outcome collectedOutput: collector contents. 
     format writeTestCase: testcase outcome: outcome time: time exception: exception.
     Transcript show:'...ERROR'.
     self errorOutcomes add:outcome.      
     nerror := nerror + 1.
 
     "Created: / 03-08-2011 / 15:00:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 06-06-2014 / 09:34:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-09-2014 / 18:55:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 addFailure: testcase detail: exception
 
     outcome result: (TestResult stateFail).
+    outcome collectedOutput: collector contents. 
     format writeTestCase: testcase outcome: outcome time: time exception: exception.
     Transcript show:'...FAILED'.
     self failureOutcomes add: outcome.
     nfailed := nfailed + 1.
 
     "Created: / 03-08-2011 / 15:00:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 06-06-2014 / 09:34:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-09-2014 / 15:23:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 addPass: testcase
@@ -338,6 +340,7 @@
 addSkipped: testcase
 
     outcome := self createOutcome.
+    outcome collectedOutput: collector contents. 
     outcome testCase: testcase.        
     outcome result: TestResult stateSkip.
     format writeTestCase: testcase outcome: outcome time: time exception: nil.
@@ -345,7 +348,7 @@
     nskipped := nskipped + 1.
 
     "Created: / 21-11-2012 / 15:35:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 06-06-2014 / 11:20:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-09-2014 / 15:24:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !TestReport::Result methodsFor:'initialization'!
@@ -361,7 +364,7 @@
 !TestReport::Result methodsFor:'running'!
 
 performCase:aTestCase 
-    | savedStdout savedStderr savedTranscript collector|
+    | savedStdout savedStderr savedTranscript |
 
     savedStdout := Stdout.
     savedStderr := Stdout.
@@ -376,11 +379,12 @@
         Stdout := savedStdout.
         Stderr := savedStderr.
         Transcript := savedTranscript.
-        outcome collectedOutput: collector contents.
+        outcome collectedOutput: nil. "/ flush it, it has been written to output already
+        collector := nil.
     ].
 
     "Created: / 03-08-2011 / 18:40:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 05-06-2014 / 16:25:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-09-2014 / 15:28:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 runCase:aTestCase debugged: debugged