The Trunk: Tests-mt.430.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Tests-mt.430.mcz

commits-2
Marcel Taeumel uploaded a new version of Tests to project The Trunk:
http://source.squeak.org/trunk/Tests-mt.430.mcz

==================== Summary ====================

Name: Tests-mt.430
Author: mt
Time: 17 April 2020, 10:00:04.765586 am
UUID: f6a52e06-a24a-ca4b-bbea-8cf479934e4a
Ancestors: Tests-ul.429

First steps to improve CaseErrorTest:
- the faulty #printOn: must be in a separate object so that the instance of TestCase can be printed as usual in logs and views
- adds #testCaseErrorMessage, which actually documents another bug, which is that #printString in #caseError is called on the wrong object

I suppose that the idea of having "self printString" in #caseError is that the user learns about the actual cases of the receiver *and not* about the outer-context object that is triggering that case-of in the first place.

=============== Diff against Tests-ul.429 ===============

Item was removed:
- ----- Method: CaseErrorTest>>printOn: (in category 'tests') -----
- printOn: aStream
- 3 caseOf:
- { [1] -> [aStream nextPutAll: 'option 1'].
- [2] -> [aStream nextPutAll: 'option 2'] }
- "caseError in printOn:"!

Item was changed:
  ----- Method: CaseErrorTest>>testCaseErrorInPrintOn (in category 'tests') -----
  testCaseErrorInPrintOn
+ self should: [ CaseErrorTestObject new printString ] raise: Error!
- self should: [ self printString ] raise: Error!

Item was added:
+ ----- Method: CaseErrorTest>>testCaseErrorMessage (in category 'tests') -----
+ testCaseErrorMessage
+ "Check whether the error message actually includes the printString of the object where #caseOf: is sent to. As of April 17, 2020, the error message actually uses the printString of the outer-contxt receiver, which is wrong. Take a look at Object >> #caseOf:. There is no indication of 'self' not being the receiver of #caseOf:."
+
+ ['my message' caseOf: { [1] -> ['option 1'] }]
+ on: Error
+ do: [:error | self assert: (error messageText includesSubstring: 'my message' printString)].!

Item was added:
+ Object subclass: #CaseErrorTestObject
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Tests-Bugs'!

Item was added:
+ ----- Method: CaseErrorTestObject>>printOn: (in category 'printing') -----
+ printOn: aStream
+ 3 caseOf:
+ { [1] -> [aStream nextPutAll: 'option 1'].
+ [2] -> [aStream nextPutAll: 'option 2'] }
+ "caseError in printOn:"!


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Tests-mt.430.mcz

marcel.taeumel
Hi all!

Any idea on how to fix that? #caseError must not be sent to "self" if inlined:



Best,
Marcel

Am 17.04.2020 10:00:17 schrieb [hidden email] <[hidden email]>:

Marcel Taeumel uploaded a new version of Tests to project The Trunk:
http://source.squeak.org/trunk/Tests-mt.430.mcz

==================== Summary ====================

Name: Tests-mt.430
Author: mt
Time: 17 April 2020, 10:00:04.765586 am
UUID: f6a52e06-a24a-ca4b-bbea-8cf479934e4a
Ancestors: Tests-ul.429

First steps to improve CaseErrorTest:
- the faulty #printOn: must be in a separate object so that the instance of TestCase can be printed as usual in logs and views
- adds #testCaseErrorMessage, which actually documents another bug, which is that #printString in #caseError is called on the wrong object

I suppose that the idea of having "self printString" in #caseError is that the user learns about the actual cases of the receiver *and not* about the outer-context object that is triggering that case-of in the first place.

=============== Diff against Tests-ul.429 ===============

Item was removed:
- ----- Method: CaseErrorTest>>printOn: (in category 'tests') -----
- printOn: aStream
- 3 caseOf:
- { [1] -> [aStream nextPutAll: 'option 1'].
- [2] -> [aStream nextPutAll: 'option 2'] }
- "caseError in printOn:"!

Item was changed:
----- Method: CaseErrorTest>>testCaseErrorInPrintOn (in category 'tests') -----
testCaseErrorInPrintOn
+ self should: [ CaseErrorTestObject new printString ] raise: Error!
- self should: [ self printString ] raise: Error!

Item was added:
+ ----- Method: CaseErrorTest>>testCaseErrorMessage (in category 'tests') -----
+ testCaseErrorMessage
+ "Check whether the error message actually includes the printString of the object where #caseOf: is sent to. As of April 17, 2020, the error message actually uses the printString of the outer-contxt receiver, which is wrong. Take a look at Object >> #caseOf:. There is no indication of 'self' not being the receiver of #caseOf:."
+
+ ['my message' caseOf: { [1] -> ['option 1'] }]
+ on: Error
+ do: [:error | self assert: (error messageText includesSubstring: 'my message' printString)].!

Item was added:
+ Object subclass: #CaseErrorTestObject
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Tests-Bugs'!

Item was added:
+ ----- Method: CaseErrorTestObject>>printOn: (in category 'printing') -----
+ printOn: aStream
+ 3 caseOf:
+ { [1] -> [aStream nextPutAll: 'option 1'].
+ [2] -> [aStream nextPutAll: 'option 2'] }
+ "caseError in printOn:"!




Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Tests-mt.430.mcz

Christoph Thiede

Any idea on how to fix that? #caseError must not be sent to "self" if inlined:


See Compiler-nice.427 (inbox) and caseerror.1.cs (http://forum.world.st/Problems-with-caseError-tp5111930p5112255.html). What a mess. *sigh* :-)


Best,

Christoph



Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Freitag, 17. April 2020 10:10:30
An: gettimothy via Squeak-dev
Betreff: Re: [squeak-dev] The Trunk: Tests-mt.430.mcz
 
Hi all!

Any idea on how to fix that? #caseError must not be sent to "self" if inlined:



Best,
Marcel

Am 17.04.2020 10:00:17 schrieb [hidden email] <[hidden email]>:

Marcel Taeumel uploaded a new version of Tests to project The Trunk:
http://source.squeak.org/trunk/Tests-mt.430.mcz

==================== Summary ====================

Name: Tests-mt.430
Author: mt
Time: 17 April 2020, 10:00:04.765586 am
UUID: f6a52e06-a24a-ca4b-bbea-8cf479934e4a
Ancestors: Tests-ul.429

First steps to improve CaseErrorTest:
- the faulty #printOn: must be in a separate object so that the instance of TestCase can be printed as usual in logs and views
- adds #testCaseErrorMessage, which actually documents another bug, which is that #printString in #caseError is called on the wrong object

I suppose that the idea of having "self printString" in #caseError is that the user learns about the actual cases of the receiver *and not* about the outer-context object that is triggering that case-of in the first place.

=============== Diff against Tests-ul.429 ===============

Item was removed:
- ----- Method: CaseErrorTest>>printOn: (in category 'tests') -----
- printOn: aStream
- 3 caseOf:
- { [1] -> [aStream nextPutAll: 'option 1'].
- [2] -> [aStream nextPutAll: 'option 2'] }
- "caseError in printOn:"!

Item was changed:
----- Method: CaseErrorTest>>testCaseErrorInPrintOn (in category 'tests') -----
testCaseErrorInPrintOn
+ self should: [ CaseErrorTestObject new printString ] raise: Error!
- self should: [ self printString ] raise: Error!

Item was added:
+ ----- Method: CaseErrorTest>>testCaseErrorMessage (in category 'tests') -----
+ testCaseErrorMessage
+ "Check whether the error message actually includes the printString of the object where #caseOf: is sent to. As of April 17, 2020, the error message actually uses the printString of the outer-contxt receiver, which is wrong. Take a look at Object >> #caseOf:. There is no indication of 'self' not being the receiver of #caseOf:."
+
+ ['my message' caseOf: { [1] -> ['option 1'] }]
+ on: Error
+ do: [:error | self assert: (error messageText includesSubstring: 'my message' printString)].!

Item was added:
+ Object subclass: #CaseErrorTestObject
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Tests-Bugs'!

Item was added:
+ ----- Method: CaseErrorTestObject>>printOn: (in category 'printing') -----
+ printOn: aStream
+ 3 caseOf:
+ { [1] -> [aStream nextPutAll: 'option 1'].
+ [2] -> [aStream nextPutAll: 'option 2'] }
+ "caseError in printOn:"!




Carpe Squeak!