Better handling of failed testcases.
--- a/TestRunner.st Wed Feb 18 11:21:22 2004 +0100
+++ b/TestRunner.st Tue Jul 13 13:58:25 2004 +0200
@@ -91,118 +91,124 @@
<resource: #canvas>
^
- #(#FullSpec
- #name: #windowSpec
- #window:
- #(#WindowSpec
- #label: 'SUnit Camp Smalltalk 3.1/STX TestRunner'
- #name: 'SUnit Camp Smalltalk 3.1/STX TestRunner'
- #min: #(#Point 362 122)
- #bounds: #(#Rectangle 16 42 509 217)
- #icon: #defaultIcon
+ #(FullSpec
+ name: windowSpec
+ window:
+ (WindowSpec
+ label: 'SUnit Camp Smalltalk 3.1/STX TestRunner'
+ name: 'SUnit Camp Smalltalk 3.1/STX TestRunner'
+ min: (Point 362 122)
+ bounds: (Rectangle 0 0 493 175)
+ icon: defaultIcon
)
- #component:
- #(#SpecCollection
- #collection: #(
- #(#ActionButtonSpec
- #label: 'Refresh'
- #name: 'RefreshButton'
- #layout: #(#LayoutFrame 0 0 0 0 75 0 48 0)
- #activeHelpKey: #refreshSuitesButton
- #model: #refreshSuites
+ component:
+ (SpecCollection
+ collection: (
+ (ActionButtonSpec
+ label: 'Refresh'
+ name: 'RefreshButton'
+ layout: (LayoutFrame 0 0 0 0 75 0 48 0)
+ activeHelpKey: refreshSuitesButton
+ tabable: true
+ model: refreshSuites
)
- #(#MenuButtonSpec
- #name: 'category'
- #layout: #(#LayoutFrame 76 0 0 0 -216 1 24 0)
- #activeHelpKey: #suitesCategoryList
- #tabable: true
- #model: #category
- #menu: #categoryList
+ (MenuButtonSpec
+ name: 'category'
+ layout: (LayoutFrame 76 0 0 0 -216 1 24 0)
+ activeHelpKey: suitesCategoryList
+ tabable: true
+ model: category
+ menu: categoryList
+ )
+ (MenuButtonSpec
+ name: tests
+ layout: (LayoutFrame 76 0 24 0 -216 1 48 0)
+ activeHelpKey: suiteSelection
+ tabable: true
+ model: script
+ menu: scriptModel
+ useIndex: true
)
- #(#MenuButtonSpec
- #name: #tests
- #layout: #(#LayoutFrame 76 0 24 0 -216 1 48 0)
- #activeHelpKey: #suiteSelection
- #tabable: true
- #model: #script
- #menu: #scriptModel
- #useIndex: true
+ (ActionButtonSpec
+ label: 'Run'
+ name: 'RunButton'
+ layout: (LayoutFrame -215 1 0 0 -160 1 48 0)
+ activeHelpKey: runButton
+ tabable: true
+ model: runTests
+ enableChannel: enableRunButton
)
- #(#ActionButtonSpec
- #label: 'Run'
- #name: 'RunButton'
- #layout: #(#LayoutFrame -215 1 0 0 -160 1 48 0)
- #activeHelpKey: #runButton
- #model: #runTests
- #enableChannel: #enableRunButton
- )
- #(#ActionButtonSpec
- #label: 'ReRun Defects'
- #name: 'ReRunButton'
- #layout: #(#LayoutFrame -159 1 0 0 -57 1 48 0)
- #activeHelpKey: #rerunDefectsButton
- #model: #runDefects
- #enableChannel: #enableRunDefectsButton
+ (ActionButtonSpec
+ label: 'ReRun Defects'
+ name: 'ReRunButton'
+ layout: (LayoutFrame -159 1 0 0 -57 1 48 0)
+ activeHelpKey: rerunDefectsButton
+ tabable: true
+ model: runDefects
+ enableChannel: enableDefects
)
- #(#ActionButtonSpec
- #label: 'Run All'
- #name: 'RunAllButton'
- #layout: #(#LayoutFrame -56 1 0 0 0 1 48 0)
- #activeHelpKey: #runAllButton
- #model: #runAllTests
+ (ActionButtonSpec
+ label: 'Run All'
+ name: 'RunAllButton'
+ layout: (LayoutFrame -56 1 0 0 0 1 48 0)
+ activeHelpKey: runAllButton
+ tabable: true
+ model: runAllTests
)
- #(#ProgressIndicatorSpec
- #name: 'ProgressIndicator1'
- #layout: #(#LayoutFrame 0 0.0 49 0 0 1.0 60 0)
- #visibilityChannel: #percentageIndicatorVisible
- #model: #percentageDone
- #foregroundColor: #(#Color 32.9992 32.9992 0.0)
- #backgroundColor: #(#Color 66.9993 66.9993 0.0)
- #showPercentage: false
+ (ProgressIndicatorSpec
+ name: 'ProgressIndicator1'
+ layout: (LayoutFrame 0 0.0 49 0 0 1.0 60 0)
+ visibilityChannel: percentageIndicatorVisible
+ model: percentageDone
+ foregroundColor: (Color 32.999160753796 32.999160753796 0.0)
+ backgroundColor: (Color 66.999313344015 66.999313344015 0.0)
+ showPercentage: false
)
- #(#LabelSpec
- #label: '...'
- #name: 'details'
- #layout: #(#LayoutFrame 0 0 21 0.5 0 1 -25 1)
- #labelChannel: #details
+ (LabelSpec
+ label: '...'
+ name: 'details'
+ layout: (LayoutFrame 0 0 21 0.5 0 1 -25 1)
+ labelChannel: details
)
- #(#LabelSpec
- #label: 'N/A'
- #name: 'mode'
- #layout: #(#LayoutFrame 0 0 49 0 0 1 35 0.5)
- #style: #(#FontDescription #Arial #bold #roman 14)
- #labelChannel: #mode
+ (LabelSpec
+ label: 'N/A'
+ name: 'mode'
+ layout: (LayoutFrame 0 0 49 0 0 1 35 0.5)
+ style: (FontDescription Arial bold roman 14)
+ labelChannel: mode
)
- #(#MenuButtonSpec
- #name: #defects
- #layout: #(#LayoutFrame 0 0 -24 1 -152 1 0 1)
- #isOpaque: true
- #flags: 40
- #activeHelpKey: #defectsList
- #tabable: true
- #model: #selectionHolder
- #initiallyDisabled: true
- #enableChannel: #enableDefectsList
- #menu: #defectMenu
- #ignoreReselect: false
+ (MenuButtonSpec
+ name: defects
+ layout: (LayoutFrame 0 0 -24 1 -152 1 0 1)
+ isOpaque: true
+ flags: 40
+ activeHelpKey: defectsList
+ tabable: true
+ model: selectionHolder
+ initiallyDisabled: true
+ enableChannel: enableDefects
+ menu: defectMenu
+ ignoreReselect: false
)
- #(#ActionButtonSpec
- #label: 'Browse'
- #name: 'BrowseButton'
- #layout: #(#LayoutFrame -151 1 -24 1 -76 1 0 1)
- #activeHelpKey: #browseButton
- #model: #browseSelectedTestCase
- #initiallyDisabled: true
- #enableChannel: #enableRunButton
+ (ActionButtonSpec
+ label: 'Browse'
+ name: 'BrowseButton'
+ layout: (LayoutFrame -151 1 -24 1 -76 1 0 1)
+ activeHelpKey: browseButton
+ tabable: true
+ model: browseSelectedTestCase
+ initiallyDisabled: true
+ enableChannel: enableRunButton
)
- #(#ActionButtonSpec
- #label: 'Debug'
- #name: 'DebugButton'
- #layout: #(#LayoutFrame -75 1 -24 1 0 1 0 1)
- #activeHelpKey: #debugButton
- #model: #debugSelectedFailure
- #initiallyDisabled: true
- #enableChannel: #enableDebugButton
+ (ActionButtonSpec
+ label: 'Debug'
+ name: 'DebugButton'
+ layout: (LayoutFrame -75 1 -24 1 0 1 0 1)
+ activeHelpKey: debugButton
+ tabable: true
+ model: debugSelectedFailure
+ initiallyDisabled: true
+ enableChannel: enableDebugButton
)
)
@@ -403,18 +409,12 @@
!
selectionHolder
- "automatically generated by UIPainter ..."
-
- "*** the code below creates a default model when invoked."
- "*** (which may not be the one you wanted)"
- "*** Please change as required and accept it in the browser."
|holder|
(holder := builder bindingAt:#selectionHolder) isNil ifTrue:[
- holder := AspectAdaptor new subject:self; forAspect:#selection.
- builder aspectAt:#selectionHolder put:holder.
-"/ holder addDependent:self.
+ holder := AspectAdaptor new subject:self; forAspect:#selection.
+ builder aspectAt:#selectionHolder put:holder.
].
^ holder.
@@ -511,40 +511,28 @@
!
enableDebugButton
- "automatically generated by UIPainter ..."
- "*** the code below creates a default model when invoked."
- "*** (which may not be the one you wanted)"
- "*** Please change as required and accept it in the browser."
+
+ |holder|
- | holder |
- (holder := builder bindingAt: #enableDebugButton) isNil
- ifTrue:
- [holder := true asValue.
- builder aspectAt: #enableDebugButton put: holder
- " holder addDependent:self."].
- ^holder
+ (holder := builder bindingAt:#enableDebugButton) isNil ifTrue:[
+ holder := false asValue.
+ builder aspectAt:#enableDebugButton put:holder
+ ].
+ ^ holder
"Created: / 21.6.2000 / 10:47:34 / Sames"
"Modified: / 21.6.2000 / 10:51:07 / Sames"
!
-enableDefectsList
- "automatically generated by UIPainter ..."
-
- "*** the code below creates a default model when invoked."
- "*** (which may not be the one you wanted)"
- "*** Please change as required and accept it in the browser."
+enableDefects
|holder|
- (holder := builder bindingAt:#enableDefectsList) isNil ifTrue:[
- holder := true asValue.
- builder aspectAt:#enableDefectsList put:holder.
-"/ holder addDependent:self.
+ (holder := builder bindingAt:#enableDefects) isNil ifTrue:[
+ holder := true asValue.
+ builder aspectAt:#enableDefects put:holder.
].
^ holder.
-
- "Created: / 21.6.2000 / 10:47:34 / Sames"
!
enableRunButton
@@ -566,23 +554,6 @@
"Created: / 21.6.2000 / 10:47:34 / Sames"
!
-enableRunDefectsButton
- "automatically generated by UIPainter ..."
-
- "*** the code below creates a default model when invoked."
- "*** (which may not be the one you wanted)"
- "*** Please change as required and accept it in the browser."
-
- |holder|
-
- (holder := builder bindingAt:#enableRunDefectsButton) isNil ifTrue:[
- holder := true asValue.
- builder aspectAt:#enableRunDefectsButton put:holder.
-"/ holder addDependent:self.
- ].
- ^ holder.
-!
-
refreshSuites
self updateCategoryList.
self updateSuitesList.
@@ -711,7 +682,11 @@
selection: aValue
- self debugTest: aValue
+ aValue = '' ifTrue:[
+ defect := aValue.
+ ] ifFalse:[
+ self debugTest: aValue
+ ].
"Created: / 4.4.2000 / 18:54:09 / Sames"
"Modified: / 4.4.2000 / 19:01:33 / Sames"
@@ -721,7 +696,7 @@
|ok className description cls|
self enableRunButton value:(ok := self freshTestSuite notNil and:[self script value notNil]).
- self enableRunDefectsButton value:(ok and:[allDefects size > 0]).
+ self enableDefects value:(ok and:[allDefects size > 0]).
self script value notNil ifTrue:[
className := self selectedScript string.
@@ -869,9 +844,8 @@
"/ self tests selection: 'ExampleSetTest'. self script value:1.
self enableRunButton value: (self script value notNil).
- self enableRunDefectsButton value: false.
self enableDebugButton value: false.
- self enableDefectsList value: false.
+ self enableDefects value: false.
self script onChangeSend: #suiteSelectionChanged to:self.
Smalltalk addDependent:self.
@@ -967,18 +941,19 @@
!
displayDefects: aCollection
- | menuButton |
- menuButton := self builder componentAt: #defects.
+ | failedTests|
aCollection isEmpty ifTrue: [
- menuButton disable.
- self enableRunDefectsButton value:false.
- ^ self
+ self selectionHolder value:''.
+ self enableDefects value:false.
+ self enableDebugButton value:false.
+ ^ self
].
allDefects := Dictionary new.
aCollection do: [:each | allDefects at: each printString put: each].
- self defectMenu value: allDefects keys asOrderedCollection sort.
- menuButton enable.
- self enableRunDefectsButton value:(allDefects size > 0).
+ failedTests := allDefects keys asOrderedCollection sort.
+ self defectMenu value: failedTests.
+"/ self selectionHolder value: failedTests first withoutNotifying:self.
+ self enableDefects value:true.
"Modified: / 4.4.2000 / 20:11:06 / Sames"
!
@@ -1048,7 +1023,7 @@
self displayDetails:'...'.
self updateDefects.
self enableRunButton value: (self script value notNil).
- self enableRunDefectsButton value: false.
+ self enableDefects value: false.
self enableDebugButton value: false.
self displayDefault
@@ -1138,5 +1113,5 @@
!TestRunner class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/goodies/sunit/TestRunner.st,v 1.53 2003-12-15 15:46:17 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/goodies/sunit/TestRunner.st,v 1.54 2004-07-13 11:58:25 stefan Exp $'
! !