Subject: Re: [GSoC PATCH v3 4/5] t7700: test for promisor file content after repack

From: Junio C Hamano <[email-masked]>
Date: Tue, 07 Apr 2026 11:10:02 -0700

LorenzoPegorari <[email-masked]> writes:

> Add tests that checks if the content of ".promisor" files are correctly
> copied inside the ".promisor" files created by a repack.
>
> Signed-off-by: LorenzoPegorari <[email-masked]>
> ---
>  t/t7700-repack.sh | 63 +++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 63 insertions(+)
>
> diff --git a/t/t7700-repack.sh b/t/t7700-repack.sh
> index 63ef63fc50..89a2116641 100755
> --- a/t/t7700-repack.sh
> +++ b/t/t7700-repack.sh
> @@ -904,4 +904,67 @@ test_expect_success 'pending objects are repacked appropriately' '
>  	)
>  '
>  
> +test_expect_success 'check one .promisor file content after repack' '
> +	test_when_finished rm -rf prom_test &&
> +	git init prom_test &&
> +	path=prom_test/.git/objects/pack &&
> +
> +	(
> +		test_commit_bulk -C prom_test --start=1 1 &&
> +		
> +		# Simulate .promisor file by creating it manually
> +		prom=$(ls $path/*.pack | sed "s/\.pack/.promisor/") &&
> +		oid=$(git -C prom_test rev-parse HEAD) &&
> +		echo "$oid ref" >$prom &&
> +
> +		# Save the current .promisor content, repack, and check if correct
> +		prom_before_repack=$(cat $prom) &&
> +		git -C prom_test repack -a -d &&
> +		prom=$(ls $path/*.pack | sed "s/\.pack/.promisor/") &&
> +		# $prom should contain "$prom_before_repack <date>"
> +		test_grep "$prom_before_repack " $prom &&
> +
> +		# Save the current .promisor content, repack, and check if correct
> +		cat $prom >prom_before_repack &&
> +		git -C prom_test repack -a -d &&
> +		prom=$(ls $path/*.pack | sed "s/\.pack/.promisor/") &&
> +		# $prom should be exactly the same as prom_before_repack
> +		test_cmp prom_before_repack $prom
> +	)
> +'
> +
> +test_expect_success 'check multiple .promisor file content after repack' '
> +...
> +
> +		# Repack, and check if correct compared to previous saved .promisor content
> +		git -C prom_test repack -a -d &&
> +		prom=$(ls $path/*.pack | sed "s/\.pack/.promisor/") &&
> +		# $prom should contain "$prom_before_repack1 <date>" & "$prom_before_repack2 <date>"
> +		test_grep "$prom_before_repack1 " $prom &&
> +		test_grep "$prom_before_repack2 " $prom &&

This test seems to be flakey.

  https://github.com/git/git/actions/runs/24095497271/job/70292906676#step:10:5274

shows that $prom gets two file names, and because test_grep is
expecting a single source to grep inside, the first test_grep
fails.