git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: t6023 broken under Mac OS

From
Torsten Bögershausen <tboegi@web.de>
Date
Jan 1, 2016, 22:23 UTC
Message-ID
<5686FC72.8030008@web.de>
In-Reply-To
<5686EC29.3080901@ramsayjones.plus.com>
On 2016-01-01 22.14, Ramsay Jones wrote:
Show 65 quoted lines
> 
> 
> On 01/01/16 17:49, Torsten Bögershausen wrote:
>> On 2016-01-01 18.14, Ramsay Jones wrote:
>>> Hi Torsten,
>>>
>>> On 01/01/16 15:36, Torsten Bögershausen wrote:
>>>> The (last) test case
>>>> 'conflict markers contain CRLF when core.eol=crlf'
>>>>
>>>> does not work as expected under Mac OS: "wc -l" is not portable and the line
>>>> test $(sed -n "/\.txt\r$/p" output.txt | wc -l) = 3
>>>> fails.
>>>
>>> Hmm, I have never used a Mac, so I'm just guessing here, but
>>> you could try something like (obviously untested!):
>>>
>>> diff --git a/t/t6023-merge-file.sh b/t/t6023-merge-file.sh
>>> index 245359a..68b306f 100755
>>> --- a/t/t6023-merge-file.sh
>>> +++ b/t/t6023-merge-file.sh
>>> @@ -350,7 +350,7 @@ test_expect_success 'conflict at EOF without LF resolved by --union' \
>>>  test_expect_success 'conflict markers contain CRLF when core.eol=crlf' '
>>>  	test_must_fail git -c core.eol=crlf merge-file -p \
>>>  		nolf-diff1.txt nolf-orig.txt nolf-diff2.txt >output.txt &&
>>> -	test $(sed -n "/\.txt\r$/p" output.txt | wc -l) = 3
>>> +	test $(tr "\015" Q <output.txt | sed -n "/\.txtQ$/p" | wc -l) -eq 3
>>>  '
>>>  
>>>  test_done
>> Yes, this works.
>>
>>>
>>> [The 'wc -l' portability should only be a problem if you rely on the
>>> exact textual form of the output, rather than the integer count.
>>> 'wc -l' is used in many many tests ...]
>>>
>>> Note that this test is not checking all conflict markers (the
>>> ======= marker does not have a filename appended). Should that
>>> be fixed also?
>> This is may attempt (against pu)
>>
>> diff --git a/t/t6023-merge-file.sh b/t/t6023-merge-file.sh
>> index 68b306f..b1f8e41 100755
>> --- a/t/t6023-merge-file.sh
>> +++ b/t/t6023-merge-file.sh
>> @@ -350,7 +350,13 @@ test_expect_success 'conflict at EOF without LF resolved by
>> --union' \
>>  test_expect_success 'conflict markers contain CRLF when core.eol=crlf' '
>>         test_must_fail git -c core.eol=crlf merge-file -p \
>>                 nolf-diff1.txt nolf-orig.txt nolf-diff2.txt >output.txt &&
>> -       test $(tr "\015" Q <output.txt | sed -n "/\.txtQ$/p" | wc -l) -eq 3
>> +       tr "\015" Q <output.txt | sed -n "/\.txtQ$/p" >out &&
>> +       cat >exp <<\EOF  &&
>> +<<<<<<< nolf-diff1.txtQ
>> +||||||| nolf-orig.txtQ
>> +>>>>>>> nolf-diff2.txtQ
>> +EOF
>> +        test_cmp exp out
>>  '
>>
> 
> This still doesn't test the '======= conflict marker', how about
> something like this (again not tested on Mac - is the re in the
> sed invocation OK on the Mac?):
sed is OK (The problem is the usage of "\r" inside sed:)

Linux: printf "AA\r\n" | sed 's/\r$//' | od -c 0000000 A A \n

Mac OS: printf "AA\r\n" | sed 's/\r$//' | od -c 0000000 A A \r \n 0000004

Show 21 quoted lines
> 
> diff --git a/t/t6023-merge-file.sh b/t/t6023-merge-file.sh
> index 245359a..0697b22 100755
> --- a/t/t6023-merge-file.sh
> +++ b/t/t6023-merge-file.sh
> @@ -350,7 +350,14 @@ test_expect_success 'conflict at EOF without LF resolved by --union' \
>  test_expect_success 'conflict markers contain CRLF when core.eol=crlf' '
>  	test_must_fail git -c core.eol=crlf merge-file -p \
>  		nolf-diff1.txt nolf-orig.txt nolf-diff2.txt >output.txt &&
> -	test $(sed -n "/\.txt\r$/p" output.txt | wc -l) = 3
> +	tr "\015" Q <output.txt | sed -n "/^[<=>|].*Q$/p" >out.txt &&
> +	cat >expect.txt <<-\EOF &&
> +	<<<<<<< nolf-diff1.txtQ
> +	||||||| nolf-orig.txtQ
> +	=======Q
> +	>>>>>>> nolf-diff2.txtQ
> +	EOF
> +	test_cmp expect.txt out.txt
>  '
>  
>  test_done
Your fix works under Mac OS.
Micro-nit: should the sed expression use -e (is that more Git style ?)
tr "\015" Q <output.txt | sed -n -e "/^[<=>|].*Q$/p" >out.txt &&
Micro.nit 2:
We can simplify and use grep instead:
tr "\015" Q <output.txt | grep "^[<=>|]" >out.txt &&
Previous: Ramsay JonesNext: Junio C Hamano
Message 5 of 7 in “t6023 broken under Mac OS”
  1. Torsten BögershausenJan 1, 2016
  2. Ramsay JonesJan 1, 2016
  3. Torsten BögershausenJan 1, 2016
  4. Ramsay JonesJan 1, 2016
  5. Torsten BögershausenJan 1, 2016
  6. Junio C HamanoJan 2, 2016
  7. Beat BolliJan 2, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.