Subject: Re: [PATCH v3 1/9] t5520: fixup file contents comparisons

From: Junio C Hamano <[email-masked]>
Date: Thu, 14 May 2015 10:44:51 -0700

Michael Blume <[email-masked]> writes:

> On Wed, May 13, 2015 at 7:42 AM, Junio C Hamano <[email-masked]> wrote:
>> Junio C Hamano <[email-masked]> writes:
>>
>>> Paul Tan <[email-masked]> writes:
>>>
>>>> Replace the above 2 forms with:
>>>>
>>>>      verbose test "$(cat file)" = expected
>>>
>>> Quoting is very much a good idea, but I am not enthused by the
>>> vision of having to write verbose everywhere in our script.
>>> 
>>> After seeing a script fail, you can run it again with -i -x options;
>>> wouldn't it be sufficient?
>> ...
>
> My build starts breaking from this commit, I'm on a mac.
>
>
> expecting success:
>     (cd dst &&
>      test_must_fail git pull --rebase &&
>      verbose test 1 = "$(find .git/rebase-apply -name "000*" | wc -l)"
>     )
>
> First, rewinding head to replay your work on top of it...
> ...
> To check out the original branch and stop rebasing, run "git rebase --abort".
>
> command failed:  'test' '1' '=' '       1'
> not ok 33 - git pull --rebase does not reapply old patches

Change that 'verbose test' line to

	verbose test 1 = $(find .git/rebase-apply -name "000*" | wc -l)

i.e. losing the double-quotes around $().

By the way, thanks for a fine demonstration that the 'verbose test'
is not very useful.

This output

> command failed:  'test' '1' '=' '       1'

and that you said "on a mac", _I_ can immediately guess that there
is "wc -l" involved, because it has been a frequent source of
portability headache.

But "verbose" is not helping very much to show there is "wc -l";
unless the person debugging the output has a pretty good idea what
can go wrong, that is.