diff mbox series

[v2,1/2] t5537: use test_write_lines, indented heredocs for readability

Message ID 5c9217ad8fc594fbff46507c4be7961eb5a478e2.1587601501.git.me@ttaylorr.com (mailing list archive)
State New, archived
Headers show
Series shallow.c: reset shallow-ness after updating | expand

Commit Message

Taylor Blau April 23, 2020, 12:25 a.m. UTC
A number of spots in t5537 use the non-indented heredoc '<<EOF' when
they would benefit from instead using '<<-EOF' or simply
test_write_lines.

In preparation for adding new tests in a good style and being consistent
with the surrounding code, update the existing tests to improve their
readability.

Suggested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
---
 t/t5537-fetch-shallow.sh | 70 +++++++++++-----------------------------
 1 file changed, 18 insertions(+), 52 deletions(-)

Comments

Jonathan Nieder April 23, 2020, 1:14 a.m. UTC | #1
Hi,

Taylor Blau wrote:

> A number of spots in t5537 use the non-indented heredoc '<<EOF' when
> they would benefit from instead using '<<-EOF' or simply
> test_write_lines.
>
> In preparation for adding new tests in a good style and being consistent
> with the surrounding code, update the existing tests to improve their
> readability.
>
> Suggested-by: Junio C Hamano <gitster@pobox.com>
> Signed-off-by: Taylor Blau <me@ttaylorr.com>
> ---
>  t/t5537-fetch-shallow.sh | 70 +++++++++++-----------------------------
>  1 file changed, 18 insertions(+), 52 deletions(-)

Sounds like a good idea.  Some nitpicks --- please don't act on them
all, but only the ones that seem appropriate to you:

[...]
> +++ b/t/t5537-fetch-shallow.sh
> @@ -25,10 +25,7 @@ test_expect_success 'setup' '
>  test_expect_success 'setup shallow clone' '
>  	git clone --no-local --depth=2 .git shallow &&
>  	git --git-dir=shallow/.git log --format=%s >actual &&
> -	cat <<EOF >expect &&
> -4
> -3
> -EOF
> +	test_write_lines 4 3 >expect &&
>  	test_cmp expect actual
>  '

Nice.

[...]
> @@ -133,14 +110,12 @@ test_expect_success 'fetch that requires changes in .git/shallow is filtered' '
[...]
> -	cat <<EOF >expect &&
> -no-shallow
> -EOF
> +	cat <<-EOF >expect &&
> +	no-shallow
> +	EOF

Can this use "echo"?  Or if using cat, please quote the EOF in <<-EOF
so the reader doesn't have to check for $substitutions in the body:

		cat >expect <<-\EOF &&

[...]
> @@ -158,21 +133,15 @@ test_expect_success 'fetch --update-shallow' '
>  	git fetch --update-shallow ../shallow/.git refs/heads/*:refs/remotes/shallow/* &&
>  	git fsck &&
>  	git for-each-ref --sort=refname --format="%(refname)" >actual.refs &&
> -	cat <<EOF >expect.refs &&
> -refs/remotes/shallow/master
> -refs/remotes/shallow/no-shallow
> -refs/tags/heavy-tag
> -refs/tags/light-tag
> -EOF
> +	cat <<-EOF >expect.refs &&

Likewise (missing \ before EOF).

A few more nits, that probably don't belong in the same patch:

- the code in subshells would be more readable if indented
- existing <<-EOF here blocks should \quote the EOF
- the resulting history would be more realistic if it uses test_tick
  before running "git commit".  Or perhaps this can use the
  test_commit helper to handle that
- should use test_must_fail in preference to ! git
- might be simpler if http tests go in a different file

Thanks,
Jonathan
Taylor Blau April 24, 2020, 5:11 p.m. UTC | #2
On Wed, Apr 22, 2020 at 06:14:44PM -0700, Jonathan Nieder wrote:
> Hi,
>
> Taylor Blau wrote:
>
> > A number of spots in t5537 use the non-indented heredoc '<<EOF' when
> > they would benefit from instead using '<<-EOF' or simply
> > test_write_lines.
> >
> > In preparation for adding new tests in a good style and being consistent
> > with the surrounding code, update the existing tests to improve their
> > readability.
> >
> > Suggested-by: Junio C Hamano <gitster@pobox.com>
> > Signed-off-by: Taylor Blau <me@ttaylorr.com>
> > ---
> >  t/t5537-fetch-shallow.sh | 70 +++++++++++-----------------------------
> >  1 file changed, 18 insertions(+), 52 deletions(-)
>
> Sounds like a good idea.  Some nitpicks --- please don't act on them
> all, but only the ones that seem appropriate to you:

Thanks -- here's an updated venison of this patch with some of the more
minor points addressed. I agree that there is room for cleaning up these
tests more substantially, but I think that those can be done in other
patches.

Junio -- would you please used the patch below as PATCH 1/2 instead of
the original here? Thanks.

-- 8< --

Subject: [PATCH] t5537: use test_write_lines, indented heredocs for readability

A number of spots in t5537 use the non-indented heredoc '<<EOF' when
they would benefit from instead using '<<-EOF' or simply
test_write_lines.

In preparation for adding new tests in a good style and being consistent
with the surrounding code, update the existing tests to improve their
readability.

Suggested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
---
 t/t5537-fetch-shallow.sh | 70 ++++++++++------------------------------
 1 file changed, 17 insertions(+), 53 deletions(-)

diff --git a/t/t5537-fetch-shallow.sh b/t/t5537-fetch-shallow.sh
index 4f681dbbe1..d02f9b5ae8 100755
--- a/t/t5537-fetch-shallow.sh
+++ b/t/t5537-fetch-shallow.sh
@@ -16,7 +16,7 @@ test_expect_success 'setup' '
 	commit 3 &&
 	commit 4 &&
 	git config --global transfer.fsckObjects true &&
-	test_oid_cache <<-EOF
+	test_oid_cache <<-\EOF
 	perl sha1:s/0034shallow %s/0036unshallow %s/
 	perl sha256:s/004cshallow %s/004eunshallow %s/
 	EOF
@@ -25,10 +25,7 @@ test_expect_success 'setup' '
 test_expect_success 'setup shallow clone' '
 	git clone --no-local --depth=2 .git shallow &&
 	git --git-dir=shallow/.git log --format=%s >actual &&
-	cat <<EOF >expect &&
-4
-3
-EOF
+	test_write_lines 4 3 >expect &&
 	test_cmp expect actual
 '

@@ -38,10 +35,7 @@ test_expect_success 'clone from shallow clone' '
 	cd shallow2 &&
 	git fsck &&
 	git log --format=%s >actual &&
-	cat <<EOF >expect &&
-4
-3
-EOF
+	test_write_lines 4 3 >expect &&
 	test_cmp expect actual
 	)
 '
@@ -56,11 +50,7 @@ test_expect_success 'fetch from shallow clone' '
 	git fetch &&
 	git fsck &&
 	git log --format=%s origin/master >actual &&
-	cat <<EOF >expect &&
-5
-4
-3
-EOF
+	test_write_lines 5 4 3 >expect &&
 	test_cmp expect actual
 	)
 '
@@ -75,10 +65,7 @@ test_expect_success 'fetch --depth from shallow clone' '
 	git fetch --depth=2 &&
 	git fsck &&
 	git log --format=%s origin/master >actual &&
-	cat <<EOF >expect &&
-6
-5
-EOF
+	test_write_lines 6 5 >expect &&
 	test_cmp expect actual
 	)
 '
@@ -89,12 +76,7 @@ test_expect_success 'fetch --unshallow from shallow clone' '
 	git fetch --unshallow &&
 	git fsck &&
 	git log --format=%s origin/master >actual &&
-	cat <<EOF >expect &&
-6
-5
-4
-3
-EOF
+	test_write_lines 6 5 4 3 >expect &&
 	test_cmp expect actual
 	)
 '
@@ -111,15 +93,10 @@ test_expect_success 'fetch something upstream has but hidden by clients shallow
 	git fetch ../.git +refs/heads/master:refs/remotes/top/master &&
 	git fsck &&
 	git log --format=%s top/master >actual &&
-	cat <<EOF >expect &&
-add-1-back
-4
-3
-EOF
+	test_write_lines add-1-back 4 3 >expect &&
 	test_cmp expect actual
 	) &&
 	git --git-dir=shallow2/.git cat-file blob $(echo 1|git hash-object --stdin) >/dev/null
-
 '

 test_expect_success 'fetch that requires changes in .git/shallow is filtered' '
@@ -133,14 +110,10 @@ test_expect_success 'fetch that requires changes in .git/shallow is filtered' '
 	cd notshallow &&
 	git fetch ../shallow/.git refs/heads/*:refs/remotes/shallow/*&&
 	git for-each-ref --format="%(refname)" >actual.refs &&
-	cat <<EOF >expect.refs &&
-refs/remotes/shallow/no-shallow
-EOF
+	echo refs/remotes/shallow/no-shallow >expect.refs &&
 	test_cmp expect.refs actual.refs &&
 	git log --format=%s shallow/no-shallow >actual &&
-	cat <<EOF >expect &&
-no-shallow
-EOF
+	echo no-shallow >expect &&
 	test_cmp expect actual
 	)
 '
@@ -158,21 +131,15 @@ test_expect_success 'fetch --update-shallow' '
 	git fetch --update-shallow ../shallow/.git refs/heads/*:refs/remotes/shallow/* &&
 	git fsck &&
 	git for-each-ref --sort=refname --format="%(refname)" >actual.refs &&
-	cat <<EOF >expect.refs &&
-refs/remotes/shallow/master
-refs/remotes/shallow/no-shallow
-refs/tags/heavy-tag
-refs/tags/light-tag
-EOF
+	cat <<-\EOF >expect.refs &&
+	refs/remotes/shallow/master
+	refs/remotes/shallow/no-shallow
+	refs/tags/heavy-tag
+	refs/tags/light-tag
+	EOF
 	test_cmp expect.refs actual.refs &&
 	git log --format=%s shallow/master >actual &&
-	cat <<EOF >expect &&
-7
-6
-5
-4
-3
-EOF
+	test_write_lines 7 6 5 4 3 >expect &&
 	test_cmp expect actual
 	)
 '
@@ -183,10 +150,7 @@ test_expect_success POSIXPERM,SANITY 'shallow fetch from a read-only repo' '
 	find read-only.git -print | xargs chmod -w &&
 	git clone --no-local --depth=2 read-only.git from-read-only &&
 	git --git-dir=from-read-only/.git log --format=%s >actual &&
-	cat >expect <<EOF &&
-add-1-back
-4
-EOF
+	test_write_lines add-1-back 4 >expect &&
 	test_cmp expect actual
 '

--
2.26.0.113.ge9739cdccc
Jonathan Nieder April 24, 2020, 5:17 p.m. UTC | #3
Taylor Blau wrote:
> Subject: [PATCH] t5537: use test_write_lines, indented heredocs for readability
>
> A number of spots in t5537 use the non-indented heredoc '<<EOF' when
> they would benefit from instead using '<<-EOF' or simply
> test_write_lines.
>
> In preparation for adding new tests in a good style and being consistent
> with the surrounding code, update the existing tests to improve their
> readability.
>
> Suggested-by: Junio C Hamano <gitster@pobox.com>
> Signed-off-by: Taylor Blau <me@ttaylorr.com>
> ---
>  t/t5537-fetch-shallow.sh | 70 ++++++++++------------------------------
>  1 file changed, 17 insertions(+), 53 deletions(-)

The commit message is missing the mention of \EOF quoting.

See "git log --grep='modernize style'" for some examples about how to
write this kind of commit message without it getting tedious.

That said, I think it's fine --- just mentioning that for the future.

Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Junio C Hamano April 24, 2020, 8:45 p.m. UTC | #4
Taylor Blau <me@ttaylorr.com> writes:

> Subject: [PATCH] t5537: use test_write_lines, indented heredocs for readability

Assuming that "indented" is not a verb in the past tense, but
adjective on the noun "heredocs", this reads well, but "s/,/ and/"
would make it more clear in that case.  Or "for readability, use X
and indent Y" would work equally well.

But the original is probably OK as-is.

> -	cat <<EOF >expect &&
> -4
> -3
> -EOF
> +	test_write_lines 4 3 >expect &&

Yeah, becomes much nicer with test_write_lines.

Thanks.
diff mbox series

Patch

diff --git a/t/t5537-fetch-shallow.sh b/t/t5537-fetch-shallow.sh
index 4f681dbbe1..d66b3656c0 100755
--- a/t/t5537-fetch-shallow.sh
+++ b/t/t5537-fetch-shallow.sh
@@ -25,10 +25,7 @@  test_expect_success 'setup' '
 test_expect_success 'setup shallow clone' '
 	git clone --no-local --depth=2 .git shallow &&
 	git --git-dir=shallow/.git log --format=%s >actual &&
-	cat <<EOF >expect &&
-4
-3
-EOF
+	test_write_lines 4 3 >expect &&
 	test_cmp expect actual
 '
 
@@ -38,10 +35,7 @@  test_expect_success 'clone from shallow clone' '
 	cd shallow2 &&
 	git fsck &&
 	git log --format=%s >actual &&
-	cat <<EOF >expect &&
-4
-3
-EOF
+	test_write_lines 4 3 >expect &&
 	test_cmp expect actual
 	)
 '
@@ -56,11 +50,7 @@  test_expect_success 'fetch from shallow clone' '
 	git fetch &&
 	git fsck &&
 	git log --format=%s origin/master >actual &&
-	cat <<EOF >expect &&
-5
-4
-3
-EOF
+	test_write_lines 5 4 3 >expect &&
 	test_cmp expect actual
 	)
 '
@@ -75,10 +65,7 @@  test_expect_success 'fetch --depth from shallow clone' '
 	git fetch --depth=2 &&
 	git fsck &&
 	git log --format=%s origin/master >actual &&
-	cat <<EOF >expect &&
-6
-5
-EOF
+	test_write_lines 6 5 >expect &&
 	test_cmp expect actual
 	)
 '
@@ -89,12 +76,7 @@  test_expect_success 'fetch --unshallow from shallow clone' '
 	git fetch --unshallow &&
 	git fsck &&
 	git log --format=%s origin/master >actual &&
-	cat <<EOF >expect &&
-6
-5
-4
-3
-EOF
+	test_write_lines 6 5 4 3 >expect &&
 	test_cmp expect actual
 	)
 '
@@ -111,15 +93,10 @@  test_expect_success 'fetch something upstream has but hidden by clients shallow
 	git fetch ../.git +refs/heads/master:refs/remotes/top/master &&
 	git fsck &&
 	git log --format=%s top/master >actual &&
-	cat <<EOF >expect &&
-add-1-back
-4
-3
-EOF
+	test_write_lines add-1-back 4 3 >expect &&
 	test_cmp expect actual
 	) &&
 	git --git-dir=shallow2/.git cat-file blob $(echo 1|git hash-object --stdin) >/dev/null
-
 '
 
 test_expect_success 'fetch that requires changes in .git/shallow is filtered' '
@@ -133,14 +110,12 @@  test_expect_success 'fetch that requires changes in .git/shallow is filtered' '
 	cd notshallow &&
 	git fetch ../shallow/.git refs/heads/*:refs/remotes/shallow/*&&
 	git for-each-ref --format="%(refname)" >actual.refs &&
-	cat <<EOF >expect.refs &&
-refs/remotes/shallow/no-shallow
-EOF
+	echo refs/remotes/shallow/no-shallow >expect.refs &&
 	test_cmp expect.refs actual.refs &&
 	git log --format=%s shallow/no-shallow >actual &&
-	cat <<EOF >expect &&
-no-shallow
-EOF
+	cat <<-EOF >expect &&
+	no-shallow
+	EOF
 	test_cmp expect actual
 	)
 '
@@ -158,21 +133,15 @@  test_expect_success 'fetch --update-shallow' '
 	git fetch --update-shallow ../shallow/.git refs/heads/*:refs/remotes/shallow/* &&
 	git fsck &&
 	git for-each-ref --sort=refname --format="%(refname)" >actual.refs &&
-	cat <<EOF >expect.refs &&
-refs/remotes/shallow/master
-refs/remotes/shallow/no-shallow
-refs/tags/heavy-tag
-refs/tags/light-tag
-EOF
+	cat <<-EOF >expect.refs &&
+	refs/remotes/shallow/master
+	refs/remotes/shallow/no-shallow
+	refs/tags/heavy-tag
+	refs/tags/light-tag
+	EOF
 	test_cmp expect.refs actual.refs &&
 	git log --format=%s shallow/master >actual &&
-	cat <<EOF >expect &&
-7
-6
-5
-4
-3
-EOF
+	test_write_lines 7 6 5 4 3 >expect &&
 	test_cmp expect actual
 	)
 '
@@ -183,10 +152,7 @@  test_expect_success POSIXPERM,SANITY 'shallow fetch from a read-only repo' '
 	find read-only.git -print | xargs chmod -w &&
 	git clone --no-local --depth=2 read-only.git from-read-only &&
 	git --git-dir=from-read-only/.git log --format=%s >actual &&
-	cat >expect <<EOF &&
-add-1-back
-4
-EOF
+	test_write_lines add-1-back 4 >expect &&
 	test_cmp expect actual
 '