added: #withStandardOutputAndTranscriptRedirectedDo:
authorClaus Gittinger <cg@exept.de>
Wed, 10 Aug 2011 00:08:34 +0200
changeset 330 f5e87fbc113a
parent 329 831f6f33e661
child 331 ea59d5e02844
added: #withStandardOutputAndTranscriptRedirectedDo:
TestAsserter.st
--- a/TestAsserter.st	Tue Aug 09 23:56:19 2011 +0200
+++ b/TestAsserter.st	Wed Aug 10 00:08:34 2011 +0200
@@ -1,7 +1,7 @@
 "{ Package: 'stx:goodies/sunit' }"
 
 Object subclass:#TestAsserter
-	instanceVariableNames:'startTime endTime exceptionDetail'
+	instanceVariableNames:'startTime endTime collectedStdout exceptionDetail'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'SUnit-Base'
@@ -265,16 +265,38 @@
 		    ex sunitExitWith:(conditionBlock value: ex)]
 
     "Created: / 05-05-2011 / 20:08:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+withStandardOutputAndTranscriptRedirectedDo:aBlock
+    |result savedStdout savedTranscript stdOutCollector|
+
+    ((Smalltalk respondsTo:#isSmalltalkX) and:[Smalltalk isSmalltalkX]) ifTrue:[
+        savedStdout := Stdout.
+        savedTranscript := Transcript.
+        stdOutCollector := WriteStream on:(String new:100).
+        [
+            Stdout := Transcript := stdOutCollector.
+            result := aBlock value.
+        ] ensure:[
+            Stdout := savedStdout.
+            Transcript := savedTranscript.
+        ].
+        collectedStdout := stdOutCollector contents.
+        ^ result.
+    ].
+
+    "/ add other dialects here...
+    ^ aBlock value
 ! !
 
 !TestAsserter class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestAsserter.st,v 1.11 2011-08-07 10:39:39 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestAsserter.st,v 1.12 2011-08-09 22:08:34 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestAsserter.st,v 1.11 2011-08-07 10:39:39 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestAsserter.st,v 1.12 2011-08-09 22:08:34 cg Exp $'
 !
 
 version_SVN