Re: [PATCH 2/4] format-patch: fix a bug in option exclusivity and add a test to t4014
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Apr 17, 2024, 06:27 UTC
- Message-ID
- <Zh9r1K2_T5wvVJVC@tanuki>
- In-Reply-To
- <c975f961779b4a7b10c0743b4b8b3ad8c89cb617.1713324598.git.dsimic@manjaro.org>
On Wed, Apr 17, 2024 at 05:32:42AM +0200, Dragan Simic wrote:
Show 29 quoted lines
> 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.
>
> 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.
>
> Signed-off-by: Dragan Simic <dsimic@manjaro.org>
> ---
> builtin/log.c | 5 ++++-
> t/t4014-format-patch.sh | 4 ++++
> 2 files changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/builtin/log.c b/builtin/log.c
> index c0a8bb95e983..e5a238f1cf2c 100644
> --- a/builtin/log.c
> +++ b/builtin/log.c
> @@ -2050,8 +2050,11 @@ 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;
> + }As an alternative fix, can we drop `subject_prefix` and replace it with `sprefix.len` instead? It seems to merely be a proxy value for that anyway, and if we didn't have that variable then the bug would not have been possible to begin with.
Patrick
Show 18 quoted lines
> 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..e22c4ac34e6e 100755
> --- a/t/t4014-format-patch.sh
> +++ b/t/t4014-format-patch.sh
> @@ -1397,6 +1397,10 @@ test_expect_success '--rfc is argument order independent' '
> test_cmp expect actual
> '
>
> +test_expect_success '--rfc and -k cannot be used together' '
> + test_must_fail git format-patch -1 --stdout --rfc -k >patch
> +'
> +
> test_expect_success '--from=ident notices bogus ident' '
> test_must_fail git format-patch -1 --stdout --from=foo >patch
> '
>