Message ID | 659b9835dcd0b38ac3972eb19c08c3bf26dccc80.1598043976.git.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fix trailers atom bug and improved tests | expand |
Hi Eric, On Sat, Aug 22, 2020 at 2:43 AM Eric Sunshine <sunshine@sunshineco.com> wrote: > > On Fri, Aug 21, 2020 at 5:06 PM Hariom Verma via GitGitGadget > <gitgitgadget@gmail.com> wrote: > > 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. > > > > Acked-by: Eric Sunshine <sunshine@sunshineco.com> > > I didn't "ack" this patch. If you think some sort of attribution with > my name is warranted, then a "Helped-by:" would be more appropriate. Sorry about that. Fixing in the next version. > > Signed-off-by: Hariom Verma <hariom18599@gmail.com> > > --- > > diff --git a/ref-filter.c b/ref-filter.c > > @@ -345,9 +345,11 @@ static int contents_atom_parser(const struct ref_format *format, struct used_ato > > - else if (skip_prefix(arg, "trailers", &arg)) { > > - skip_prefix(arg, ":", &arg); > > - if (trailers_atom_parser(format, atom, *arg ? arg : NULL, err)) > > + else if (!strcmp(arg, "trailers")) { > > + if (trailers_atom_parser(format, atom, NULL, err)) > > + return -1; > > + } else if (skip_prefix(arg, "trailers:", &arg)) { > > + if (trailers_atom_parser(format, atom, arg, err)) > > return -1; > > This looks better and easier to reason about (but I may be biased in > thinking so). Thanks for the review. > > diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh > > @@ -823,6 +823,14 @@ test_expect_success '%(trailers) rejects unknown trailers arguments' ' > > +test_expect_success 'if arguments, %(contents:trailers) shows error if semicolon is missing' ' > > This still needs a s/semicolon/colon/ (mentioned in my previous review). Sorry, I missed that too. Thanks, Hariom
On Fri, Aug 21, 2020 at 5:06 PM Hariom Verma via GitGitGadget <gitgitgadget@gmail.com> wrote: > 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. > > Acked-by: Eric Sunshine <sunshine@sunshineco.com> I didn't "ack" this patch. If you think some sort of attribution with my name is warranted, then a "Helped-by:" would be more appropriate. > Signed-off-by: Hariom Verma <hariom18599@gmail.com> > --- > diff --git a/ref-filter.c b/ref-filter.c > @@ -345,9 +345,11 @@ static int contents_atom_parser(const struct ref_format *format, struct used_ato > - else if (skip_prefix(arg, "trailers", &arg)) { > - skip_prefix(arg, ":", &arg); > - if (trailers_atom_parser(format, atom, *arg ? arg : NULL, err)) > + else if (!strcmp(arg, "trailers")) { > + if (trailers_atom_parser(format, atom, NULL, err)) > + return -1; > + } else if (skip_prefix(arg, "trailers:", &arg)) { > + if (trailers_atom_parser(format, atom, arg, err)) > return -1; This looks better and easier to reason about (but I may be biased in thinking so). > diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh > @@ -823,6 +823,14 @@ test_expect_success '%(trailers) rejects unknown trailers arguments' ' > +test_expect_success 'if arguments, %(contents:trailers) shows error if semicolon is missing' ' This still needs a s/semicolon/colon/ (mentioned in my previous review).
Eric Sunshine <sunshine@sunshineco.com> writes: > On Fri, Aug 21, 2020 at 5:06 PM Hariom Verma via GitGitGadget > <gitgitgadget@gmail.com> wrote: >> 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. >> >> Acked-by: Eric Sunshine <sunshine@sunshineco.com> > > I didn't "ack" this patch. If you think some sort of attribution with > my name is warranted, then a "Helped-by:" would be more appropriate. Yes, I did exactly that after moving it just above Hariom's sign-off. >> Signed-off-by: Hariom Verma <hariom18599@gmail.com> >> --- >> diff --git a/ref-filter.c b/ref-filter.c >> @@ -345,9 +345,11 @@ static int contents_atom_parser(const struct ref_format *format, struct used_ato >> - else if (skip_prefix(arg, "trailers", &arg)) { >> - skip_prefix(arg, ":", &arg); >> - if (trailers_atom_parser(format, atom, *arg ? arg : NULL, err)) >> + else if (!strcmp(arg, "trailers")) { >> + if (trailers_atom_parser(format, atom, NULL, err)) >> + return -1; >> + } else if (skip_prefix(arg, "trailers:", &arg)) { >> + if (trailers_atom_parser(format, atom, arg, err)) >> return -1; > > This looks better and easier to reason about (but I may be biased in > thinking so). > >> diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh >> @@ -823,6 +823,14 @@ test_expect_success '%(trailers) rejects unknown trailers arguments' ' >> +test_expect_success 'if arguments, %(contents:trailers) shows error if semicolon is missing' ' > > This still needs a s/semicolon/colon/ (mentioned in my previous review). Yup. Tweaked while queueing. Thanks always for sharp eyes.
diff --git a/ref-filter.c b/ref-filter.c index ba85869755..8ba0e31915 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -345,9 +345,11 @@ static int contents_atom_parser(const struct ref_format *format, struct used_ato atom->u.contents.option = C_SIG; else if (!strcmp(arg, "subject")) atom->u.contents.option = C_SUB; - else if (skip_prefix(arg, "trailers", &arg)) { - skip_prefix(arg, ":", &arg); - if (trailers_atom_parser(format, atom, *arg ? arg : NULL, err)) + else if (!strcmp(arg, "trailers")) { + if (trailers_atom_parser(format, atom, NULL, err)) + return -1; + } else if (skip_prefix(arg, "trailers:", &arg)) { + if (trailers_atom_parser(format, atom, arg, err)) return -1; } else if (skip_prefix(arg, "lines=", &arg)) { atom->u.contents.option = C_LINES; diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh index 0570380344..fdf2c442c5 100755 --- a/t/t6300-for-each-ref.sh +++ b/t/t6300-for-each-ref.sh @@ -823,6 +823,14 @@ test_expect_success '%(trailers) rejects unknown trailers arguments' ' test_i18ncmp expect actual ' +test_expect_success 'if arguments, %(contents:trailers) shows error if semicolon 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' ' git for-each-ref --format="%(contents:trailers)" refs/heads/master >actual && sanitize_pgp <actual >actual.clean &&