--- 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 $'
! !