[GSoC PATCH v5 4/6] t7700: test for promisor file content after repack
- From
LorenzoPegorari <lorenzo.pegorari2002@gmail.com>
- Date
- Apr 10, 2026, 22:55 UTC
- Message-ID
- <f631993c89586a87d7e5f08ca4df1502d5228464.1775861047.git.lorenzo.pegorari2002@gmail.com>
- In-Reply-To
- <cover.1775861047.git.lorenzo.pegorari2002@gmail.com>
Add tests that check if the content of ".promisor" files are correctly copied inside the ".promisor" files created by a repack.
The `-f` flag is used when repacking to ensure that all the packs (created with `test_commit_bulk`) are repacked into a single new pack.
Signed-off-by: LorenzoPegorari <lorenzo.pegorari2002@gmail.com> --- t/t7700-repack.sh | 60 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+)
diff --git a/t/t7700-repack.sh b/t/t7700-repack.sh index 63ef63fc50..186a931ea7 100755 --- a/t/t7700-repack.sh +++ b/t/t7700-repack.sh @@ -904,4 +904,64 @@ 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 prom_before_repack && + git init prom_test && + path=prom_test/.git/objects/pack && + + ( + test_commit_bulk -C prom_test 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" && + + # Repack, and check if correct + git -C prom_test repack -a -d -f && + prom=$(ls $path/*.promisor) && + # $prom should contain "$oid ref <time>" + test_grep "$prom_before_repack " "$prom" && + + # Save the current .promisor content, repack, and check if correct + cp "$prom" prom_before_repack && + git -C prom_test repack -a -d -f && + prom=$(ls $path/*.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' ' + test_when_finished rm -rf prom_test prom_before_repack && + git init prom_test && + path=prom_test/.git/objects/pack && + + ( + # Create 2 packs and simulate .promisor files by creating them manually + test_commit_bulk -C prom_test 1 && + prom=$(ls $path/*.pack | sed "s/\.pack/.promisor/") && + oid1=$(git -C prom_test rev-parse HEAD) && + echo "$oid1 ref1" >"$prom" && + test_commit_bulk -C prom_test 1 && + prom=$(ls $path/*.pack | sed "s/\.pack/.promisor/; \|$prom|d") && + oid2=$(git -C prom_test rev-parse HEAD) && + echo "$oid2 ref2" >"$prom" && + + # Repack, and check if correct + git -C prom_test repack -a -d -f && + prom=$(ls $path/*.promisor) && + # $prom should contain "$oid1 ref1 <time>" & "$oid2 ref2 <time>" + test_grep "$oid1 ref1 " "$prom" && + test_grep "$oid2 ref2 " "$prom" && + + # Save the current .promisor content, repack, and check if correct + cp "$prom" prom_before_repack && + git -C prom_test repack -a -d -f && + prom=$(ls $path/*.promisor) && + # $prom should be exactly the same as prom_before_repack + test_cmp prom_before_repack "$prom" + ) +' + test_done
-- 2.53.0.584.ge8720aaf12