SUnitNameResolver.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 14 Jul 2014 21:58:21 +0100
branchworking_v5_0
changeset 614 3003097506c9
parent 222 8e6f482297fa
permissions -rw-r--r--
Refactored remembering of TestCaseOutcomes. TestCaseOutcomes are no longer remembered in class instance var of the TestCase but rather in one global dictionary on TestCaseOutcome class. The top-level weak dictionary uses test method as a key and second-level dictionary as value. This ensures that when a test method is changed, sooner or later (now obsolete) remebered outcomes are reclamed by the GC. The second-level dictionary uses test case class as a key and outcome as value. This is used to keep outcomes for inherited test cases. This dictionary is also weak, ensuring that when the class is unloaded or changed, outcomes are reclamed. To reduce a number of weak objects a special TestCaseOutcomeWeakIdentityDictionary is used. It optimizes the most common case when there are no inherited testcases.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
9365d5753f11 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/sunit' }"
9365d5753f11 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
9365d5753f11 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
Object subclass:#SUnitNameResolver
9365d5753f11 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:''
9365d5753f11 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
9365d5753f11 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
6
78bb1397e43d added rerun-defect tests; fixed button enable bug
Claus Gittinger <cg@exept.de>
parents: 0
diff changeset
     7
	category:'SUnit-Preload'
0
9365d5753f11 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
9365d5753f11 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
14
a4a5478621e3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6
diff changeset
    10
0
9365d5753f11 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!SUnitNameResolver class methodsFor:'Camp Smalltalk'!
9365d5753f11 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 116
diff changeset
    13
classNamed: aSymbol
0
9365d5753f11 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
    ^Smalltalk at: aSymbol ifAbsent: [nil]
111
acc21264ba47 Merge in SUnit 3.1 changes
Stefan Vogel <sv@exept.de>
parents: 68
diff changeset
    15
!
0
9365d5753f11 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
111
acc21264ba47 Merge in SUnit 3.1 changes
Stefan Vogel <sv@exept.de>
parents: 68
diff changeset
    17
defaultLogDevice
acc21264ba47 Merge in SUnit 3.1 changes
Stefan Vogel <sv@exept.de>
parents: 68
diff changeset
    18
    ^Transcript
acc21264ba47 Merge in SUnit 3.1 changes
Stefan Vogel <sv@exept.de>
parents: 68
diff changeset
    19
!
acc21264ba47 Merge in SUnit 3.1 changes
Stefan Vogel <sv@exept.de>
parents: 68
diff changeset
    20
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 116
diff changeset
    21
errorObject
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 116
diff changeset
    22
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 116
diff changeset
    23
    ^Exception
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 116
diff changeset
    24
"/  ^Error
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 116
diff changeset
    25
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 116
diff changeset
    26
    "Modified: / 11-09-2010 / 15:10:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
111
acc21264ba47 Merge in SUnit 3.1 changes
Stefan Vogel <sv@exept.de>
parents: 68
diff changeset
    27
!
acc21264ba47 Merge in SUnit 3.1 changes
Stefan Vogel <sv@exept.de>
parents: 68
diff changeset
    28
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 116
diff changeset
    29
mnuExceptionObject
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 116
diff changeset
    30
	^MessageNotUnderstood
111
acc21264ba47 Merge in SUnit 3.1 changes
Stefan Vogel <sv@exept.de>
parents: 68
diff changeset
    31
!
acc21264ba47 Merge in SUnit 3.1 changes
Stefan Vogel <sv@exept.de>
parents: 68
diff changeset
    32
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 116
diff changeset
    33
notificationObject
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 116
diff changeset
    34
	^Notification
614
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    35
!
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    36
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    37
weakIdentityDictionaryClass
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    38
    "Return an EphemeronDictionary (if available) or Weak(Identity)Dictionary class"
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    39
    
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    40
    #(
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    41
     #EphemeronDictionary       "VW"
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    42
     #WeakIdentityDictionary    "St/X"
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    43
     #WeakDictionary            "VW"
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    44
     )
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    45
            do:[:name | 
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    46
                | class |
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    47
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    48
                class := self classNamed:name.
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    49
                class notNil ifTrue:[
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    50
                    ^ class.
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    51
                ].
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    52
            ].
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    53
    self error:'No weak-like dictionary class found!!'.
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    54
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    55
    "Created: / 14-07-2014 / 09:46:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    56
    "Modified (format): / 14-07-2014 / 21:01:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
9365d5753f11 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
! !
9365d5753f11 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
14
a4a5478621e3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6
diff changeset
    59
!SUnitNameResolver class methodsFor:'documentation'!
a4a5478621e3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6
diff changeset
    60
a4a5478621e3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6
diff changeset
    61
version
222
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 116
diff changeset
    62
    ^ '$Header: /cvs/stx/stx/goodies/sunit/SUnitNameResolver.st,v 1.7 2011-06-29 19:15:49 cg Exp $'
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 116
diff changeset
    63
!
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 116
diff changeset
    64
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 116
diff changeset
    65
version_SVN
8e6f482297fa Jan's 4.1 version
Claus Gittinger <cg@exept.de>
parents: 116
diff changeset
    66
    ^ '§Id: SUnitNameResolver.st 204 2010-09-11 15:21:51Z vranyj1 §'
14
a4a5478621e3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6
diff changeset
    67
! !
614
3003097506c9 Refactored remembering of TestCaseOutcomes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 222
diff changeset
    68