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

From: Peter Rosin <[email-masked]>
Date: Wed, 29 May 2013 15:39:14 +0200

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; }
     cat exp.$p
     cat got.$p
     diff exp.$p got.$p