summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTaylor Blau <me@ttaylorr.com>2024-08-05 15:37:11 -0400
committerJunio C Hamano <gitster@pobox.com>2024-08-05 12:44:54 -0700
commitac91586ae5611c460ce98befdec06d903b25b667 (patch)
tree7ba147d098f28c4827dffdbd09775244782c61f8
parent46698a8ea13f244aac74366d2ee66a88e92e001a (diff)
t/t7704-repack-cruft.sh: avoid failures during long-running tests
On systems where running t7704.09 takes longer than 10 seconds, the test can fail. The test works by doing the following: - First write three unreachable objects, backdating the mtime for a single object ($foo) which we expect to prune. - Repack the repository into a pack containing reachable objects, and another three cruft packs, each containing one of the objects written in the previous step. - Backdate the mtimes of the cruft pack *.mtimes files themselves. (Note that this does not affect what is pruned further down in the test, but is done to ensure that the cruft packs are rewritten during that step). - Then repack with --cruft-expiration=10.seconds.ago, expecting to prune one of the three unreachable objects written in the first step. - Assert that the surviving cruft packs were rewritten, object $foo is pruned, and unreachable objects $bar, and $baz remain in the repository. If longer than 10 seconds pass between writing the three unreachable objects (the first step) and the "git repack --cruft" (the fourth step), we will mistakenly prune more objects than expected, causing the test to fail. The $foo object which we expect to prune has its mtime set back to 10,000 seconds relative to the current time, but we prune it with a cutoff of 10.seconds.ago. Instead, set the cutoff to be 1,000 seconds to give the test much longer time to run without failing. This helps platforms where running individual tests can perform slowly, on my machine this test runs much more quickly: $ hyperfine './t7704-repack-cruft.sh --run=9' Benchmark 1: ./t7704-repack-cruft.sh --run=9 Time (mean ± σ): 647.4 ms ± 30.7 ms [User: 528.5 ms, System: 124.1 ms] Range (min … max): 594.1 ms … 696.5 ms 10 runs Reported-by: Randall Becker <randall.becker@nexbridge.com> Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xt/t7704-repack-cruft.sh2
1 files changed, 1 insertions, 1 deletions
diff --git a/t/t7704-repack-cruft.sh b/t/t7704-repack-cruft.sh
index be3735dff0..69142c384d 100755
--- a/t/t7704-repack-cruft.sh
+++ b/t/t7704-repack-cruft.sh
@@ -330,7 +330,7 @@ test_expect_success '--max-cruft-size with pruning' '
# repack (and prune) with a --max-cruft-size to ensure
# that we appropriately split the resulting set of packs
git repack -d --cruft --max-cruft-size=1M \
- --cruft-expiration=10.seconds.ago &&
+ --cruft-expiration=1000.seconds.ago &&
ls $packdir/pack-*.mtimes | sort >cruft.after &&
for cruft in $(cat cruft.after)