[squeak-dev] The Inbox: Tests-ct.448.mcz
Nicolas Cellier
nicolas.cellier.aka.nice at gmail.com
Mon Apr 12 22:19:07 UTC 2021
Hi Christoph,
I agree that using Warning and UnhandledWarning is fragile.
Especially since we can disable the warnings altogether!
But see below...
Le lun. 12 avr. 2021 à 21:19, <commits at source.squeak.org> a écrit :
>
> A new version of Tests was added to project The Inbox:
> http://source.squeak.org/inbox/Tests-ct.448.mcz
>
> ==================== Summary ====================
>
> Name: Tests-ct.448
> Author: ct
> Time: 12 April 2021, 9:19:02.66824 pm
> UUID: 65aa0e1a-250a-724a-9f04-505db0722916
> Ancestors: Tests-nice.447
>
> Revises ExceptionTests >> #testCatchingDefaultAction to work when being debugged/simulated as well. This also decouples the test from the implementation details of UnhandledWarnings.
>
> For further reference, see also: https://github.com/LinqLover/SimulationStudio/runs/2319502648?check_suite_focus=true#step:4:441
>
> =============== Diff against Tests-nice.447 ===============
>
> Item was changed:
> ----- Method: ExceptionTests>>testCatchingDefaultAction (in category 'tests - outer') -----
> testCatchingDefaultAction
> + "The #defaultAction method is executed in the context of the signaling environment."
> +
> - "The #defaultAction method is executed in the context of the signaling environment.
> - The defaultAction will raise an UnhandledWarning that should be caught by this handler."
> | result |
> + result := [MyTestNotification signalForAction: [MyTestNotification signal: '2nd exception']]
> + on: MyTestNotification
> + do: [:ex | '2nd exception caught'].
I do not understand here: MyTestNotification will be caught, and thus
won't have a chance to trigger the defaultAction and 2nd notification
right?
Maybe you meant something like this:
[MyTestNotification signalForAction: [MyTestError signal: '2nd exception']]
on: MyTestError
do: ...
> + on: MyTestNotification
> + self assert: '2nd exception caught' equals: result.!
> - result := [ Warning signal: 'Warning signalled' ] on: UnhandledWarning do: [ :ex | 'UnhandledWarning caught' ].
> - self assert: 'UnhandledWarning caught' equals: result!
>
> Item was changed:
> Notification subclass: #MyTestNotification
> + instanceVariableNames: 'action'
> - instanceVariableNames: ''
> classVariableNames: ''
> poolDictionaries: ''
> category: 'Tests-Exceptions'!
>
> Item was added:
> + ----- Method: MyTestNotification class>>signalForAction: (in category 'signaling') -----
> + signalForAction: aBlock
> +
> + ^ self new
> + action: aBlock;
> + signal!
>
> Item was added:
> + ----- Method: MyTestNotification>>action (in category 'accessing') -----
> + action
> +
> + ^ action!
>
> Item was added:
> + ----- Method: MyTestNotification>>action: (in category 'accessing') -----
> + action: aBlock
> +
> + action := aBlock!
>
> Item was added:
> + ----- Method: MyTestNotification>>defaultAction (in category 'priv handling') -----
> + defaultAction
> +
> + self action ifNotNil: [^ self action cull: self].
> +
> + ^ super defaultAction!
>
>
More information about the Squeak-dev
mailing list
|