1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-06-08 00:46:11 +02:00

ref-filter: make "%(symref)" atom work with the ':short' modifier

The "%(symref)" atom doesn't work when used with the ':short' modifier
because we strictly match only 'symref' for setting the 'need_symref'
indicator. Fix this by comparing with the valid_atom rather than the
used_atom.

Add tests for %(symref) and %(symref:short) while we're here.

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Karthik Nayak <Karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Karthik Nayak 2017-01-10 14:19:42 +05:30 committed by Junio C Hamano
parent 7743fcca5b
commit 01f95825d5
2 changed files with 25 additions and 1 deletions

View File

@ -352,7 +352,7 @@ int parse_ref_filter_atom(const char *atom, const char *ep)
valid_atom[i].parser(&used_atom[at], arg);
if (*atom == '*')
need_tagged = 1;
if (!strcmp(used_atom[at].name, "symref"))
if (!strcmp(valid_atom[i].name, "symref"))
need_symref = 1;
return at;
}

View File

@ -38,6 +38,7 @@ test_atom() {
case "$1" in
head) ref=refs/heads/master ;;
tag) ref=refs/tags/testtag ;;
sym) ref=refs/heads/sym ;;
*) ref=$1 ;;
esac
printf '%s\n' "$3" >expected
@ -566,6 +567,7 @@ test_expect_success 'Verify sort with multiple keys' '
test_cmp expected actual
'
test_expect_success 'do not dereference NULL upon %(HEAD) on unborn branch' '
test_when_finished "git checkout master" &&
git for-each-ref --format="%(HEAD) %(refname:short)" refs/heads/ >actual &&
@ -600,4 +602,26 @@ test_expect_success 'basic atom: head contents:trailers' '
test_cmp expect actual.clean
'
test_expect_success 'Add symbolic ref for the following tests' '
git symbolic-ref refs/heads/sym refs/heads/master
'
cat >expected <<EOF
refs/heads/master
EOF
test_expect_success 'Verify usage of %(symref) atom' '
git for-each-ref --format="%(symref)" refs/heads/sym >actual &&
test_cmp expected actual
'
cat >expected <<EOF
heads/master
EOF
test_expect_success 'Verify usage of %(symref:short) atom' '
git for-each-ref --format="%(symref:short)" refs/heads/sym >actual &&
test_cmp expected actual
'
test_done