Christoph Thiede uploaded a new version of SUnit to project The Inbox: http://source.squeak.org/inbox/SUnit-ct.124.mcz
==================== Summary ====================
Name: SUnit-ct.124 Author: ct Time: 20 March 2020, 8:01:47.398237 pm UUID: d936b6a0-e7c7-2742-a817-35fa6511a15a Ancestors: SUnit-mt.121
Proposal for discussion: Adds assertion message #should:raise:then: to allow for interactively working with expected exceptions. If you like, we could also talk about #should:raise:that: (however, I still like BlockClosure >> #handles:*).
Examples:
TestCase new in: [:test | test should: [ test should: [self error: #foo] raise: Error then: #pass] raise: UnhandledError. test should: [self error: #foo] raise: Error then: [:ex | test assert: #foo equals: ex messageText]. ]
* See exception patterns: http://forum.world.st/The-Inbox-Kernel-ct-1292-mcz-tp5109282p5109284.html
=============== Diff against SUnit-mt.121 ===============
Item was added: + ----- Method: TestCase>>should:raise:then: (in category 'accessing') ----- + should: aBlock raise: anExceptionalEvent then: aHandlerBlock + + | raised result | + raised := false. + result := aBlock + on: anExceptionalEvent + do: [:ex | + raised := true. + aHandlerBlock cull: ex]. + self assert: raised. + ^ result!
There is already #should:raise:withExceptionDo: which purposes exactly this purpose.
Can I change the behavior of the #should:raise: selectors so that they answer the result of aBlock if there was no error? For instance, this should just work:
result := TestCase new should: [2/0] raise: ZeroDivide withExceptionDo: [:ex | ex resume: 42]
(Fun fact: Today, you can even find that existing selector with my refurbished method finder from SimulationStudio:
| case | case := TestCase new. Sandbox findSelectorsFor: case arguments: {[Dictionary new at: 0]. KeyNotFound. [:ex | self assert: ex key = 0]} thatAnswer: case "a Set(#should:raise:withExceptionDo: #addModelMenuItemsTo:forMorph:hand: #toFinalizeSend:to:with: #should:raise:description:)"
:-) )
--- Sent from Squeak Inbox Talk
On 2020-03-20T19:01:48+00:00, commits@source.squeak.org wrote:
Christoph Thiede uploaded a new version of SUnit to project The Inbox: http://source.squeak.org/inbox/SUnit-ct.124.mcz
==================== Summary ====================
Name: SUnit-ct.124 Author: ct Time: 20 March 2020, 8:01:47.398237 pm UUID: d936b6a0-e7c7-2742-a817-35fa6511a15a Ancestors: SUnit-mt.121
Proposal for discussion: Adds assertion message #should:raise:then: to allow for interactively working with expected exceptions. If you like, we could also talk about #should:raise:that: (however, I still like BlockClosure >> #handles:*).
Examples:
TestCase new in: [:test | test should: [ test should: [self error: #foo] raise: Error then: #pass] raise: UnhandledError. test should: [self error: #foo] raise: Error then: [:ex | test assert: #foo equals: ex messageText]. ]
- See exception patterns: http://forum.world.st/The-Inbox-Kernel-ct-1292-mcz-tp5109282p5109284.html
=============== Diff against SUnit-mt.121 ===============
Item was added:
- ----- Method: TestCase>>should:raise:then: (in category 'accessing') -----
- should: aBlock raise: anExceptionalEvent then: aHandlerBlock
- | raised result |
- raised := false.
- result := aBlock
- on: anExceptionalEvent
- do: [:ex |
- raised := true.
- aHandlerBlock cull: ex].
- self assert: raised.
- ^ result!
squeak-dev@lists.squeakfoundation.org