Skip to content

Commit 3a0ac43

Browse files
committed
Simplify test error handler forwarding
1 parent 2a75663 commit 3a0ac43

File tree

6 files changed

+8
-163
lines changed

6 files changed

+8
-163
lines changed

testing/Project/Sources/Classes/TestRunner.4dm

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,6 @@ Function _prepareErrorHandlingStorage()
3737
Else
3838
Storage:C1525.testErrorHandlerProcesses.clear()
3939
End if
40-
41-
Storage:C1525.testErrorHandlerState:=New shared object:C1526(\
42-
"globalHandlerChanged"; False:C215; \
43-
"previousGlobalHandler"; ""; \
44-
"localHandlers"; New shared object:C1526(); \
45-
"localHandlerChanges"; New shared object:C1526()\
46-
)
4740
End use
4841

4942
Function _runInternal()
@@ -87,7 +80,7 @@ Function _installErrorHandler() : Object
8780
End if
8881

8982
$currentProcess:=Current process:C322
90-
TestErrorHandlerRegisterProcess($currentProcess; $previousErrorHandler; $shouldInstallLocal)
83+
TestErrorHandlerRegisterProcess($currentProcess)
9184

9285
$previousGlobalHandler:=Method called on error:C704(1)
9386
$shouldInstallGlobal:=($previousGlobalHandler#"TestErrorHandler")
@@ -96,13 +89,6 @@ Function _installErrorHandler() : Object
9689
ON ERR CALL:C155("TestErrorHandler"; 1)
9790
End if
9891

99-
If (Storage:C1525.testErrorHandlerState#Null:C1517)
100-
Use (Storage:C1525.testErrorHandlerState)
101-
Storage:C1525.testErrorHandlerState.previousGlobalHandler:=$previousGlobalHandler
102-
Storage:C1525.testErrorHandlerState.globalHandlerChanged:=$shouldInstallGlobal
103-
End use
104-
End if
105-
10692
return New object:C1471(\
10793
"previousHandler"; $previousErrorHandler; \
10894
"installedLocalHandler"; $shouldInstallLocal; \
@@ -146,13 +132,6 @@ Function _restoreErrorHandler($handlerState : Object)
146132
End if
147133
End if
148134

149-
If (Storage:C1525.testErrorHandlerState#Null:C1517)
150-
Use (Storage:C1525.testErrorHandlerState)
151-
Storage:C1525.testErrorHandlerState.previousGlobalHandler:=""
152-
Storage:C1525.testErrorHandlerState.globalHandlerChanged:=False:C215
153-
End use
154-
End if
155-
156135
Function discoverTests()
157136
var $class : 4D:C1709.Class
158137
For each ($class; This:C1470._getTestClasses())

testing/Project/Sources/Classes/_ErrorHandlingTest.4dm

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ Function test_global_error_collection($t : cs:C1710.Testing)
9292
$t.assert.areEqual($t; 0; Storage:C1525.testErrors.length; "Global errors should be drained from storage")
9393
End use
9494

95-
Function test_register_process_tracks_previous_handler($t : cs:C1710.Testing)
95+
Function test_register_process_tracking($t : cs:C1710.Testing)
9696

9797
var $runner : cs:C1710.TestRunner
9898
$runner:=cs:C1710.TestRunner.new()
@@ -101,27 +101,16 @@ Function test_register_process_tracks_previous_handler($t : cs:C1710.Testing)
101101
var $processNumber : Integer
102102
$processNumber:=98765
103103

104-
TestErrorHandlerRegisterProcess($processNumber; "LegacyHandler"; True:C214)
104+
TestErrorHandlerRegisterProcess($processNumber)
105105

106-
var $processKey : Text
107-
$processKey:=String:C10($processNumber)
108-
109-
Use (Storage:C1525.testErrorHandlerState.localHandlers)
110-
$t.assert.areEqual($t; "LegacyHandler"; Storage:C1525.testErrorHandlerState.localHandlers[$processKey]; "Should track previous local handler")
111-
End use
112-
113-
Use (Storage:C1525.testErrorHandlerState.localHandlerChanges)
114-
$t.assert.isTrue($t; Storage:C1525.testErrorHandlerState.localHandlerChanges[$processKey]; "Should mark handler change")
106+
Use (Storage:C1525.testErrorHandlerProcesses)
107+
$t.assert.isTrue($t; Storage:C1525.testErrorHandlerProcesses.indexOf($processNumber)>=0; "Should register process for local error tracking")
115108
End use
116109

117110
TestErrorHandlerUnregister($processNumber)
118111

119-
Use (Storage:C1525.testErrorHandlerState.localHandlers)
120-
$t.assert.isNull($t; Storage:C1525.testErrorHandlerState.localHandlers[$processKey]; "Should clear local handler after unregister")
121-
End use
122-
123-
Use (Storage:C1525.testErrorHandlerState.localHandlerChanges)
124-
$t.assert.isFalse($t; Storage:C1525.testErrorHandlerState.localHandlerChanges[$processKey]; "Should reset handler change flag after unregister")
112+
Use (Storage:C1525.testErrorHandlerProcesses)
113+
$t.assert.isFalse($t; Storage:C1525.testErrorHandlerProcesses.indexOf($processNumber)>=0; "Should remove process from tracking after unregister")
125114
End use
126115

127116
Function test_testing_context_properties($t : cs:C1710.Testing)

testing/Project/Sources/Methods/ParallelTestWorker.4dm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ Case of
4949
$handlerState.changed:=$shouldInstallHandler
5050
$handlerState.installed:=True:C214
5151
If (Not:C34($handlerState.registered))
52-
TestErrorHandlerRegisterProcess(Current process:C322; $handlerState.previousHandler; $handlerState.changed)
52+
TestErrorHandlerRegisterProcess(Current process:C322)
5353
$handlerState.registered:=True:C214
5454
End if
5555
End if

testing/Project/Sources/Methods/TestErrorHandler.4dm

Lines changed: 0 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,13 @@ var $errorLine : Integer
1010
var $processNumber : Integer
1111
var $isLocalProcess : Boolean
1212
var $context : Text
13-
var $previousLocalHandler : Text
14-
var $previousGlobalHandler : Text
15-
var $shouldCallPreviousLocal : Boolean
16-
var $shouldCallPreviousGlobal : Boolean
17-
var $processKey : Text
1813

1914
$errorCode:=Error
2015
$errorText:=Error method
2116
$errorMethod:=Error formula
2217
$errorLine:=Error line
2318
$processNumber:=Current process:C322
2419
$isLocalProcess:=False:C215
25-
$previousLocalHandler:=""
26-
$previousGlobalHandler:=""
27-
$shouldCallPreviousLocal:=False:C215
28-
$shouldCallPreviousGlobal:=False:C215
29-
$processKey:=String:C10($processNumber)
3020

3121
If (Storage:C1525.testErrorHandlerProcesses#Null:C1517)
3222
Use (Storage:C1525.testErrorHandlerProcesses)
@@ -36,36 +26,6 @@ End if
3626

3727
$context:=Choose:C955($isLocalProcess; "local"; "global")
3828

39-
If (Storage:C1525.testErrorHandlerState#Null:C1517)
40-
Use (Storage:C1525.testErrorHandlerState)
41-
If ($isLocalProcess)
42-
var $localHandlers : Object
43-
var $localChanges : Object
44-
$localHandlers:=Storage:C1525.testErrorHandlerState.localHandlers
45-
$localChanges:=Storage:C1525.testErrorHandlerState.localHandlerChanges
46-
47-
If ($localChanges#Null:C1517)
48-
If ($localChanges[$processKey]#Null:C1517)
49-
$shouldCallPreviousLocal:=Bool:C1537($localChanges[$processKey])
50-
End if
51-
End if
52-
53-
If ($shouldCallPreviousLocal) && ($localHandlers#Null:C1517)
54-
If ($localHandlers[$processKey]#Null:C1517)
55-
$previousLocalHandler:=String:C10($localHandlers[$processKey])
56-
Else
57-
$shouldCallPreviousLocal:=False:C215
58-
End if
59-
End if
60-
Else
61-
$shouldCallPreviousGlobal:=Bool:C1537(Storage:C1525.testErrorHandlerState.globalHandlerChanged)
62-
If ($shouldCallPreviousGlobal)
63-
$previousGlobalHandler:=Storage:C1525.testErrorHandlerState.previousGlobalHandler || ""
64-
End if
65-
End if
66-
End use
67-
End if
68-
6929
// Store error information in Storage for later retrieval
7030
If (Storage:C1525.testErrors=Null:C1517)
7131
Use (Storage:C1525)
@@ -89,28 +49,4 @@ Use (Storage:C1525.testErrors)
8949
Storage:C1525.testErrors.push(OB Copy:C1225($errorInfo; ck shared:K85:29))
9050
End use
9151

92-
If ($shouldCallPreviousLocal)
93-
If ($previousLocalHandler#"") && ($previousLocalHandler#"TestErrorHandler")
94-
If (Method exists($previousLocalHandler))
95-
EXECUTE METHOD($previousLocalHandler)
96-
Else
97-
If (Method exists($previousLocalHandler; *))
98-
EXECUTE METHOD($previousLocalHandler; *)
99-
End if
100-
End if
101-
End if
102-
End if
103-
104-
If ($shouldCallPreviousGlobal)
105-
If ($previousGlobalHandler#"") && ($previousGlobalHandler#"TestErrorHandler")
106-
If (Method exists($previousGlobalHandler))
107-
EXECUTE METHOD($previousGlobalHandler)
108-
Else
109-
If (Method exists($previousGlobalHandler; *))
110-
EXECUTE METHOD($previousGlobalHandler; *)
111-
End if
112-
End if
113-
End if
114-
End if
115-
11652
// Continue execution - don't interrupt the test
Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,6 @@
11
//%attributes = {}
22
#DECLARE($processNumber : Integer)
33

4-
var $previousHandler : Text
5-
var $handlerChanged : Boolean
6-
7-
$previousHandler:=""
8-
$handlerChanged:=False:C215
9-
10-
If (Count parameters:C259>=2)
11-
$previousHandler:=$2
12-
End if
13-
14-
If (Count parameters:C259>=3)
15-
$handlerChanged:=Bool:C1537($3)
16-
End if
17-
184
Use (Storage:C1525)
195
If (Storage:C1525.testErrorHandlerProcesses=Null:C1517)
206
Storage:C1525.testErrorHandlerProcesses:=New shared collection:C1527
@@ -26,32 +12,3 @@ Use (Storage:C1525.testErrorHandlerProcesses)
2612
Storage:C1525.testErrorHandlerProcesses.push($processNumber)
2713
End if
2814
End use
29-
30-
If (Storage:C1525.testErrorHandlerState#Null:C1517)
31-
var $processKey : Text
32-
$processKey:=String:C10($processNumber)
33-
34-
If (Storage:C1525.testErrorHandlerState.localHandlers=Null:C1517)
35-
Use (Storage:C1525.testErrorHandlerState)
36-
Storage:C1525.testErrorHandlerState.localHandlers:=New shared object:C1526()
37-
End use
38-
End if
39-
40-
If (Storage:C1525.testErrorHandlerState.localHandlerChanges=Null:C1517)
41-
Use (Storage:C1525.testErrorHandlerState)
42-
Storage:C1525.testErrorHandlerState.localHandlerChanges:=New shared object:C1526()
43-
End use
44-
End if
45-
46-
If (Storage:C1525.testErrorHandlerState.localHandlers#Null:C1517)
47-
Use (Storage:C1525.testErrorHandlerState.localHandlers)
48-
Storage:C1525.testErrorHandlerState.localHandlers[$processKey]:=$previousHandler
49-
End use
50-
End if
51-
52-
If (Storage:C1525.testErrorHandlerState.localHandlerChanges#Null:C1517)
53-
Use (Storage:C1525.testErrorHandlerState.localHandlerChanges)
54-
Storage:C1525.testErrorHandlerState.localHandlerChanges[$processKey]:=$handlerChanged
55-
End use
56-
End if
57-
End if

testing/Project/Sources/Methods/TestErrorHandlerUnregister.4dm

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,3 @@ If (Storage:C1525.testErrorHandlerProcesses#Null:C1517)
1212
End use
1313
End if
1414

15-
If (Storage:C1525.testErrorHandlerState#Null:C1517)
16-
var $processKey : Text
17-
$processKey:=String:C10($processNumber)
18-
19-
If (Storage:C1525.testErrorHandlerState.localHandlers#Null:C1517)
20-
Use (Storage:C1525.testErrorHandlerState.localHandlers)
21-
Storage:C1525.testErrorHandlerState.localHandlers[$processKey]:=Null:C1517
22-
End use
23-
End if
24-
25-
If (Storage:C1525.testErrorHandlerState.localHandlerChanges#Null:C1517)
26-
Use (Storage:C1525.testErrorHandlerState.localHandlerChanges)
27-
Storage:C1525.testErrorHandlerState.localHandlerChanges[$processKey]:=False:C215
28-
End use
29-
End if
30-
End if

0 commit comments

Comments
 (0)