ref-filter: 'contents:trailers' show error if :
is missing
The 'contents' atom does not show any error if used with 'trailers' atom and colon is missing before trailers arguments. e.g %(contents:trailersonly) works, while it shouldn't. It is definitely not an expected behavior. Let's fix this bug. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Mentored-by: Heba Waly <heba.waly@gmail.com> Helped-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Hariom Verma <hariom18599@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
a8e0f50edc
commit
2c22e102f8
@ -342,9 +342,11 @@ static int contents_atom_parser(const struct ref_format *format, struct used_ato
|
|||||||
atom->u.contents.option = C_SIG;
|
atom->u.contents.option = C_SIG;
|
||||||
else if (!strcmp(arg, "subject"))
|
else if (!strcmp(arg, "subject"))
|
||||||
atom->u.contents.option = C_SUB;
|
atom->u.contents.option = C_SUB;
|
||||||
else if (skip_prefix(arg, "trailers", &arg)) {
|
else if (!strcmp(arg, "trailers")) {
|
||||||
skip_prefix(arg, ":", &arg);
|
if (trailers_atom_parser(format, atom, NULL, err))
|
||||||
if (trailers_atom_parser(format, atom, *arg ? arg : NULL, err))
|
return -1;
|
||||||
|
} else if (skip_prefix(arg, "trailers:", &arg)) {
|
||||||
|
if (trailers_atom_parser(format, atom, arg, err))
|
||||||
return -1;
|
return -1;
|
||||||
} else if (skip_prefix(arg, "lines=", &arg)) {
|
} else if (skip_prefix(arg, "lines=", &arg)) {
|
||||||
atom->u.contents.option = C_LINES;
|
atom->u.contents.option = C_LINES;
|
||||||
|
@ -785,6 +785,14 @@ test_expect_success '%(trailers) rejects unknown trailers arguments' '
|
|||||||
test_i18ncmp expect actual
|
test_i18ncmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'if arguments, %(contents:trailers) shows error if colon is missing' '
|
||||||
|
cat >expect <<-EOF &&
|
||||||
|
fatal: unrecognized %(contents) argument: trailersonly
|
||||||
|
EOF
|
||||||
|
test_must_fail git for-each-ref --format="%(contents:trailersonly)" 2>actual &&
|
||||||
|
test_i18ncmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'basic atom: head contents:trailers' '
|
test_expect_success 'basic atom: head contents:trailers' '
|
||||||
git for-each-ref --format="%(contents:trailers)" refs/heads/master >actual &&
|
git for-each-ref --format="%(contents:trailers)" refs/heads/master >actual &&
|
||||||
sanitize_pgp <actual >actual.clean &&
|
sanitize_pgp <actual >actual.clean &&
|
||||||
|
Reference in New Issue
Block a user