Subject: Re: [PATCH v2] t/pack-refs-tests: use test_path_is_missing

From: Junio C Hamano <[email-masked]>
Date: Sat, 14 Mar 2026 09:39:21 -0700

Ritesh Singh Jadoun <[email-masked]> writes:

> The pack-refs tests currently use raw 'test -f' checks with negation.
> Update them to use Git's standard helper function test_path_is_missing
> for consistency and clearer failure reporting. This aligns with
> CodingGuidelines and makes test failures more obvious.
>
> Signed-off-by: Ritesh Singh Jadoun <[email-masked]>
> ---
>  t/pack-refs-tests.sh | 28 ++++++++++++++--------------
>  1 file changed, 14 insertions(+), 14 deletions(-)
>
> diff --git a/t/pack-refs-tests.sh b/t/pack-refs-tests.sh
> index 2fdaccb6c7..3cc4906f05 100644
> --- a/t/pack-refs-tests.sh
> +++ b/t/pack-refs-tests.sh
> @@ -61,13 +61,13 @@ test_expect_success 'see if a branch still exists after git ${pack_refs} --prune
>  test_expect_success 'see if git ${pack_refs} --prune remove ref files' '
>  	git branch f &&
>  	git ${pack_refs} --all --prune &&
> -	! test -f .git/refs/heads/f
> +	test_path_is_missing .git/refs/heads/f
>  '

Good.

>  test_expect_success 'see if git ${pack_refs} --prune removes empty dirs' '
>  	git branch r/s/t &&
>  	git ${pack_refs} --all --prune &&
> -	! test -e .git/refs/heads/r
> +	! test_path_exists .git/refs/heads/r
>  '

Questionable.  When do we want to loudly tell the human about an
unsatisfied expectation?  We expect .git/refs/heads/r not to exist,
so we want to use "test_path_is_missing", no?

Please do double check the remainder of the patch, although from a
cursory look I think you got them all correctly.

THanks.

>  test_expect_success 'git branch g should work when git branch g/h has been deleted' '
> @@ -111,43 +111,43 @@ test_expect_success 'test excluded refs are not packed' '
>  	git branch dont_pack2 &&
>  	git branch pack_this &&
>  	git ${pack_refs} --all --exclude "refs/heads/dont_pack*" &&
> -	test -f .git/refs/heads/dont_pack1 &&
> -	test -f .git/refs/heads/dont_pack2 &&
> -	! test -f .git/refs/heads/pack_this'
> +	test_path_is_file .git/refs/heads/dont_pack1 &&
> +	test_path_is_file .git/refs/heads/dont_pack2 &&
> +	test_path_is_missing .git/refs/heads/pack_this'
>  
>  test_expect_success 'test --no-exclude refs clears excluded refs' '
>  	git branch dont_pack3 &&
>  	git branch dont_pack4 &&
>  	git ${pack_refs} --all --exclude "refs/heads/dont_pack*" --no-exclude &&
> -	! test -f .git/refs/heads/dont_pack3 &&
> -	! test -f .git/refs/heads/dont_pack4'
> +	test_path_is_missing .git/refs/heads/dont_pack3 &&
> +	test_path_is_missing .git/refs/heads/dont_pack4'
>  
>  test_expect_success 'test only included refs are packed' '
>  	git branch pack_this1 &&
>  	git branch pack_this2 &&
>  	git tag dont_pack5 &&
>  	git ${pack_refs} --include "refs/heads/pack_this*" &&
> -	test -f .git/refs/tags/dont_pack5 &&
> -	! test -f .git/refs/heads/pack_this1 &&
> -	! test -f .git/refs/heads/pack_this2'
> +	test_path_is_file .git/refs/tags/dont_pack5 &&
> +	test_path_is_missing .git/refs/heads/pack_this1 &&
> +	test_path_is_missing .git/refs/heads/pack_this2'
>  
>  test_expect_success 'test --no-include refs clears included refs' '
>  	git branch pack1 &&
>  	git branch pack2 &&
>  	git ${pack_refs} --include "refs/heads/pack*" --no-include &&
> -	test -f .git/refs/heads/pack1 &&
> -	test -f .git/refs/heads/pack2'
> +	test_path_is_file .git/refs/heads/pack1 &&
> +	test_path_is_file .git/refs/heads/pack2'
>  
>  test_expect_success 'test --exclude takes precedence over --include' '
>  	git branch dont_pack5 &&
>  	git ${pack_refs} --include "refs/heads/pack*" --exclude "refs/heads/pack*" &&
> -	test -f .git/refs/heads/dont_pack5'
> +	test_path_is_file .git/refs/heads/dont_pack5'
>  
>  test_expect_success 'see if up-to-date packed refs are preserved' '
>  	git branch q &&
>  	git ${pack_refs} --all --prune &&
>  	git update-ref refs/heads/q refs/heads/q &&
> -	! test -f .git/refs/heads/q
> +	test_path_is_missing .git/refs/heads/q
>  '
>  
>  test_expect_success 'pack, prune and repack' '