--- a/TestCase.st Sat Aug 20 16:00:36 2011 +0200
+++ b/TestCase.st Sat Aug 20 16:00:44 2011 +0200
@@ -7,8 +7,7 @@
category:'SUnit-Base'
!
-TestCase class instanceVariableNames:'lastTestRunResultOrNil lastTestRunsPassedTests lastTestRunsFailedTests
- lastTestRunsErrorTests'
+TestCase class instanceVariableNames:'lastOutcomes'
"
No other class instance variables are inherited by this class.
@@ -94,133 +93,64 @@
"Modified: / 02-08-2011 / 17:46:51 / cg"
!
-lastTestRunResult
+lastTestRunResultOrNil
- | result |
- result := TestResult new.
- lastTestRunsPassedTests ? #() do:
- [:selector|result passed add: (self selector: selector)].
- lastTestRunsFailedTests ? #() do:
- [:selector|result failures add: (self selector: selector)].
- lastTestRunsErrorTests ? #() do:
- [:selector|result errors add: (self selector: selector)].
+ "Returns true if all tests passed, false if at least
+ one failed/error or nil if never run
+ "
+ lastOutcomes isNil ifTrue:[^nil].
+ lastOutcomes size ~= self testSelectors size ifTrue:[^nil].
+ lastOutcomes do:[:outcome|
+ outcome result == #pass ifFalse:[
+ ^false
+ ].
+ ].
+ ^true
- "Created: / 15-03-2010 / 19:12:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-lastTestRunResultOrNil
- ^ lastTestRunResultOrNil
+ "Modified: / 20-08-2011 / 14:59:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
lookupHierarchyRoot
^TestCase
!
-rememberErrorTest:selector
-
- | emitChange |
-
- lastTestRunsErrorTests isNil ifTrue:[
- lastTestRunsErrorTests := Set new.
- ].
-
- emitChange := (self removeSelector: selector from: lastTestRunsPassedTests).
- emitChange := (self removeSelector: selector from: lastTestRunsFailedTests) or:[emitChange].
- emitChange := (self addSelector: selector to: lastTestRunsErrorTests) or:[emitChange].
+rememberOutcome: outcome
- emitChange ifTrue:[self lastTestRunResultChanged: selector].
-
- self rememberFailedTestRun
-
- "Modified: / 06-08-2006 / 11:01:08 / cg"
- "Created: / 15-03-2010 / 19:16:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-rememberFailedTest:selector
-
- | emitChange |
+ lastOutcomes isNil ifTrue:[
+ lastOutcomes := OrderedCollection new.
+ ].
+ "Not a nice code, but portable..."
+ 1 to: lastOutcomes size do:[:i|
+ | each |
- lastTestRunsFailedTests isNil ifTrue:[
- lastTestRunsFailedTests := Set new.
+ each := lastOutcomes at: i.
+ (each testCase class == outcome testCase class and:
+ [each testCase selector == outcome testCase selector]) ifTrue:[
+ lastOutcomes at: i put: outcome.
+ each result ~= outcome result ifTrue:[
+ self lastTestRunResultChanged: outcome selector.
+ ].
+ ^self.
+ ].
].
-
- emitChange := (self removeSelector: selector from: lastTestRunsPassedTests).
- emitChange := (self removeSelector: selector from: lastTestRunsErrorTests) or:[emitChange].
- emitChange := (self addSelector: selector to: lastTestRunsFailedTests) or:[emitChange].
-
- emitChange ifTrue:[self lastTestRunResultChanged: selector].
-
- self rememberFailedTestRun
+ lastOutcomes add: outcome.
+ self lastTestRunResultChanged: outcome selector.
+ ^self
- "Modified: / 06-08-2006 / 11:01:08 / cg"
- "Modified: / 15-03-2010 / 19:15:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-rememberFailedTestRun
- lastTestRunResultOrNil ~~ false ifTrue:[
- lastTestRunResultOrNil := false.
- Smalltalk changed:#lastTestRunResult with:(Array with:self with:nil).
- self changed:#lastTestRunResult.
- ]
-
- "Modified: / 06-08-2006 / 11:00:42 / cg"
+ "Created: / 20-08-2011 / 12:43:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
-rememberFailedTestRunWithResult:result
- self rememberFailedTestRun.
- self rememberFailedTestsFromResult:result.
-
- "Modified: / 05-08-2006 / 12:45:19 / cg"
-!
-
-rememberFailedTestsFromResult:result
- (result failures union:result errors) do:[:eachFailedTest |
- self rememberFailedTest:(eachFailedTest selector).
- ].
-
- "Created: / 05-08-2006 / 12:45:01 / cg"
- "Modified: / 06-08-2006 / 10:54:31 / cg"
-!
-
-rememberPassedTest:selector
-
- | emitChange |
-
- lastTestRunsPassedTests isNil ifTrue:[
- lastTestRunsPassedTests := Set new.
- ].
-
- emitChange := (self removeSelector: selector from: lastTestRunsFailedTests).
- emitChange := (self removeSelector: selector from: lastTestRunsErrorTests) or:[emitChange].
- emitChange := (self addSelector: selector to: lastTestRunsPassedTests) or:[emitChange].
+rememberedOutcomeFor: selector
- emitChange ifTrue:[self lastTestRunResultChanged: selector].
-
- self rememberPassedTestRun
-
- "Modified: / 06-08-2006 / 11:01:08 / cg"
- "Modified: / 15-03-2010 / 19:15:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
+ lastOutcomes isNil ifTrue:[^nil].
+ lastOutcomes do:[:outcome|
+ outcome testCase selector == selector ifTrue:[
+ ^outcome
+ ].
+ ].
+ ^nil
-rememberPassedTestRun
- lastTestRunResultOrNil ~~ true ifTrue:[
- lastTestRunResultOrNil := true.
- "/lastTestRunsFailedTests := nil.
- Smalltalk changed:#lastTestRunResult with:(Array with:self with:nil).
- self changed:#lastTestRunResult.
- ]
-
- "Modified: / 06-08-2006 / 11:01:22 / cg"
- "Modified: / 15-03-2010 / 18:22:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-rememberPassedTestsFromResult:result
- (result passed) do:[:eachPassedTest |
- self rememberPassedTest:(eachPassedTest selector).
- ].
-
- "Created: / 06-08-2006 / 10:29:47 / cg"
- "Modified: / 06-08-2006 / 11:42:01 / cg"
+ "Created: / 20-08-2011 / 14:27:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
resources
@@ -240,20 +170,46 @@
!
testSelectorError:selector
- ^ lastTestRunsErrorTests notNil and:[lastTestRunsErrorTests includes:selector]
+
+ lastOutcomes isNil ifTrue:[^false].
+ lastOutcomes do:[:each|
+ (each testCase class == self
+ and:[each testCase selector == selector
+ and:[each result == #error]]) ifTrue:[
+ ^true
+ ].
+ ].
+ ^false
"Created: / 15-03-2010 / 19:44:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
testSelectorFailed:selector
- ^ (lastTestRunsFailedTests notNil and:[lastTestRunsFailedTests includes:selector]) or:
- [lastTestRunsErrorTests notNil and:[lastTestRunsErrorTests includes:selector]]
- "Modified: / 15-03-2010 / 19:44:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ lastOutcomes isNil ifTrue:[^false].
+ lastOutcomes do:[:each|
+ (each testCase class == self
+ and:[each testCase selector == selector
+ and:[each result == #fail]]) ifTrue:[
+ ^true
+ ].
+ ].
+ ^false
+
+ "Modified: / 20-08-2011 / 13:02:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
testSelectorPassed:selector
- ^ lastTestRunsPassedTests notNil and:[lastTestRunsPassedTests includes:selector]
+
+ lastOutcomes isNil ifTrue:[^false].
+ lastOutcomes do:[:each|
+ (each testCase class == self
+ and:[each testCase selector == selector
+ and:[each result == #pass]]) ifTrue:[
+ ^true
+ ].
+ ].
+ ^false
"Created: / 15-03-2010 / 17:58:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
@@ -385,13 +341,11 @@
!
rememberResult:result
- result hasPassed ifTrue:[
- self rememberPassedTestRun
- ] ifFalse:[
- self rememberFailedTestRunWithResult:result
- ].
+
+ result outcomesDo:[:outcome|self rememberOutcome: outcome].
"Created: / 05-08-2006 / 12:33:08 / cg"
+ "Modified: / 20-08-2011 / 14:02:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
runTests
@@ -631,15 +585,22 @@
!TestCase methodsFor:'running'!
debug
- [
- (self class selector: testSelector) runCase.
- self class rememberPassedTest: testSelector.
- ] sunitEnsure: [
- TestResource resetResources: self resources
- ].
+
+ | testCase outcome |
+
+ [
+ (testCase := self class selector: testSelector) runCase.
+ outcome := TestCaseOutcome new.
+ outcome testCase: testCase.
+ outcome result: #pass.
+ outcome remember.
+ ] sunitEnsure: [
+ TestResource resetResources: self resources
+ ].
"Modified: / 07-07-2011 / 11:10:50 / jv"
"Modified: / 07-07-2011 / 11:34:08 / Jan Vrany <jan.vrant@fit.cvut,cz>"
+ "Modified: / 20-08-2011 / 14:15:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
debugAsFailure
@@ -830,11 +791,11 @@
!TestCase class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/goodies/sunit/TestCase.st,v 1.75 2011-08-18 18:37:10 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/goodies/sunit/TestCase.st,v 1.76 2011-08-20 14:00:44 vrany Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/goodies/sunit/TestCase.st,v 1.75 2011-08-18 18:37:10 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/goodies/sunit/TestCase.st,v 1.76 2011-08-20 14:00:44 vrany Exp $'
!
version_SVN