Better handling of failed testcases.
authorStefan Vogel <sv@exept.de>
Tue, 13 Jul 2004 13:58:25 +0200
changeset 117 13bdbc0cefce
parent 116 1e076b09f7fe
child 118 9464f408680f
Better handling of failed testcases.
TestRunner.st
--- 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 $'
 ! !