Subject: Re: [PATCH v3 2/6] t5541-http-push.sh: add test for unmatched, non-fast-forwarded refs

From: Tay Ray Chuan <[email-masked]>
Date: Tue, 5 Jan 2010 18:01:32 +0800

Hi,

On Tue, Jan 5, 2010 at 2:35 PM, Jeff King <[email-masked]> wrote:
> On Thu, Dec 24, 2009 at 03:41:58PM +0800, Tay Ray Chuan wrote:
>
>> 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.
>
> I don't understand what you're testing here. If it's not matched, then
> how is it a non-fast-forward? Isn't it simply unmatched?

Let me rephrase this as:

  Some refs can only be matched to a remote ref with an explicit
  refspec. When such a ref is a non-fast-forward of its remote ref,
  test that pushing them (with the explicit refspec specified) fails
  with a non-fast-foward-type error.

> Your test:
>
>> +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) &&
>> +
>> +     grep "^ + [a-z0-9]\+\.\.\.[a-z0-9]\+[ ]*master -> master (forced update)$" output &&
>> +     grep "^ ! \[rejected\][ ]*master -> retsam (non-fast-forward)$" output &&
>
> Looks like you're just testing the usual "master -> retsam is not a
> fast-forward" case. I don't understand how this is different from the
> previous tests. Can you elaborate?

The problem in question is that a non-fast-forward error is not being
reported, and this test sets up a situation to trigger this - it's not
meant to be just another non-fast-forward test.

-- 
Cheers,
Ray Chuan