Re: [PATCH v3 2/6] t5541-http-push.sh: add test for unmatched, non-fast-forwarded refs
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 6, 2010, 01:04 UTC
- Message-ID
- <7viqbgoxgg.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <20091224154158.15ba580f.rctay89@gmail.com>
Tay Ray Chuan <rctay89@gmail.com> writes:
Show 27 quoted lines
> 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?
Show 11 quoted lines
> + > + grep \ > +"To prevent you from losing history, non-fast-forward updates were rejected > +Merge the remote changes before pushing again. See the '"'non-fast-forward'"' > +section of '"'git push --help'"' for details." output > +' > + > stop_httpd > test_done > -- > 1.6.6.rc1.249.g048b3