Subject: bug#14493: MSYS line ending problem in t/cxx-demo.sh

From: Stefano Lattarini <[email-masked]>
Date: Wed, 29 May 2013 16:18:53 +0200

On 05/29/2013 03:39 PM, Peter Rosin wrote:
> On 2013-05-29 10:57, Stefano Lattarini wrote:
>> On 05/29/2013 01:43 AM, Peter Rosin wrote:
>>> Hi!
>>>
>>> I have this interesting log snippet from a failed run of t/cxx-demo.sh
>>> on the master branch (commit baf8a1c22acce0908):
>>>
>> And as you noted in your follow-up message, the problem is the same on
>> the micro branch (87e49f4f040c8ab))
>>
>>>
>>> + for p in play work
>>> + ./play
>>> + cat exp.play
>>> We are playing :-)
>>> Howdy, play!
>>> + cat got.play
>>> We are playing :-)
>>> Howdy, play!
>>> + diff exp.play got.play
>>> 1,2c1,2
>>> < We are playing :-)
>>> < Howdy, play!
>>> ---
>>>> We are playing :-)
>>>> Howdy, play!
>>> + am_exit_trap 1
>>> + exit_status=1
>>>
>>>
>>> This is on MSYS, and I strongly suspect a line ending discrepancy.
>>> The output from ./play is likely to have CRNL line endings, while
>>> exp.play is likely to have NL line endings. diff then barfs.
>>>
>> Any suggestion on how to easily fix this?
>>
>> If not, I have a utterly untested idea:
>>
>>   - Add a new helper function to t/ax/am-test-lib.sh that tells whether
>>     we are running on MinGW or no (you can steal existing code from the
>>     'require_tool()' function).
>>
>>   - Use it in cxx-demo.sh to determine whether we are running under
>>     MinGW.
>>
>>   - If that's the case, use perl to normalize the line endings (turning
>>     all CR-LF into simple LF).
>>
>> Is this doable?
> 
> Yes, but why not always zap all CR characters? Shouldn't weaken the test
> by much...
> 
> Something like the below change perhaps? (perl seemed a bit heavy)
> 
> Cheers,
> Peter
> 
> 
> diff --git a/t/cxx-demo.sh b/t/cxx-demo.sh
> index f6d568d..27d18e1 100644
> --- a/t/cxx-demo.sh
> +++ b/t/cxx-demo.sh
> @@ -165,7 +165,7 @@ END
>      Good morning, work.
>  END
>    for p in play work; do
> -    ./$p > got.$p || { cat got.$p; exit 1; }
> +    ./$p | tr -d '\015' > got.$p || { cat got.$p; exit 1; }
>
Yeah, let's got for this (with a comment like "zap carriage-return characters,
for MinGW/MSYS" ;-).  No need to over-complicate stuff.  If in a few days I'll
still be convinced that it's worth making this conditional to MinGW, I'll do
that myself.

>      cat exp.$p
>      cat got.$p
>      diff exp.$p got.$p

Thanks,
  Stefano