Browse Source
The docs seem to say that doing git show-ref --head --tags would show both the HEAD ref and all the tag refs. However, doing both --head and either of --tags or --heads would filter out the HEAD ref. Also update the documentation to describe the new behavior and add tests for the show-ref command. [jc: Doug did proofread the tests, but it was done by me and bugs in it are mine]. Signed-off-by: Doug Bell <madcityzen@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint


3 changed files with 179 additions and 6 deletions
@ -0,0 +1,167 @@
@@ -0,0 +1,167 @@
|
||||
#!/bin/sh |
||||
|
||||
test_description='show-ref' |
||||
. ./test-lib.sh |
||||
|
||||
test_expect_success setup ' |
||||
test_commit A && |
||||
git tag -f -a -m "annotated A" A && |
||||
git checkout -b side && |
||||
test_commit B && |
||||
git tag -f -a -m "annotated B" B && |
||||
git checkout master && |
||||
test_commit C && |
||||
git branch B A^0 |
||||
' |
||||
|
||||
test_expect_success 'show-ref' ' |
||||
echo $(git rev-parse refs/tags/A) refs/tags/A >expect && |
||||
|
||||
git show-ref A >actual && |
||||
test_cmp expect actual && |
||||
|
||||
git show-ref tags/A >actual && |
||||
test_cmp expect actual && |
||||
|
||||
git show-ref refs/tags/A >actual && |
||||
test_cmp expect actual && |
||||
|
||||
>expect && |
||||
|
||||
test_must_fail git show-ref D >actual |
||||
test_cmp expect actual |
||||
' |
||||
|
||||
test_expect_success 'show-ref -q' ' |
||||
>expect && |
||||
|
||||
git show-ref -q A >actual && |
||||
test_cmp expect actual && |
||||
|
||||
git show-ref -q tags/A >actual && |
||||
test_cmp expect actual && |
||||
|
||||
git show-ref -q refs/tags/A >actual && |
||||
test_cmp expect actual && |
||||
|
||||
test_must_fail git show-ref -q D >actual && |
||||
test_cmp expect actual |
||||
' |
||||
|
||||
test_expect_success 'show-ref --verify' ' |
||||
echo $(git rev-parse refs/tags/A) refs/tags/A >expect && |
||||
|
||||
git show-ref --verify refs/tags/A >actual && |
||||
test_cmp expect actual && |
||||
|
||||
>expect && |
||||
|
||||
test_must_fail git show-ref --verify A >actual && |
||||
test_cmp expect actual && |
||||
|
||||
test_must_fail git show-ref --verify tags/A >actual && |
||||
test_cmp expect actual && |
||||
|
||||
test_must_fail git show-ref --verify D >actual |
||||
test_cmp expect actual |
||||
' |
||||
|
||||
test_expect_success 'show-ref --verify -q' ' |
||||
>expect && |
||||
|
||||
git show-ref --verify -q refs/tags/A >actual && |
||||
test_cmp expect actual && |
||||
|
||||
test_must_fail git show-ref --verify -q A >actual && |
||||
test_cmp expect actual && |
||||
|
||||
test_must_fail git show-ref --verify -q tags/A >actual && |
||||
test_cmp expect actual && |
||||
|
||||
test_must_fail git show-ref --verify -q D >actual |
||||
test_cmp expect actual |
||||
' |
||||
|
||||
test_expect_success 'show-ref -d' ' |
||||
{ |
||||
echo $(git rev-parse refs/tags/A) refs/tags/A && |
||||
echo $(git rev-parse refs/tags/A^0) "refs/tags/A^{}" |
||||
echo $(git rev-parse refs/tags/C) refs/tags/C |
||||
} >expect && |
||||
git show-ref -d A C >actual && |
||||
test_cmp expect actual && |
||||
|
||||
git show-ref -d tags/A tags/C >actual && |
||||
test_cmp expect actual && |
||||
|
||||
git show-ref -d refs/tags/A refs/tags/C >actual && |
||||
test_cmp expect actual && |
||||
|
||||
echo $(git rev-parse refs/heads/master) refs/heads/master >expect && |
||||
git show-ref -d master >actual && |
||||
test_cmp expect actual && |
||||
|
||||
git show-ref -d heads/master >actual && |
||||
test_cmp expect actual && |
||||
|
||||
git show-ref -d refs/heads/master >actual && |
||||
test_cmp expect actual |
||||
|
||||
git show-ref -d --verify refs/heads/master >actual && |
||||
test_cmp expect actual |
||||
|
||||
>expect && |
||||
|
||||
test_must_fail git show-ref -d --verify master >actual && |
||||
test_cmp expect actual && |
||||
|
||||
test_must_fail git show-ref -d --verify heads/master >actual && |
||||
test_cmp expect actual |
||||
|
||||
' |
||||
|
||||
test_expect_success 'show-ref --heads, --tags, --head, pattern' ' |
||||
for branch in B master side |
||||
do |
||||
echo $(git rev-parse refs/heads/$branch) refs/heads/$branch |
||||
done >expect.heads && |
||||
git show-ref --heads >actual && |
||||
test_cmp expect.heads actual && |
||||
|
||||
for tag in A B C |
||||
do |
||||
echo $(git rev-parse refs/tags/$tag) refs/tags/$tag |
||||
done >expect.tags && |
||||
git show-ref --tags >actual && |
||||
test_cmp expect.tags actual && |
||||
|
||||
cat expect.heads expect.tags >expect && |
||||
git show-ref --heads --tags >actual && |
||||
test_cmp expect actual && |
||||
|
||||
{ |
||||
echo $(git rev-parse HEAD) HEAD && |
||||
cat expect.heads expect.tags |
||||
} >expect && |
||||
git show-ref --heads --tags --head >actual && |
||||
test_cmp expect actual && |
||||
|
||||
{ |
||||
echo $(git rev-parse HEAD) HEAD && |
||||
echo $(git rev-parse refs/heads/B) refs/heads/B |
||||
echo $(git rev-parse refs/tags/B) refs/tags/B |
||||
} >expect && |
||||
git show-ref --head B >actual && |
||||
test_cmp expect actual && |
||||
|
||||
{ |
||||
echo $(git rev-parse HEAD) HEAD && |
||||
echo $(git rev-parse refs/heads/B) refs/heads/B |
||||
echo $(git rev-parse refs/tags/B) refs/tags/B |
||||
echo $(git rev-parse refs/tags/B^0) "refs/tags/B^{}" |
||||
} >expect && |
||||
git show-ref --head -d B >actual && |
||||
test_cmp expect actual |
||||
' |
||||
|
||||
test_done |
Loading…
Reference in new issue