change progressindicators color to red, when an error occurs.
authorClaus Gittinger <cg@exept.de>
Mon, 09 Jul 2001 11:28:17 +0200
changeset 25 ab09e4669864
parent 24 0f897c4468c3
child 26 d37988dbad81
change progressindicators color to red, when an error occurs.
TestRunner.st
--- a/TestRunner.st	Fri Jun 29 14:37:41 2001 +0200
+++ b/TestRunner.st	Mon Jul 09 11:28:17 2001 +0200
@@ -1,11 +1,11 @@
 "{ Package: 'stx:goodies/sunit' }"
 
 ApplicationModel subclass:#TestRunner
-	instanceVariableNames:'result lastPass defect allDefects defectMenu details mode
-		scriptModel script numberOfTestsToRun'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'SUnit-UI'
+        instanceVariableNames:'result lastPass defect allDefects defectMenu details mode
+                scriptModel script numberOfTestsToRun'
+        classVariableNames:''
+        poolDictionaries:''
+        category:'SUnit-UI'
 !
 
 
@@ -160,7 +160,7 @@
 
 open
 
-	^super open
+        ^super open
 !
 
 openOnTestCase:aTestCaseSubclass
@@ -207,43 +207,43 @@
     "*** Please change as required and accept it in the browser."
 
     ^defectMenu isNil 
-	ifTrue: [defectMenu := OrderedCollection new asValue]
-	ifFalse: [defectMenu]
+        ifTrue: [defectMenu := OrderedCollection new asValue]
+        ifFalse: [defectMenu]
 
     "Modified: / 4.4.2000 / 20:00:31 / Sames"
 !
 
 defects
 
-	^self builder componentAt: #defects
+        ^self builder componentAt: #defects
 
     "Created: / 21.6.2000 / 12:19:29 / Sames"
 !
 
 details
-	"This method was generated by UIDefiner.  Any edits made here
-	may be lost whenever methods are automatically defined.  The
-	initialization provided below may have been preempted by an
-	initialize method."
+        "This method was generated by UIDefiner.  Any edits made here
+        may be lost whenever methods are automatically defined.  The
+        initialization provided below may have been preempted by an
+        initialize method."
 
-	^details isNil
-		ifTrue:
-			[details := '...' asValue]
-		ifFalse:
-			[details]
+        ^details isNil
+                ifTrue:
+                        [details := '...' asValue]
+                ifFalse:
+                        [details]
 !
 
 mode
-	"This method was generated by UIDefiner.  Any edits made here
-	may be lost whenever methods are automatically defined.  The
-	initialization provided below may have been preempted by an
-	initialize method."
+        "This method was generated by UIDefiner.  Any edits made here
+        may be lost whenever methods are automatically defined.  The
+        initialization provided below may have been preempted by an
+        initialize method."
 
-	^mode isNil
-		ifTrue:
-			[mode := 'N/A' asValue]
-		ifFalse:
-			[mode]
+        ^mode isNil
+                ifTrue:
+                        [mode := 'N/A' asValue]
+                ifFalse:
+                        [mode]
 !
 
 percentageDone
@@ -308,20 +308,20 @@
 
 scriptModel
     "This method was generated by UIDefiner.  Any edits made here
-	may be lost whenever methods are automatically defined.  The
-	initialization provided below may have been preempted by an
-	initialize method."
+        may be lost whenever methods are automatically defined.  The
+        initialization provided below may have been preempted by an
+        initialize method."
 
     ^scriptModel isNil 
-	ifTrue: [scriptModel := (TestCase allSubclasses collect: [:each | each name]) asValue]
-	ifFalse: [scriptModel]
+        ifTrue: [scriptModel := (TestCase allSubclasses collect: [:each | each name]) asValue]
+        ifFalse: [scriptModel]
 
     "Modified: / 2.4.2000 / 14:37:51 / Sames"
 !
 
 selection
 
-	^defect
+        ^defect
 
     "Created: / 4.4.2000 / 18:50:55 / Sames"
 !
@@ -336,8 +336,8 @@
     |holder|
 
     (holder := builder bindingAt:#selectionHolder) isNil ifTrue:[
-	holder := AspectAdaptor new subject:self; forAspect:#selection.
-	builder aspectAt:#selectionHolder put:holder.
+        holder := AspectAdaptor new subject:self; forAspect:#selection.
+        builder aspectAt:#selectionHolder put:holder.
 "/        holder addDependent:self.
     ].
     ^ holder.
@@ -348,7 +348,7 @@
 
 tests
 
-	^self builder componentAt: #tests
+        ^self builder componentAt: #tests
 
     "Created: / 4.4.2000 / 19:57:37 / Sames"
 ! !
@@ -367,7 +367,7 @@
 !
 
 debugSelectedFailure
-	self debugTest: self selection
+        self debugTest: self selection
 
     "Created: / 21.6.2000 / 10:58:58 / Sames"
     "Modified: / 21.6.2000 / 12:21:05 / Sames"
@@ -381,8 +381,8 @@
     self enableDebugButton value: true.
     self displayMode: 'Debugging'.
     (result isFailure: testCase) 
-	ifTrue: [testCase debugAsFailure]
-	ifFalse: [testCase debug]
+        ifTrue: [testCase debugAsFailure]
+        ifFalse: [testCase debug]
 
     "Modified: / 21.6.2000 / 12:12:09 / Sames"
 !
@@ -395,10 +395,10 @@
 
     | holder |
     (holder := builder bindingAt: #enableDebugButton) isNil 
-	ifTrue: 
-	    [holder := true asValue.
-	    builder aspectAt: #enableDebugButton put: holder
-	    "        holder addDependent:self."].
+        ifTrue: 
+            [holder := true asValue.
+            builder aspectAt: #enableDebugButton put: holder
+            "        holder addDependent:self."].
     ^holder
 
     "Created: / 21.6.2000 / 10:47:34 / Sames"
@@ -415,8 +415,8 @@
     |holder|
 
     (holder := builder bindingAt:#enableDefectsList) isNil ifTrue:[
-	holder := true asValue.
-	builder aspectAt:#enableDefectsList put:holder.
+        holder := true asValue.
+        builder aspectAt:#enableDefectsList put:holder.
 "/        holder addDependent:self.
     ].
     ^ holder.
@@ -434,8 +434,8 @@
     |holder|
 
     (holder := builder bindingAt:#enableRunButton) isNil ifTrue:[
-	holder := true asValue.
-	builder aspectAt:#enableRunButton put:holder.
+        holder := true asValue.
+        builder aspectAt:#enableRunButton put:holder.
 "/        holder addDependent:self.
     ].
     ^ holder.
@@ -473,7 +473,7 @@
 !
 
 runAllTests
-	self runSuite: self allTestSuite
+        self runSuite: self allTestSuite
 !
 
 runDefectTests
@@ -492,6 +492,7 @@
 runSuite: aTestSuite 
         |numTests|
 
+        "/ count the number of individual tests
         numTests := 0.
         aTestSuite tests do:[:eachTestOrSubSuite |
             (eachTestOrSubSuite isKindOf:TestSuite) ifTrue:[
@@ -503,23 +504,29 @@
         numberOfTestsToRun := numTests.
         self percentageDone value:0.
 
-        Cursor wait
-                showWhile: 
-                        [self displayRunning.
-                        aTestSuite addDependentToHierachy: self.
-                        result := TestResult new.
-                        self percentageIndicatorVisible value:true.
-                        [aTestSuite run:result]
-                                ensure: [aTestSuite removeDependentFromHierachy: self.
-                                         self percentageIndicatorVisible value:false.
-                                        ].
-                        self updateWindow]
+        Cursor 
+            wait
+                showWhile:[
+                    self displayRunning.
+                    aTestSuite addDependentToHierachy: self.
+                    result := TestResult new.
+                    self showPercentageIndicator.
+
+                    [
+                        aTestSuite run:result
+                    ] ensure: [
+                        aTestSuite removeDependentFromHierachy: self.
+                        self hidePercentageIndicator.
+                        self displayNormalColorInProgress.
+                    ].
+                    self updateWindow
+                ]
 !
 
 runTests
-	| testSuite |
-	(testSuite := self freshTestSuite) notNil ifTrue:
-		[self runSuite: testSuite]
+        | testSuite |
+        (testSuite := self freshTestSuite) notNil ifTrue:
+                [self runSuite: testSuite]
 
     "Modified: / 2.4.2000 / 14:16:10 / Sames"
 !
@@ -530,7 +537,7 @@
 
 selection: aValue
 
-	self debugTest: aValue
+        self debugTest: aValue
 
     "Created: / 4.4.2000 / 18:54:09 / Sames"
     "Modified: / 4.4.2000 / 19:01:33 / Sames"
@@ -566,12 +573,12 @@
 !TestRunner methodsFor:'Private'!
 
 allTestSuite
-	| tokens stream |
-	tokens := (TestCase subclasses collect: [:each | each name , '* '])
-				copyWithout: 'SUnitTest* '.
-	stream := WriteStream on: String new.
-	tokens do: [:each | stream nextPutAll: each].
-	^TestSuitesScripter run: stream contents
+        | tokens stream |
+        tokens := (TestCase subclasses collect: [:each | each name , '* '])
+                                copyWithout: 'SUnitTest* '.
+        stream := WriteStream on: String new.
+        tokens do: [:each | stream nextPutAll: each].
+        ^TestSuitesScripter run: stream contents
 !
 
 defectTestSuite
@@ -586,14 +593,14 @@
 !
 
 formatTime: aTime 
-	aTime hours > 0 ifTrue: [^aTime hours printString , 'h'].
-	aTime minutes > 0 ifTrue: [^aTime minutes printString , 'min'].
-	^aTime seconds printString , ' sec'
+        aTime hours > 0 ifTrue: [^aTime hours printString , 'h'].
+        aTime minutes > 0 ifTrue: [^aTime minutes printString , 'min'].
+        ^aTime seconds printString , ' sec'
 !
 
 freshTestSuite
 
-	^TestSuitesScripter run: self tests contents
+        ^TestSuitesScripter run: self tests contents
 
     "Modified: / 4.4.2000 / 20:13:41 / Sames"
 !
@@ -623,8 +630,8 @@
 !
 
 timeSinceLastPassAsString
-	lastPass isNil ifTrue: [^''].
-	^', ' , (self formatTime: (Time now subtractTime: lastPass getSeconds)) , ' since last Pass'
+        lastPass isNil ifTrue: [^''].
+        ^', ' , (self formatTime: (Time now subtractTime: lastPass getSeconds)) , ' since last Pass'
 
     "Modified: / 3.4.2000 / 19:17:11 / Sames"
 ! !
@@ -633,14 +640,14 @@
 
 displayColor: aColorValue
 
-	(builder componentAt: #mode) widget insideColor: aColorValue.
-	(builder componentAt: #details) widget insideColor: aColorValue.
+        (builder componentAt: #mode) widget insideColor: aColorValue.
+        (builder componentAt: #details) widget insideColor: aColorValue.
 
     "Modified: / 2.4.2000 / 14:21:42 / Sames"
 !
 
 displayDefault
-	self displayColor: self tests backgroundColor
+        self displayColor: self tests backgroundColor
 
     "Created: / 21.6.2000 / 12:28:06 / Sames"
     "Modified: / 21.6.2000 / 12:35:09 / Sames"
@@ -670,10 +677,18 @@
     "Modified: / 21.6.2000 / 11:10:14 / Sames"
 !
 
+displayErrorColorInProgress
+    (self builder componentAt:#ProgressIndicator1)
+      foregroundColor: (Color red:33 green:0 blue:0).
+
+"/    (self builder componentAt:#ProgressIndicator1)
+"/      backgroundColor: (Color red:67 green:0 blue:0)
+!
+
 displayFail
-	self displayRed.
-	self displayMode: 'Fail'.
-	self displayDetails: result printString.
+        self displayRed.
+        self displayMode: 'Fail'.
+        self displayDetails: result printString.
 !
 
 displayGray
@@ -681,15 +696,21 @@
 !
 
 displayGreen
-	self displayColor: ColorValue green
+        self displayColor: ColorValue green
 !
 
 displayMode: aString 
-	self mode value: aString
+        self mode value: aString
 
     "Modified: / 21.6.2000 / 11:14:19 / Sames"
 !
 
+displayNormalColorInProgress
+    (self builder componentAt:#ProgressIndicator1)
+      foregroundColor: (Color red:33 green:33 blue:0);
+      backgroundColor: (Color red:67 green:67 blue:0)
+!
+
 displayPass
     self displayMode: 'Pass'.
     self displayDetails: result runCount printString , ' run' , self timeSinceLastPassAsString.
@@ -700,7 +721,7 @@
 !
 
 displayRed
-	self displayColor: ColorValue red.
+        self displayColor: ColorValue red.
 !
 
 displayRefresh
@@ -717,47 +738,56 @@
 !
 
 displayRunning
-	self displayYellow.
-	self displayMode: 'running'. 
-	self displayDetails: '...'.
+        self displayYellow.
+        self displayMode: 'running'. 
+        self displayDetails: '...'.
 !
 
 displayYellow
-	self displayColor: ColorValue yellow
+        self displayColor: ColorValue yellow
 !
 
-update:aParameter with:anArgument from:changedObject 
-    (aParameter isKindOf:TestCase) ifTrue:[
-        self percentageDone 
-            value:(result runCount / numberOfTestsToRun * 100) rounded.
-        self displayDetails:aParameter printString
-    ] ifFalse:[
-        super 
-            update:aParameter
-            with:anArgument
-            from:changedObject
-    ].
+hidePercentageIndicator
+    self percentageIndicatorVisible value:false.
+!
 
+showPercentageIndicator
+    self percentageIndicatorVisible value:true.
+!
+
+update: anObject 
     changedObject == Smalltalk ifTrue:[
         (anArgument isBehavior and:[anArgument isSubclassOf:TestCase]) ifTrue:[
             self updateSuitesList
-        ]
-    ]
+        ].
+        ^ self
+    ].
+
+    (anObject isKindOf: TestCase) ifTrue: [
+        (result errorCount + result failureCount) > 0 ifTrue:[
+            self displayErrorColorInProgress.
+        ].
+        self percentageDone value:(result runCount / numberOfTestsToRun * 100) rounded.
+        self displayDetails: anObject printString
+        ^ self
+    ].
+
+    super update: anObject
 !
 
 updateDefects
-	self displayDefects: result defects
+        self displayDefects: result defects
 !
 
 updateWindow
-	result hasPassed
-		ifTrue: [self displayPass]
-		ifFalse: [self displayFail].
-	self updateDefects
+        result hasPassed
+                ifTrue: [self displayPass]
+                ifFalse: [self displayFail].
+        self updateDefects
 ! !
 
 !TestRunner class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestRunner.st,v 1.14 2001-06-29 12:37:41 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestRunner.st,v 1.15 2001-07-09 09:28:17 cg Exp $'
 ! !