Subject: Re: [PATCH v3 01/10] cache-tree tests: refactor for modern test style

From: Junio C Hamano <[email-masked]>
Date: Sat, 23 Jan 2021 13:34:51 -0800

Ævar Arnfjörð Bjarmason  <[email-masked]> writes:

> diff --git a/t/t0090-cache-tree.sh b/t/t0090-cache-tree.sh
> index 5a633690bf..45e1cc82ed 100755
> --- a/t/t0090-cache-tree.sh
> +++ b/t/t0090-cache-tree.sh
> @@ -10,7 +10,8 @@ cache-tree extension.
>  cmp_cache_tree () {
>  	test-tool dump-cache-tree | sed -e '/#(ref)/d' >actual &&
>  	sed "s/$OID_REGEX/SHA/" <actual >filtered &&
> -	test_cmp "$1" filtered
> +	test_cmp "$1" filtered &&
> +	rm filtered
>  }

OK.  Cleaning after itself is good, and not cleaning when there is
an error is probably a bit more helpful to those who debug, but I
think test_cmp would give them enough to work on.  A failure to
remove filtered at the end CAN mistakenly make the caller to think
that the expected output was not obtained, though.

> @@ -83,18 +84,6 @@ test_expect_success 'git-add in subdir invalidates cache-tree' '
>  	test_invalid_cache_tree
>  '
>  
> -cat >before <<\EOF
> -SHA  (3 entries, 2 subtrees)
> -SHA dir1/ (1 entries, 0 subtrees)
> -SHA dir2/ (1 entries, 0 subtrees)
> -EOF
> -
> -cat >expect <<\EOF
> -invalid                                   (2 subtrees)
> -invalid                                  dir1/ (0 subtrees)
> -SHA dir2/ (1 entries, 0 subtrees)
> -EOF
> -
>  test_expect_success 'git-add in subdir does not invalidate sibling cache-tree' '
>  	git tag no-children &&
>  	test_when_finished "git reset --hard no-children; git read-tree HEAD" &&
> @@ -102,9 +91,20 @@ test_expect_success 'git-add in subdir does not invalidate sibling cache-tree' '
>  	test_commit dir1/a &&
>  	test_commit dir2/b &&
>  	echo "I changed this file" >dir1/a &&
> +	test_when_finished "rm before" &&
> +	cat >before <<-\EOF &&
> +	SHA  (3 entries, 2 subtrees)
> +	SHA dir1/ (1 entries, 0 subtrees)
> +	SHA dir2/ (1 entries, 0 subtrees)
> +	EOF
>  	cmp_cache_tree before &&
>  	echo "I changed this file" >dir1/a &&
>  	git add dir1/a &&
> +	cat >expect <<-\EOF &&
> +	invalid                                   (2 subtrees)
> +	invalid                                  dir1/ (0 subtrees)
> +	SHA dir2/ (1 entries, 0 subtrees)
> +	EOF
>  	cmp_cache_tree expect
>  '

Why remove only 'before' and not 'expect' in when-finished handler?