Message ID | 71d195c248879e7c46fac0e84c6b0a8aa90bd2c2.1713488563.git.dsimic@manjaro.org (mailing list archive) |
---|---|
State | Accepted |
Commit | cadcf58085cada6e781444cbdde6d4b0067ebe4c |
Headers | show |
Series | format-patch: ensure that --rfc and -k are mutually exclusive | expand |
+Cc: Drew DeVault <sir@cmpwn.com> On 2024-04-19 03:05, Dragan Simic wrote: > Fix a bug that allows the "--rfc" and "-k" options to be specified > together > when "git format-patch" is executed, which was introduced in the commit > e0d7db7423a9 ("format-patch: --rfc honors what --subject-prefix sets"). > > Add a couple of additional tests to t4014, to cover additional cases of > the mutual exclusivity between different "git format-patch" options. > > Signed-off-by: Dragan Simic <dsimic@manjaro.org> > --- > > Notes: > This patch originates from my earlier patch series, [1] for which > it was concluded to not be acceptable in its entirety. [2] > > This version of the patch includes improvements based on the > valuable > and appreciated feedback from the reviewers: > - Improved and simplified the patch subject and patch > description, as > suggested by Eric Sunshine [3] and Kristoffer Haugsbakk [4] > - Removed a redundant comment from the bugfix, as suggested by > Eric > Sunshine and Kristoffer Haugsbakk [5] > - Squashed the bugfix and the new tests into a single patch, for > easier > reviewing, as suggested by Eric Sunshine [6] > - Improved the main new test, as suggested by Kristoffer > Haugsbakk, [4] > and added validation of both stdout and stderr outputs > - Added a couple of more tests, to cover additional cases of the > mutual > exclusivity of the available command-line options > > [1] > https://lore.kernel.org/git/b7568429acad91ff2d9a1574111441a3@manjaro.org/T/#mfcbbcf38e23698d09f524cc3b49ed1d855b90018 > [2] > https://lore.kernel.org/git/b7568429acad91ff2d9a1574111441a3@manjaro.org/T/#m9441b5486ca9229d5bfff9c2a92bc80eef341baf > [3] > https://lore.kernel.org/git/CAPig+cTEp799w2-VEACYThW0COyo0SJLRS_sr-PG=LX++Tompw@mail.gmail.com/T/#u > [4] > https://lore.kernel.org/git/e4aa5235-c6ad-45c7-930e-de991cc375f2@app.fastmail.com/T/#u > [5] > https://lore.kernel.org/git/CAPig+cSGZr4zE=Dp7Z58CN0kmkpXdc8SOopXmB9=ry4gwNkq=w@mail.gmail.com/T/#u > [6] > https://lore.kernel.org/git/CAPig+cRBjosyadQHO03fcCz7YBc=T04ytHkpt9UU87tLaiSOgw@mail.gmail.com/T/#u > > Range-diff: > 1: 25b90d065744 < -: ------------ format-patch docs: avoid use of > parentheses to improve readability > 2: c975f961779b ! 1: 71d195c24887 format-patch: fix a bug in option > exclusivity and add a test to t4014 > @@ Metadata > Author: Dragan Simic <dsimic@manjaro.org> > > ## Commit message ## > - format-patch: fix a bug in option exclusivity and add a test > to t4014 > + format-patch: ensure that --rfc and -k are mutually exclusive > > - Fix a bug that allows --rfc and -k options to be specified > together when > - executing "git format-patch". This bug was introduced back > in the commit > - e0d7db7423a9 ("format-patch: --rfc honors what > --subject-prefix sets"), > - about eight months ago, but it has remained undetected so > far, presumably > - because of no associated test coverage. > + Fix a bug that allows the "--rfc" and "-k" options to be > specified together > + when "git format-patch" is executed, which was introduced in > the commit > + e0d7db7423a9 ("format-patch: --rfc honors what > --subject-prefix sets"). > > - Add a new test to the t4014 that covers the mutual > exclusivity of the --rfc > - and -k command-line options for "git format-patch", for > future coverage. > + Add a couple of additional tests to t4014, to cover additional > cases of > + the mutual exclusivity between different "git format-patch" > options. > > Signed-off-by: Dragan Simic <dsimic@manjaro.org> > > + > + ## Notes ## > + This patch originates from my earlier patch series, [1] for > which > + it was concluded to not be acceptable in its entirety. [2] > + > + This version of the patch includes improvements based on the > valuable > + and appreciated feedback from the reviewers: > + - Improved and simplified the patch subject and patch > description, as > + suggested by Eric Sunshine [3] and Kristoffer Haugsbakk > [4] > + - Removed a redundant comment from the bugfix, as suggested > by Eric > + Sunshine and Kristoffer Haugsbakk [5] > + - Squashed the bugfix and the new tests into a single > patch, for easier > + reviewing, as suggested by Eric Sunshine [6] > + - Improved the main new test, as suggested by Kristoffer > Haugsbakk, [4] > + and added validation of both stdout and stderr outputs > + - Added a couple of more tests, to cover additional cases > of the mutual > + exclusivity of the available command-line options > + > + [1] > https://lore.kernel.org/git/b7568429acad91ff2d9a1574111441a3@manjaro.org/T/#mfcbbcf38e23698d09f524cc3b49ed1d855b90018 > + [2] > https://lore.kernel.org/git/b7568429acad91ff2d9a1574111441a3@manjaro.org/T/#m9441b5486ca9229d5bfff9c2a92bc80eef341baf > + [3] > https://lore.kernel.org/git/CAPig+cTEp799w2-VEACYThW0COyo0SJLRS_sr-PG=LX++Tompw@mail.gmail.com/T/#u > + [4] > https://lore.kernel.org/git/e4aa5235-c6ad-45c7-930e-de991cc375f2@app.fastmail.com/T/#u > + [5] > https://lore.kernel.org/git/CAPig+cSGZr4zE=Dp7Z58CN0kmkpXdc8SOopXmB9=ry4gwNkq=w@mail.gmail.com/T/#u > + [6] > https://lore.kernel.org/git/CAPig+cRBjosyadQHO03fcCz7YBc=T04ytHkpt9UU87tLaiSOgw@mail.gmail.com/T/#u > + > ## builtin/log.c ## > @@ builtin/log.c: int cmd_format_patch(int argc, const char > **argv, const char *prefix) > if (cover_from_description_arg) > cover_from_description_mode = > parse_cover_from_description(cover_from_description_arg); > > - if (rfc) > -+ /* Also mark the subject prefix as modified, for later checks */ > + if (rfc) { > strbuf_insertstr(&sprefix, 0, "RFC "); > + subject_prefix = 1; > + } > > if (reroll_count) { > strbuf_addf(&sprefix, " v%s", reroll_count); > > ## t/t4014-format-patch.sh ## > @@ t/t4014-format-patch.sh: test_expect_success '--rfc is > argument order independent' ' > test_cmp expect actual > ' > > ++test_expect_success '--subject-prefix="<non-empty>" and -k > cannot be used together' ' > ++ echo "fatal: options '\''--subject-prefix/--rfc'\'' and > '\''-k'\'' cannot be used together" >expect.err && > ++ test_must_fail git format-patch -1 --stdout > --subject-prefix="MYPREFIX" -k >actual.out 2>actual.err && > ++ test_must_be_empty actual.out && > ++ test_cmp expect.err actual.err > ++' > ++ > ++test_expect_success '--subject-prefix="" and -k cannot be used > together' ' > ++ echo "fatal: options '\''--subject-prefix/--rfc'\'' and > '\''-k'\'' cannot be used together" >expect.err && > ++ test_must_fail git format-patch -1 --stdout --subject-prefix="" > -k >actual.out 2>actual.err && > ++ test_must_be_empty actual.out && > ++ test_cmp expect.err actual.err > ++' > ++ > +test_expect_success '--rfc and -k cannot be used together' ' > -+ test_must_fail git format-patch -1 --stdout --rfc -k >patch > ++ echo "fatal: options '\''--subject-prefix/--rfc'\'' and > '\''-k'\'' cannot be used together" >expect.err && > ++ test_must_fail git format-patch -1 --stdout --rfc -k > >actual.out 2>actual.err && > ++ test_must_be_empty actual.out && > ++ test_cmp expect.err actual.err > +' > + > test_expect_success '--from=ident notices bogus ident' ' > 3: 1d9c6ce3df71 < -: ------------ format-patch: new --resend option > for adding "RESEND" to patch subjects > 4: 42865d6c6694 < -: ------------ t4014: add tests to cover --resend > option and its exclusivity > > builtin/log.c | 4 +++- > t/t4014-format-patch.sh | 21 +++++++++++++++++++++ > 2 files changed, 24 insertions(+), 1 deletion(-) > > diff --git a/builtin/log.c b/builtin/log.c > index c0a8bb95e983..8bab30fcc70d 100644 > --- a/builtin/log.c > +++ b/builtin/log.c > @@ -2050,8 +2050,10 @@ int cmd_format_patch(int argc, const char > **argv, const char *prefix) > if (cover_from_description_arg) > cover_from_description_mode = > parse_cover_from_description(cover_from_description_arg); > > - if (rfc) > + if (rfc) { > strbuf_insertstr(&sprefix, 0, "RFC "); > + subject_prefix = 1; > + } > > if (reroll_count) { > strbuf_addf(&sprefix, " v%s", reroll_count); > diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh > index e37a1411ee24..90fe6d066cc0 100755 > --- a/t/t4014-format-patch.sh > +++ b/t/t4014-format-patch.sh > @@ -1397,6 +1397,27 @@ test_expect_success '--rfc is argument order > independent' ' > test_cmp expect actual > ' > > +test_expect_success '--subject-prefix="<non-empty>" and -k cannot be > used together' ' > + echo "fatal: options '\''--subject-prefix/--rfc'\'' and '\''-k'\'' > cannot be used together" >expect.err && > + test_must_fail git format-patch -1 --stdout > --subject-prefix="MYPREFIX" -k >actual.out 2>actual.err && > + test_must_be_empty actual.out && > + test_cmp expect.err actual.err > +' > + > +test_expect_success '--subject-prefix="" and -k cannot be used > together' ' > + echo "fatal: options '\''--subject-prefix/--rfc'\'' and '\''-k'\'' > cannot be used together" >expect.err && > + test_must_fail git format-patch -1 --stdout --subject-prefix="" -k > >actual.out 2>actual.err && > + test_must_be_empty actual.out && > + test_cmp expect.err actual.err > +' > + > +test_expect_success '--rfc and -k cannot be used together' ' > + echo "fatal: options '\''--subject-prefix/--rfc'\'' and '\''-k'\'' > cannot be used together" >expect.err && > + test_must_fail git format-patch -1 --stdout --rfc -k >actual.out > 2>actual.err && > + test_must_be_empty actual.out && > + test_cmp expect.err actual.err > +' > + > test_expect_success '--from=ident notices bogus ident' ' > test_must_fail git format-patch -1 --stdout --from=foo >patch > '
Reviewed-by: Drew DeVault <sir@cmpwn.com>
On 2024-04-19 10:51, Drew DeVault wrote:
> Reviewed-by: Drew DeVault <sir@cmpwn.com>
Thanks!
On Fri, Apr 19, 2024, at 03:05, Dragan Simic wrote: > Fix a bug that allows the "--rfc" and "-k" options to be specified together > when "git format-patch" is executed, which was introduced in the commit > e0d7db7423a9 ("format-patch: --rfc honors what --subject-prefix sets"). > > Add a couple of additional tests to t4014, to cover additional cases of > the mutual exclusivity between different "git format-patch" options. > > Signed-off-by: Dragan Simic <dsimic@manjaro.org> Looks good to me FWIW. Also very good description of the changes from the previous version to this one.
"Kristoffer Haugsbakk" <code@khaugsbakk.name> writes: > On Fri, Apr 19, 2024, at 03:05, Dragan Simic wrote: >> Fix a bug that allows the "--rfc" and "-k" options to be specified together >> when "git format-patch" is executed, which was introduced in the commit >> e0d7db7423a9 ("format-patch: --rfc honors what --subject-prefix sets"). >> >> Add a couple of additional tests to t4014, to cover additional cases of >> the mutual exclusivity between different "git format-patch" options. >> >> Signed-off-by: Dragan Simic <dsimic@manjaro.org> > > Looks good to me FWIW. Also very good description of the changes from > the previous version to this one. Yup, very easy to follow what changed and how. Will queue, thanks all.
On 2024-04-19 15:43, Kristoffer Haugsbakk wrote: > On Fri, Apr 19, 2024, at 03:05, Dragan Simic wrote: >> Fix a bug that allows the "--rfc" and "-k" options to be specified >> together >> when "git format-patch" is executed, which was introduced in the >> commit >> e0d7db7423a9 ("format-patch: --rfc honors what --subject-prefix >> sets"). >> >> Add a couple of additional tests to t4014, to cover additional cases >> of >> the mutual exclusivity between different "git format-patch" options. >> >> Signed-off-by: Dragan Simic <dsimic@manjaro.org> > > Looks good to me FWIW. Also very good description of the changes from > the previous version to this one. Thank you!
On 2024-04-19 17:43, Junio C Hamano wrote: > "Kristoffer Haugsbakk" <code@khaugsbakk.name> writes: > >> On Fri, Apr 19, 2024, at 03:05, Dragan Simic wrote: >>> Fix a bug that allows the "--rfc" and "-k" options to be specified >>> together >>> when "git format-patch" is executed, which was introduced in the >>> commit >>> e0d7db7423a9 ("format-patch: --rfc honors what --subject-prefix >>> sets"). >>> >>> Add a couple of additional tests to t4014, to cover additional cases >>> of >>> the mutual exclusivity between different "git format-patch" options. >>> >>> Signed-off-by: Dragan Simic <dsimic@manjaro.org> >> >> Looks good to me FWIW. Also very good description of the changes from >> the previous version to this one. > > Yup, very easy to follow what changed and how. > > Will queue, thanks all. Thank you!
diff --git a/builtin/log.c b/builtin/log.c index c0a8bb95e983..8bab30fcc70d 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -2050,8 +2050,10 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) if (cover_from_description_arg) cover_from_description_mode = parse_cover_from_description(cover_from_description_arg); - if (rfc) + if (rfc) { strbuf_insertstr(&sprefix, 0, "RFC "); + subject_prefix = 1; + } if (reroll_count) { strbuf_addf(&sprefix, " v%s", reroll_count); diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh index e37a1411ee24..90fe6d066cc0 100755 --- a/t/t4014-format-patch.sh +++ b/t/t4014-format-patch.sh @@ -1397,6 +1397,27 @@ test_expect_success '--rfc is argument order independent' ' test_cmp expect actual ' +test_expect_success '--subject-prefix="<non-empty>" and -k cannot be used together' ' + echo "fatal: options '\''--subject-prefix/--rfc'\'' and '\''-k'\'' cannot be used together" >expect.err && + test_must_fail git format-patch -1 --stdout --subject-prefix="MYPREFIX" -k >actual.out 2>actual.err && + test_must_be_empty actual.out && + test_cmp expect.err actual.err +' + +test_expect_success '--subject-prefix="" and -k cannot be used together' ' + echo "fatal: options '\''--subject-prefix/--rfc'\'' and '\''-k'\'' cannot be used together" >expect.err && + test_must_fail git format-patch -1 --stdout --subject-prefix="" -k >actual.out 2>actual.err && + test_must_be_empty actual.out && + test_cmp expect.err actual.err +' + +test_expect_success '--rfc and -k cannot be used together' ' + echo "fatal: options '\''--subject-prefix/--rfc'\'' and '\''-k'\'' cannot be used together" >expect.err && + test_must_fail git format-patch -1 --stdout --rfc -k >actual.out 2>actual.err && + test_must_be_empty actual.out && + test_cmp expect.err actual.err +' + test_expect_success '--from=ident notices bogus ident' ' test_must_fail git format-patch -1 --stdout --from=foo >patch '