[squeak-dev] The Trunk: MultilingualTests-fn.35.mcz

Rein, Patrick Patrick.Rein at hpi.de
Sat Oct 13 16:42:11 UTC 2018


Thanks for pointing that out! After debugging it some more I now remember the cause for this failure again (The line ending conversion installation assumes 1 byte text converters. Multi-byte text converters have to convert the line ending before installing it). 

I will revert that part of the test (again :)) in both repositories. 

(The 2011 version of that method was before the MultiByteFileStream change?)
________________________________________
From: Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> on behalf of Levente Uzonyi <leves at caesar.elte.hu>
Sent: Saturday, October 13, 2018 16:51
To: squeak-dev at lists.squeakfoundation.org
Cc: packages at lists.squeakfoundation.org
Subject: Re: [squeak-dev] The Trunk: MultilingualTests-fn.35.mcz

On Sat, 13 Oct 2018, commits at source.squeak.org wrote:

> Fabio Niephaus uploaded a new version of MultilingualTests to project The Trunk:
> http://source.squeak.org/trunk/MultilingualTests-fn.35.mcz
>
> ==================== Summary ====================
>
> Name: MultilingualTests-fn.35
> Author: fn
> Time: 13 October 2018, 4:33:22.250858 pm
> UUID: babc3062-0aa8-4592-9fc1-50db1ec2cc30
> Ancestors: MultilingualTests-pre.34
>
> Excludes TextConverters that do not support line end conversion yet in #testLineEndConversion, revert to older version of MultiByteFileStreamTest>>testLineEndConvention:withConverter:ifFail:, and add #testLineEndConversionExpectedFailures.
>
> =============== Diff against MultilingualTests-pre.34 ===============
>
> Item was added:
> + ----- Method: MultiByteFileStreamTest>>expectedFailures (in category 'testing') -----
> + expectedFailures
> +     ^ #(testLineEndConversionExpectedFailures)!
>
> Item was changed:
>  ----- Method: MultiByteFileStreamTest>>testLineEndConvention:withConverter:ifFail: (in category 'helpers') -----
>  testLineEndConvention: lineEndConvention withConverter: textConverterClass ifFail: failBlock
>
>       | expectedResult result |
>       [
>               MultiByteFileStream forceNewFileNamed: fileName do: [ :file |
>                       file
>                               converter: textConverterClass new;
>                               lineEndConvention: lineEndConvention;
>                               cr;
>                               nextPut: Character cr;
>                               nextPutAll: String cr;
>                               nextPutAll: String cr asWideString ].
> +             result := StandardFileStream oldFileNamed: fileName do: [ :file |
> +                     file contents ].
> -             result := MultiByteFileStream oldFileNamed: fileName do: [ :file |
> -                     file
> -                             converter: textConverterClass new;
> -                             contents ].

Um. The goal of this test is to test MultiByteFileStream's line end
conversion capability. Changing MultiByteFileStream to StandardFileStream
will render the test meaningless...

Levente

>               expectedResult := String streamContents: [ :stream |
>                       4 timesRepeat: [ stream perform: lineEndConvention ] ].
>               result = expectedResult ifFalse: [
>                       failBlock value: expectedResult asByteArray value: result asByteArray ] ]
>               on: Error
>               do: [ :err | failBlock value: err messageText value: err messageText ]!
>
> Item was changed:
>  ----- Method: MultiByteFileStreamTest>>testLineEndConversion (in category 'testing') -----
>  testLineEndConversion
>
>       | failures |
>       fileName := 'foolinendconversion.txt'.
>       failures := OrderedCollection new.
> +     self textConvertersWithLineEndConversionSupport do: [ :textConverterClass |
> -     TextConverter allSubclassesDo: [ :textConverterClass |
>               textConverterClass encodingNames ifNotEmpty: [
>                       #(cr lf crlf) do: [ :lineEndConvention |
>                               self
>                                       testLineEndConvention: lineEndConvention
>                                       withConverter: textConverterClass
>                                       ifFail: [ :expectedResult :result |
>                                               failures add: {
>                                                       textConverterClass.
>                                                       lineEndConvention.
>                                                       expectedResult.
>                                                       result } ] ] ] ].
>       self assert: failures isEmpty.
>       "The code below is here to help you see why those cases fail"
>       failures do: [ :failure |
>               self
>                       testLineEndConvention: failure second
>                       withConverter: failure first
>                       ifFail: [ :expectedResult :result | self halt ] ].!
>
> Item was added:
> + ----- Method: MultiByteFileStreamTest>>testLineEndConversionExpectedFailures (in category 'testing') -----
> + testLineEndConversionExpectedFailures
> +     "Copy of #testLineEndConversion checking for missing line conversion implementations.
> +      This test and corresponding helpers (see senders) can be removed as soon as all TextConverters support line end conversion. --fn"
> +     | failures |
> +     fileName := 'foolinendconversion_failures.txt'.
> +     failures := OrderedCollection new.
> +     self textConvertersWithoutLineEndConversionSupport do: [ :textConverterClass |
> +             textConverterClass encodingNames ifNotEmpty: [
> +                     #(cr lf crlf) do: [ :lineEndConvention |
> +                             self
> +                                     testLineEndConvention: lineEndConvention
> +                                     withConverter: textConverterClass
> +                                     ifFail: [ :expectedResult :result |
> +                                             failures add: {
> +                                                     textConverterClass.
> +                                                     lineEndConvention.
> +                                                     expectedResult.
> +                                                     result } ] ] ] ].
> +     self assert: failures isEmpty.
> +     "The code below is here to help you see why those cases fail"
> +     failures do: [ :failure |
> +             self
> +                     testLineEndConvention: failure second
> +                     withConverter: failure first
> +                     ifFail: [ :expectedResult :result | self halt ] ].!
>
> Item was added:
> + ----- Method: MultiByteFileStreamTest>>textConvertersWithLineEndConversionSupport (in category 'helpers') -----
> + textConvertersWithLineEndConversionSupport
> +     self flag: #testLineEndConversionExpectedFailures.
> +     ^ TextConverter allSubclasses difference: self textConvertersWithoutLineEndConversionSupport!
>
> Item was added:
> + ----- Method: MultiByteFileStreamTest>>textConvertersWithoutLineEndConversionSupport (in category 'helpers') -----
> + textConvertersWithoutLineEndConversionSupport
> +     self flag: #testLineEndConversionExpectedFailures.
> +     ^ EUCTextConverter allSubclasses union: {ShiftJISTextConverter. CompoundTextConverter. KOI8RTextConverter}!



More information about the Squeak-dev mailing list