From: ZheNing Hu <adlternative@gmail.com>
To: Eric Sunshine <sunshine@sunshineco.com>
Cc: "ZheNing Hu via GitGitGadget" <gitgitgadget@gmail.com>,
"Git List" <git@vger.kernel.org>,
"Junio C Hamano" <gitster@pobox.com>,
"Denton Liu" <liu.denton@gmail.com>,
"Đoàn Trần Công Danh" <congdanhqx@gmail.com>
Subject: Re: [PATCH v9] format-patch: allow a non-integral version numbers
Date: Tue, 23 Mar 2021 16:53:53 +0800 [thread overview]
Message-ID: <CAOLTT8QrqDFj+ZGFRqDWDixj6hvdsF8OqYsac5J9WP2Yc+zXRQ@mail.gmail.com> (raw)
In-Reply-To: <CAPig+cQ5jBc-fz69ygpWUP7uCVNAT8GT_01y6GnxDEa6XDNZ=g@mail.gmail.com>
Eric Sunshine <sunshine@sunshineco.com> 于2021年3月23日周二 下午1:31写道:
>
> On Sun, Mar 21, 2021 at 5:00 AM ZheNing Hu via GitGitGadget
> <gitgitgadget@gmail.com> wrote:
> > [...]
> > Allow `format-patch` to take such a non-integral iteration
> > number.
> > [...]
> > Signed-off-by: ZheNing Hu <adlternative@gmail.com>
>
> Just a few nits below; nothing very important (except perhaps the
> final comment about the potential for people to get confused while
> reading the tests). Junio already has this marked as ready to merge to
> "next", so these nits may not be worth a re-roll.
>
Thanks, Eric, these suggestions are worth considering.
> > diff --git a/log-tree.c b/log-tree.c
> > @@ -368,9 +368,14 @@ void fmt_output_subject(struct strbuf *filename,
> > int max_len = start_len + info->patch_name_max - (strlen(suffix) + 1);
> > + struct strbuf temp = STRBUF_INIT;
> >
> > + if (info->reroll_count) {
> > + strbuf_addf(&temp, "v%s", info->reroll_count);
> > + format_sanitized_subject(filename, temp.buf, temp.len);
> > + strbuf_addstr(filename, "-");
> > + strbuf_release(&temp);
> > + }
>
> The new `temp` strbuf is use only inside the conditional, so it
> could/should have been declared in that block rather than in the outer
> block:
>
Sometimes I always forget this: which variables need to be placed locally,
It seems that I have to be more careful.
> if (info->reroll_count) {
> struct strbuf temp = STRBUF_INIT;
>
> strbuf_addf(&temp, "v%s", info->reroll_count);
> ...
> }
>
> > diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
> > @@ -378,6 +378,22 @@ test_expect_success 'reroll count' '
> > +test_expect_success 'reroll count with a fractional number' '
> > + rm -fr patches &&
> > + git format-patch -o patches --cover-letter --reroll-count 4.4 main..side >list &&
> > + ! grep -v "^patches/v4.4-000[0-3]-" list &&
> > + sed -n -e "/^Subject: /p" $(cat list) >subjects &&
> > + ! grep -v "^Subject: \[PATCH v4.4 [0-3]/3\] " subjects
> > +'
> > +
> > +test_expect_success 'reroll count with a non number' '
> > + rm -fr patches &&
> > + git format-patch -o patches --cover-letter --reroll-count 4rev2 main..side >list &&
> > + ! grep -v "^patches/v4rev2-000[0-3]-" list &&
> > + sed -n -e "/^Subject: /p" $(cat list) >subjects &&
> > + ! grep -v "^Subject: \[PATCH v4rev2 [0-3]/3\] " subjects
> > +'
>
> The above two tests...
>
> > @@ -386,6 +402,38 @@ test_expect_success 'reroll count (-v)' '
> > +test_expect_success 'reroll count (-v) with a fractional number' '
> > + rm -fr patches &&
> > + git format-patch -o patches --cover-letter -v4.4 main..side >list &&
> > + ! grep -v "^patches/v4.4-000[0-3]-" list &&
> > + sed -n -e "/^Subject: /p" $(cat list) >subjects &&
> > + ! grep -v "^Subject: \[PATCH v4.4 [0-3]/3\] " subjects
> > +'
> > +
> > +test_expect_success 'reroll (-v) count with a non number' '
> > + rm -fr patches &&
> > + git format-patch -o patches --cover-letter -v4rev2 main..side >list &&
> > + ! grep -v "^patches/v4rev2-000[0-3]-" list &&
> > + sed -n -e "/^Subject: /p" $(cat list) >subjects &&
> > + ! grep -v "^Subject: \[PATCH v4rev2 [0-3]/3\] " subjects
> > +'
>
> ... are repeated here with the only difference being `--reroll-count`
> versus `-v`. Since other tests have already established that
> `--reroll-count` and `-v` are identical, it's not really necessary to
> do that work again with these duplicate tests.
>
Makes sense.
> > +test_expect_success 'reroll (-v) count with a "injection (1)"' '
> > + rm -fr patches &&
> > + git format-patch -o patches --cover-letter -v4..././../1/.2// main..side >list &&
> > + ! grep -v "^patches/v4.-.-.-1-.2-000[0-3]-" list &&
> > + sed -n -e "/^Subject: /p" $(cat list) >subjects &&
> > + ! grep -v "^Subject: \[PATCH v4..././../1/.2// [0-3]/3\] " subjects
> > +'
>
> A couple comments:
>
> The test title might be easier for other people to understand if it
> says "non-pathname character" or "non filename character" rather than
> "injection".
>
> Note that the `grep -v` is casting a wider net than it seems at first
> glance. The `.` matches any character, not just a period ".". To
> tighten the matching and make `.` match just a ".", you can use `grep
> -vF`.
>
Yes, `grep -vF` is very important for the correctness of the test.
> > +test_expect_success 'reroll (-v) count with a "injection (2)"' '
> > + rm -fr patches &&
> > + git format-patch -o patches --cover-letter -v4-----//1//--.-- main..side >list &&
> > + ! grep -v "^patches/v4-1-000[0-3]-" list &&
> > + sed -n -e "/^Subject: /p" $(cat list) >subjects &&
> > + ! grep -v "^Subject: \[PATCH v4-----//1//--.-- [0-3]/3\] " subjects
> > +'
>
> Presumably the coverage of format_sanitized_subject() is already being
> tested elsewhere, so it's not clear that this second "injection" test
> adds any value over the first test. Moreover, this second test can
> confuse readers into thinking that it is testing something that the
> first test didn't cover, but that isn't the case (as far as I can
> tell).
The second test I just want to test character `-`, but now I think it can
merge to first test.
Thanks.
next prev parent reply other threads:[~2021-03-23 8:55 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-25 16:15 [PATCH] format-patch: allow a non-integral version numbers ZheNing Hu via GitGitGadget
2021-02-25 17:56 ` Eric Sunshine
2021-02-27 7:00 ` ZheNing Hu
2021-02-25 18:13 ` Junio C Hamano
2021-02-27 7:30 ` ZheNing Hu
2021-03-17 11:46 ` Đoàn Trần Công Danh
2021-03-17 19:17 ` Junio C Hamano
2021-03-01 8:40 ` [PATCH v2] " ZheNing Hu via GitGitGadget
2021-03-03 3:44 ` Junio C Hamano
2021-03-03 9:02 ` Denton Liu
2021-03-04 0:54 ` Junio C Hamano
2021-03-04 2:08 ` ZheNing Hu
2021-03-04 3:27 ` Eric Sunshine
2021-03-04 8:41 ` Denton Liu
2021-03-04 12:12 ` [PATCH v3] " ZheNing Hu via GitGitGadget
2021-03-04 12:49 ` Denton Liu
2021-03-05 4:56 ` ZheNing Hu
2021-03-05 7:10 ` [PATCH v4] " ZheNing Hu via GitGitGadget
2021-03-15 23:41 ` Eric Sunshine
2021-03-16 5:48 ` ZheNing Hu
2021-03-16 6:15 ` Eric Sunshine
2021-03-17 17:27 ` Junio C Hamano
2021-03-16 8:25 ` [PATCH v5] " ZheNing Hu via GitGitGadget
2021-03-16 23:36 ` Eric Sunshine
2021-03-17 2:05 ` ZheNing Hu
2021-03-18 6:00 ` [PATCH v6] " ZheNing Hu via GitGitGadget
2021-03-19 6:00 ` Eric Sunshine
2021-03-19 7:25 ` ZheNing Hu
2021-03-19 11:21 ` [PATCH v7] " ZheNing Hu via GitGitGadget
2021-03-19 16:01 ` Junio C Hamano
2021-03-20 3:08 ` ZheNing Hu
2021-03-19 17:28 ` Junio C Hamano
2021-03-20 3:04 ` ZheNing Hu
2021-03-20 14:56 ` [PATCH v8] " ZheNing Hu via GitGitGadget
2021-03-20 19:55 ` Junio C Hamano
2021-03-21 2:45 ` ZheNing Hu
2021-03-21 4:05 ` Eric Sunshine
2021-03-21 5:45 ` Junio C Hamano
2021-03-21 5:54 ` Eric Sunshine
2021-03-24 8:46 ` Denton Liu
2021-03-21 7:22 ` ZheNing Hu
2021-03-21 9:00 ` [PATCH v9] " ZheNing Hu via GitGitGadget
2021-03-23 5:31 ` Eric Sunshine
2021-03-23 6:42 ` Junio C Hamano
2021-03-23 8:53 ` ZheNing Hu [this message]
2021-03-23 9:16 ` ZheNing Hu
2021-03-23 11:12 ` [PATCH v10] " ZheNing Hu via GitGitGadget
2021-03-24 3:58 ` Eric Sunshine
2021-03-24 4:43 ` ZheNing Hu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAOLTT8QrqDFj+ZGFRqDWDixj6hvdsF8OqYsac5J9WP2Yc+zXRQ@mail.gmail.com \
--to=adlternative@gmail.com \
--cc=congdanhqx@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=gitster@pobox.com \
--cc=liu.denton@gmail.com \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).