From: Phillip Wood <phillip.wood123@gmail•com>
To: Lucas Seiki Oshiro <lucasseikioshiro@gmail•com>, git@vger•kernel.org
Cc: ps@pks•im, karthik.188@gmail•com, ben.knoble@gmail•com,
gitster@pobox•com
Subject: Re: [GSoC RFC PATCH v2 5/7] repo-info: add the field references.format
Date: Tue, 24 Jun 2025 15:03:01 +0100 [thread overview]
Message-ID: <254e4819-a693-4fb7-aa92-260038cbfbe2@gmail.com> (raw)
In-Reply-To: <20250619225751.99699-6-lucasseikioshiro@gmail.com>
Hi Lucas
On 19/06/2025 23:57, Lucas Seiki Oshiro wrote:
> Add the field references.format to the repo-info command. The data
> retrieved in this field is the same that currently is obtained by
> running `git rev-parse --show-ref-format`.
>
> Mentored-by: Karthik Nayak <karthik.188@gmail•com>
> Mentored-by Patrick Steinhardt <ps@pks•im>
> Signed-off-by: Lucas Seiki Oshiro <lucasseikioshiro@gmail•com>
I've concentrated my comments on the tests as others have commented on
the code itself. In general test bodies should be wrapped in single
quotes rather than double quotes and one should prefer test_cmp() over
test_line_count().
> +# Test if a field is correctly returned in both plaintext and json formats.
> +#
> +# Usage: test_repo_info <label> <init command> <key> <expected value>
> +#
> +# Arguments:
> +# label: the label of the test
> +# init command: a command that creates a repository called 'repo', configured
> +# accordingly to what is being tested
> +# key: the key of the field that is being tested
> +# expected value: the value that the field should contain
> +test_repo_info () {
> + label=$1
> + init_command=$2
> + key=$3
> + expected_value=$4
> +
> + test_expect_success PERLJSON "json: $label" "
This double quote should be a single quote. Unlike the test test title,
the body is passed to eval so there is no need to use double quotes to
expand shell variables. Indeed doing so is counter productive as it
means we pass the result of the variable expansion to eval rather that
the variable name.
> + test_when_finished 'rm -rf repo' &&
> + '$SHELL_PATH' -c '$init_command' &&
There is no need to fork a separate shell process here, you can use
eval "$init_command"
instead.
> + cd repo &&
If you change directory in a test then you must do so in a subshell so
that we return to the original directory when the test finishes. In this
case you're only running a single command in repo so you can use
git -C repo repo-info ...
instead and avoid using "cd" all together.
> + echo '$expected_value' >expect &&
> + git repo-info '$key' >output &&
> + cat output | parse_json >parsed &&
> + grep -F 'row[0].$key' parsed | cut -d ' ' -f 2 >value &&
> + cat value | sed 's/^0$/false/' | sed 's/^1$/true/' >actual &&
sed accepts filenames so there is no need to use "cat" here. It also
accepts multiple expressions so you only need a single command
sed "s/^0\$/false/; s/^1\$/true/" value >actual &&
> + test_cmp expect actual
> + "
Putting all of the above together the test looks like
test_expect_success PERLJSON "json: $label" '
test_when_finished "rm -rf repo" &&
eval "$init_command" &&
echo "$expected_value" >expect &&
git -C repo repo-info "$key" >output &&
cat output | parse_json >parsed &&
grep -F "row[0].$key" parsed | cut -d " " -f 2 >value &&
sed "s/^0\$/false/; s/^1\$/true/" value >actual &&
test_cmp expect actual
'
> + test_expect_success "plaintext: $label" "
> + test_when_finished 'rm -rf repo' &&
> + '$SHELL_PATH' -c '$init_command' &&
> + cd repo &&
> + echo '$expected_value' >expect &&
> + git repo-info --format=plaintext '$key' >output &&
> + cat output | cut -d '=' -f 2 >actual &&
> + test_cmp expect actual
> + "
My comments above apply here as well.
> [...]
> +test_expect_success 'plaintext: output all default fields' "
The body should be single quoted as it is eval'd
> + git repo-info --format=plaintext >actual &&
> + test_line_count = $DEFAULT_NUMBER_OF_FIELDS actual
test_line_count is a pretty weak assertion. It would be better to use
test_cmp()
git repo-info --format=plaintext >actual &&
sort actual >actual.sorted &&
cat >expect <<-\EOF &&
<EXPECTED OUTPUT>
EOF
test_cmp expect actual.sorted
> +"
> +
> +test_expect_success PERLJSON 'json: output all default fields' "
> + git repo-info --format=json > output &&
> + cat output | parse_json | grep '.*\..*\..*' >actual &&
You do not need to use "cat" here as you can redirect the standard input
when you run parse_json.
parse_json <output | grep ...
> + test_line_count = $DEFAULT_NUMBER_OF_FIELDS actual
This is an even weaker assertion as the number of lines in a json file
is not related to its content. Ideally we should normalize the json
output into a standard format and use test_cmp. I don't know how
practical that is.
Best Wishes
Phillip
next prev parent reply other threads:[~2025-06-24 14:03 UTC|newest]
Thread overview: 226+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-10 15:21 [GSoC RFC PATCH 0/5] repo-info: add new command for retrieving repository info Lucas Seiki Oshiro
2025-06-10 15:21 ` [GSoC RFC PATCH 1/5] repo-info: declare the repo-info command Lucas Seiki Oshiro
2025-06-11 8:59 ` Karthik Nayak
2025-06-10 15:21 ` [GSoC RFC PATCH 2/5] repo-info: add the --format flag Lucas Seiki Oshiro
2025-06-11 9:30 ` Karthik Nayak
2025-06-12 17:56 ` Lucas Seiki Oshiro
2025-06-13 7:31 ` Karthik Nayak
2025-06-10 15:21 ` [GSoC RFC PATCH 3/5] repo-info: add the field references.format Lucas Seiki Oshiro
2025-06-11 12:59 ` Karthik Nayak
2025-06-12 15:01 ` Junio C Hamano
2025-06-10 15:21 ` [GSoC RFC PATCH 4/5] repo-info: add field layout.bare Lucas Seiki Oshiro
2025-06-11 13:13 ` Karthik Nayak
2025-06-12 19:39 ` Lucas Seiki Oshiro
2025-06-12 19:53 ` Junio C Hamano
2025-06-10 15:21 ` [GSoC RFC PATCH 5/5] repo-info: add field layout.shallow Lucas Seiki Oshiro
2025-06-10 16:39 ` [GSoC RFC PATCH 0/5] repo-info: add new command for retrieving repository info Kristoffer Haugsbakk
2025-06-10 16:40 ` Junio C Hamano
2025-06-12 20:25 ` Lucas Seiki Oshiro
2025-06-12 21:01 ` Junio C Hamano
2025-06-16 22:19 ` Lucas Seiki Oshiro
2025-06-16 22:40 ` Junio C Hamano
2025-06-19 1:44 ` Lucas Seiki Oshiro
2025-06-11 13:17 ` Karthik Nayak
2025-06-19 22:57 ` [GSoC RFC PATCH v2 0/7] " Lucas Seiki Oshiro
2025-06-19 22:57 ` [GSoC RFC PATCH v2 1/7] repo-info: declare the repo-info command Lucas Seiki Oshiro
2025-06-20 7:36 ` Karthik Nayak
2025-06-20 23:55 ` Junio C Hamano
2025-06-23 9:19 ` Karthik Nayak
2025-06-23 19:04 ` Lucas Seiki Oshiro
2025-06-20 7:56 ` Karthik Nayak
2025-06-24 14:03 ` Phillip Wood
2025-07-03 11:31 ` Patrick Steinhardt
2025-07-04 21:40 ` Lucas Seiki Oshiro
2025-07-07 6:01 ` Patrick Steinhardt
2025-07-09 20:05 ` Justin Tobler
2025-06-19 22:57 ` [GSoC RFC PATCH v2 2/7] repo-info: add the --format flag Lucas Seiki Oshiro
2025-06-20 8:06 ` Karthik Nayak
2025-06-20 21:31 ` Junio C Hamano
2025-07-03 11:31 ` Patrick Steinhardt
2025-06-19 22:57 ` [GSoC RFC PATCH v2 3/7] repo-info: add plaintext as an output format Lucas Seiki Oshiro
2025-06-20 21:37 ` Junio C Hamano
2025-07-03 11:32 ` Patrick Steinhardt
2025-06-19 22:57 ` [GSoC RFC PATCH v2 4/7] repo-info: add the --allow-empty flag Lucas Seiki Oshiro
2025-06-20 9:54 ` Karthik Nayak
2025-06-23 2:39 ` Lucas Seiki Oshiro
2025-06-20 21:39 ` Junio C Hamano
2025-06-23 9:26 ` Karthik Nayak
2025-06-23 20:28 ` Lucas Seiki Oshiro
2025-06-19 22:57 ` [GSoC RFC PATCH v2 5/7] repo-info: add the field references.format Lucas Seiki Oshiro
2025-06-20 22:26 ` Junio C Hamano
2025-06-24 14:03 ` Phillip Wood [this message]
2025-06-24 15:25 ` Junio C Hamano
2025-06-25 8:40 ` Phillip Wood
2025-07-03 11:32 ` Patrick Steinhardt
2025-07-04 21:11 ` Lucas Seiki Oshiro
2025-06-19 22:57 ` [GSoC RFC PATCH v2 6/7] repo-info: add field layout.bare Lucas Seiki Oshiro
2025-07-03 11:32 ` Patrick Steinhardt
2025-07-03 14:14 ` Lucas Seiki Oshiro
2025-07-04 8:32 ` Phillip Wood
2025-06-19 22:57 ` [GSoC RFC PATCH v2 7/7] repo-info: add field layout.shallow Lucas Seiki Oshiro
2025-06-23 13:42 ` [GSoC RFC PATCH v2 0/7] repo-info: add new command for retrieving repository info Phillip Wood
2025-06-23 18:49 ` Lucas Seiki Oshiro
2025-06-24 13:03 ` Phillip Wood
2025-06-24 13:43 ` Junio C Hamano
2025-07-01 22:18 ` Lucas Seiki Oshiro
2025-07-02 9:10 ` phillip.wood123
2025-07-06 23:19 ` [GSoC RFC PATCH v3 0/5] " Lucas Seiki Oshiro
2025-07-06 23:19 ` [GSoC RFC PATCH v3 1/5] repo-info: declare the repo-info command Lucas Seiki Oshiro
2025-07-06 23:19 ` [GSoC RFC PATCH v3 2/5] repo-info: add the --format flag Lucas Seiki Oshiro
2025-07-06 23:19 ` [GSoC RFC PATCH v3 3/5] repo-info: add the field references.format Lucas Seiki Oshiro
2025-07-06 23:19 ` [GSoC RFC PATCH v3 4/5] repo-info: add field layout.bare Lucas Seiki Oshiro
2025-07-06 23:19 ` [GSoC RFC PATCH v3 5/5] repo-info: add field layout.shallow Lucas Seiki Oshiro
2025-07-08 10:11 ` [GSoC RFC PATCH v3 0/5] repo-info: add new command for retrieving repository info Phillip Wood
2025-07-08 19:27 ` Lucas Seiki Oshiro
2025-07-10 13:15 ` Phillip Wood
2025-07-11 17:13 ` Lucas Seiki Oshiro
2025-07-11 17:37 ` Justin Tobler
2025-07-14 23:52 ` [GSoC RFC PATCH v4 0/4] repo: " Lucas Seiki Oshiro
2025-07-14 23:52 ` [GSoC RFC PATCH v4 1/4] repo: declare the repo command Lucas Seiki Oshiro
2025-07-15 11:52 ` Karthik Nayak
2025-07-15 11:59 ` Patrick Steinhardt
2025-07-15 18:38 ` Justin Tobler
2025-07-20 19:51 ` Lucas Seiki Oshiro
2025-07-15 18:19 ` Justin Tobler
2025-07-14 23:52 ` [GSoC RFC PATCH v4 2/4] repo: add the field references.format Lucas Seiki Oshiro
2025-07-15 11:59 ` Patrick Steinhardt
2025-07-18 19:13 ` Lucas Seiki Oshiro
2025-07-15 12:23 ` Karthik Nayak
2025-07-15 19:15 ` Justin Tobler
2025-07-16 5:38 ` Patrick Steinhardt
2025-07-16 14:04 ` Justin Tobler
2025-07-17 13:03 ` Patrick Steinhardt
2025-07-17 16:06 ` Justin Tobler
2025-07-18 20:26 ` Lucas Seiki Oshiro
2025-07-21 14:41 ` Justin Tobler
2025-07-14 23:52 ` [GSoC RFC PATCH v4 3/4] repo: add field layout.bare Lucas Seiki Oshiro
2025-07-14 23:52 ` [GSoC RFC PATCH v4 4/4] repo: add field layout.shallow Lucas Seiki Oshiro
2025-07-15 10:34 ` [GSoC RFC PATCH v4 0/4] repo: add new command for retrieving repository info Oswald Buddenhagen
2025-07-15 11:58 ` Patrick Steinhardt
2025-07-15 12:20 ` Oswald Buddenhagen
2025-07-15 19:36 ` Justin Tobler
2025-07-15 16:49 ` Junio C Hamano
2025-07-17 10:25 ` Oswald Buddenhagen
2025-07-17 10:42 ` Patrick Steinhardt
2025-07-16 20:20 ` Junio C Hamano
2025-07-16 20:33 ` Junio C Hamano
2025-07-21 22:05 ` Lucas Seiki Oshiro
2025-07-22 0:28 ` [GSoC PATCH v5 0/5] " Lucas Seiki Oshiro
2025-07-22 0:28 ` [GSoC PATCH v5 1/5] repo: declare the repo command Lucas Seiki Oshiro
2025-07-22 9:03 ` Karthik Nayak
2025-07-22 15:21 ` Junio C Hamano
2025-07-23 16:28 ` Lucas Seiki Oshiro
2025-07-23 17:48 ` Junio C Hamano
2025-07-24 6:22 ` Patrick Steinhardt
2025-07-24 16:06 ` Junio C Hamano
2025-07-25 5:10 ` Patrick Steinhardt
2025-07-26 21:54 ` Lucas Seiki Oshiro
2025-07-28 17:56 ` Junio C Hamano
2025-07-23 15:49 ` Lucas Seiki Oshiro
2025-07-23 20:03 ` Jean-Noël AVILA
2025-07-22 0:28 ` [GSoC PATCH v5 2/5] repo: add the field references.format Lucas Seiki Oshiro
2025-07-22 9:16 ` Karthik Nayak
2025-07-22 19:25 ` Justin Tobler
2025-07-23 14:53 ` Phillip Wood
2025-07-23 17:44 ` Lucas Seiki Oshiro
2025-07-23 18:26 ` Lucas Seiki Oshiro
2025-07-24 6:22 ` Patrick Steinhardt
2025-07-22 0:28 ` [GSoC PATCH v5 3/5] repo: add field layout.bare Lucas Seiki Oshiro
2025-07-22 0:28 ` [GSoC PATCH v5 4/5] repo: add field layout.shallow Lucas Seiki Oshiro
2025-07-22 0:28 ` [GSoC PATCH v5 5/5] repo: add the --format flag Lucas Seiki Oshiro
2025-07-22 9:26 ` Karthik Nayak
2025-07-24 6:22 ` Patrick Steinhardt
2025-07-27 17:51 ` [GSoC PATCH v5 0/5] repo: add new command for retrieving repository info Lucas Seiki Oshiro
2025-07-27 17:51 ` [GSoC PATCH v5 1/5] repo: declare the repo command Lucas Seiki Oshiro
2025-07-27 20:20 ` Eric Sunshine
2025-07-27 17:51 ` [GSoC PATCH v5 2/5] repo: add the field references.format Lucas Seiki Oshiro
2025-07-27 21:16 ` Eric Sunshine
2025-07-31 19:39 ` Lucas Seiki Oshiro
2025-07-29 9:35 ` Patrick Steinhardt
2025-07-31 19:49 ` Lucas Seiki Oshiro
2025-07-27 17:51 ` [GSoC PATCH v5 3/5] repo: add field layout.bare Lucas Seiki Oshiro
2025-07-27 17:51 ` [GSoC PATCH v5 4/5] repo: add field layout.shallow Lucas Seiki Oshiro
2025-07-27 21:45 ` Eric Sunshine
2025-07-27 17:51 ` [GSoC PATCH v5 5/5] repo: add the --format flag Lucas Seiki Oshiro
2025-07-27 22:02 ` Eric Sunshine
2025-07-29 0:15 ` Ben Knoble
2025-07-29 0:27 ` Eric Sunshine
2025-07-29 0:38 ` Ben Knoble
2025-07-29 0:39 ` Eric Sunshine
2025-07-31 23:01 ` Lucas Seiki Oshiro
2025-07-31 23:15 ` Lucas Seiki Oshiro
2025-07-27 20:11 ` [GSoC PATCH v5 0/5] repo: add new command for retrieving repository info Eric Sunshine
2025-07-29 9:35 ` Patrick Steinhardt
2025-07-30 15:26 ` Lucas Seiki Oshiro
2025-08-01 13:11 ` [GSoC PATCH v7 " Lucas Seiki Oshiro
2025-08-01 13:11 ` [GSoC PATCH v7 1/5] repo: declare the repo command Lucas Seiki Oshiro
2025-08-01 13:11 ` [GSoC PATCH v7 2/5] repo: add the field references.format Lucas Seiki Oshiro
2025-08-01 20:59 ` Eric Sunshine
2025-08-03 21:47 ` Lucas Seiki Oshiro
2025-08-01 13:11 ` [GSoC PATCH v7 3/5] repo: add the field layout.bare Lucas Seiki Oshiro
2025-08-01 21:21 ` Eric Sunshine
2025-08-03 22:54 ` Lucas Seiki Oshiro
2025-08-03 23:06 ` Eric Sunshine
2025-08-05 12:50 ` Patrick Steinhardt
2025-08-01 13:11 ` [GSoC PATCH v7 4/5] repo: add the field layout.shallow Lucas Seiki Oshiro
2025-08-05 12:50 ` Patrick Steinhardt
2025-08-01 13:11 ` [GSoC PATCH v7 5/5] repo: add the --format flag Lucas Seiki Oshiro
2025-08-01 19:25 ` Junio C Hamano
2025-08-01 20:27 ` Jean-Noël AVILA
2025-08-01 21:50 ` Eric Sunshine
2025-08-05 12:50 ` Patrick Steinhardt
2025-08-05 12:50 ` [GSoC PATCH v7 0/5] repo: add new command for retrieving repository info Patrick Steinhardt
2025-08-06 19:55 ` [GSoC PATCH v8 " Lucas Seiki Oshiro
2025-08-06 19:55 ` [GSoC PATCH v8 1/5] repo: declare the repo command Lucas Seiki Oshiro
2025-08-06 19:55 ` [GSoC PATCH v8 2/5] repo: add the field references.format Lucas Seiki Oshiro
2025-08-07 7:43 ` Karthik Nayak
2025-08-06 19:55 ` [GSoC PATCH v8 3/5] repo: add the field layout.bare Lucas Seiki Oshiro
2025-08-07 5:20 ` Patrick Steinhardt
2025-08-06 19:55 ` [GSoC PATCH v8 4/5] repo: add the field layout.shallow Lucas Seiki Oshiro
2025-08-06 19:55 ` [GSoC PATCH v8 5/5] repo: add the --format flag Lucas Seiki Oshiro
2025-08-07 5:20 ` Patrick Steinhardt
2025-08-07 15:44 ` Junio C Hamano
2025-08-06 22:38 ` [GSoC PATCH v8 0/5] repo: add new command for retrieving repository info Junio C Hamano
2025-08-07 7:48 ` Karthik Nayak
2025-08-07 15:02 ` [GSoC PATCH v9 " Lucas Seiki Oshiro
2025-08-07 15:02 ` [GSoC PATCH v9 1/5] repo: declare the repo command Lucas Seiki Oshiro
2025-08-07 15:02 ` [GSoC PATCH v9 2/5] repo: add the field references.format Lucas Seiki Oshiro
2025-08-11 5:12 ` Eric Sunshine
2025-08-11 14:41 ` Phillip Wood
2025-08-11 15:44 ` Junio C Hamano
2025-08-13 21:18 ` Lucas Seiki Oshiro
2025-08-13 21:46 ` Eric Sunshine
2025-08-13 22:24 ` Lucas Seiki Oshiro
2025-08-14 13:58 ` Phillip Wood
2025-08-07 15:02 ` [GSoC PATCH v9 3/5] repo: add the field layout.bare Lucas Seiki Oshiro
2025-08-11 5:21 ` Eric Sunshine
2025-08-14 18:22 ` Lucas Seiki Oshiro
2025-08-14 18:32 ` Eric Sunshine
2025-08-14 18:51 ` Junio C Hamano
2025-08-14 22:05 ` Eric Sunshine
2025-08-15 1:20 ` Junio C Hamano
2025-08-14 22:18 ` Lucas Seiki Oshiro
2025-08-14 23:41 ` Eric Sunshine
2025-08-07 15:02 ` [GSoC PATCH v9 4/5] repo: add the field layout.shallow Lucas Seiki Oshiro
2025-08-07 15:02 ` [GSoC PATCH v9 5/5] repo: add the --format flag Lucas Seiki Oshiro
2025-08-11 5:44 ` Eric Sunshine
2025-08-08 5:45 ` [GSoC PATCH v9 0/5] repo: add new command for retrieving repository info Patrick Steinhardt
2025-08-08 15:02 ` Junio C Hamano
2025-08-08 9:20 ` Karthik Nayak
2025-08-15 13:55 ` [GSoC PATCH v10 0/5] repo: declare the repo command Lucas Seiki Oshiro
2025-08-15 13:55 ` [GSoC PATCH v10 1/5] " Lucas Seiki Oshiro
2025-08-15 13:55 ` [GSoC PATCH v10 2/5] repo: add the field references.format Lucas Seiki Oshiro
2025-08-15 18:40 ` Junio C Hamano
2025-08-15 19:12 ` Lucas Seiki Oshiro
2025-08-15 13:55 ` [GSoC PATCH v10 3/5] repo: add the field layout.bare Lucas Seiki Oshiro
2025-08-15 13:55 ` [GSoC PATCH v10 4/5] repo: add the field layout.shallow Lucas Seiki Oshiro
2025-08-15 19:36 ` Junio C Hamano
2025-08-15 13:55 ` [GSoC PATCH v10 5/5] repo: add the --format flag Lucas Seiki Oshiro
2025-08-15 19:23 ` Junio C Hamano
2025-08-16 22:45 ` [GSoC PATCH v11 0/5] repo: declare the repo command Lucas Seiki Oshiro
2025-08-16 22:45 ` [GSoC PATCH v11 1/5] " Lucas Seiki Oshiro
2025-08-16 22:46 ` [GSoC PATCH v11 2/5] repo: add the field references.format Lucas Seiki Oshiro
2025-08-16 22:46 ` [GSoC PATCH v11 3/5] repo: add the field layout.bare Lucas Seiki Oshiro
2025-08-16 22:46 ` [GSoC PATCH v11 4/5] repo: add the field layout.shallow Lucas Seiki Oshiro
2025-08-16 22:46 ` [GSoC PATCH v11 5/5] repo: add the --format flag Lucas Seiki Oshiro
2025-08-17 16:21 ` [GSoC PATCH v11 0/5] repo: declare the repo command Junio C Hamano
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=254e4819-a693-4fb7-aa92-260038cbfbe2@gmail.com \
--to=phillip.wood123@gmail$(echo .)com \
--cc=ben.knoble@gmail$(echo .)com \
--cc=git@vger$(echo .)kernel.org \
--cc=gitster@pobox$(echo .)com \
--cc=karthik.188@gmail$(echo .)com \
--cc=lucasseikioshiro@gmail$(echo .)com \
--cc=phillip.wood@dunelm$(echo .)org.uk \
--cc=ps@pks$(echo .)im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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