Re: [PATCH v3 2/6] t5541-http-push.sh: add test for unmatched, non-fast-forwarded refs
Hi,
On Wed, Jan 6, 2010 at 9:04 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 37 quoted lines
> Tay Ray Chuan <rctay89@gmail.com> writes:
>
>> Test that when non-fast-forwarded refs cannot be matched without an
>> explicit refspect, the push fails with a non-fast-forward ref status and
>> help message.
>>
>> Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
>> ---
>> t/t5541-http-push.sh | 20 ++++++++++++++++++++
>> 1 files changed, 20 insertions(+), 0 deletions(-)
>>
>> diff --git a/t/t5541-http-push.sh b/t/t5541-http-push.sh
>> index f49c7c4..5ebe04a 100755
>> --- a/t/t5541-http-push.sh
>> +++ b/t/t5541-http-push.sh
>> @@ -111,5 +111,25 @@ Merge the remote changes before pushing again. See the '"'non-fast-forward'"'
>> section of '"'git push --help'"' for details." output
>> '
>>
>> +test_expect_failure 'push fails for non-fast-forward refs unmatched by remote helper' '
>> + # create a dissimilarly-named ref so that git is unable to match the refs
>> + git push origin master:retsam
>> +
>> + echo "change changed" > path2 &&
>> + git commit -a -m path2 --amend &&
>> +
>> + # push master too. This ensures there is at least one '"'push'"' command to
>> + # the remote helper and triggers interaction with the helper.
>> + !(git push -v origin +master master:retsam >output 2>&1) &&
>
> A dumb question. Why is this done in a sub-shell?
>
>> +
>> + grep "^ + [a-z0-9]\+\.\.\.[a-z0-9]\+[ ]*master -> master (forced update)$" output &&
>> + grep "^ ! \[rejected\][ ]*master -> retsam (non-fast-forward)$" output &&
>
> [a-z0-9] seems too broad to catch hexadecimal.
> "\+" to introduce ERE
> elements to grep that expects BRE is a GNU extension, IIRC. You could use
> egrep if you really want to say one-or-more, but I think in this case it
> is better to simply replace it with a zero-or-more '*'.
> Why is a single
> SP made into character class with "[ ]" pair?
To make it clearer that I'm trying to match a SP.
--
Cheers,
Ray Chuan