@@ -564,6 +564,50 @@ test_expect_success 'worktree-prune task honors gc.worktreePruneExpire' '
564564 test_path_is_missing .git/worktrees/worktree
565565'
566566
567+ test_expect_rerere_gc () {
568+ negate=
569+ if test " $1 " = " !"
570+ then
571+ negate=" !"
572+ shift
573+ fi
574+
575+ rm -f " rerere-gc.txt" &&
576+ GIT_TRACE2_EVENT=" $( pwd) /rerere-gc.txt" " $@ " &&
577+ test_subcommand $negate git rerere gc < rerere-gc.txt
578+ }
579+
580+ test_expect_success ' rerere-gc task without --auto always collects garbage' '
581+ test_expect_rerere_gc git maintenance run --task=rerere-gc
582+ '
583+
584+ test_expect_success ' rerere-gc task with --auto only prunes with prunable entries' '
585+ test_when_finished "rm -rf .git/rr-cache" &&
586+ test_expect_rerere_gc ! git maintenance run --auto --task=rerere-gc &&
587+ mkdir .git/rr-cache &&
588+ test_expect_rerere_gc ! git maintenance run --auto --task=rerere-gc &&
589+ : >.git/rr-cache/entry &&
590+ test_expect_rerere_gc git maintenance run --auto --task=rerere-gc
591+ '
592+
593+ test_expect_success ' rerere-gc task with --auto honors maintenance.rerere-gc.auto' '
594+ test_when_finished "rm -rf .git/rr-cache" &&
595+
596+ # A negative value should always prune.
597+ test_expect_rerere_gc git -c maintenance.rerere-gc.auto=-1 maintenance run --auto --task=rerere-gc &&
598+
599+ # A positive value prunes when there is at least one entry.
600+ test_expect_rerere_gc ! git -c maintenance.rerere-gc.auto=9000 maintenance run --auto --task=rerere-gc &&
601+ mkdir .git/rr-cache &&
602+ test_expect_rerere_gc ! git -c maintenance.rerere-gc.auto=9000 maintenance run --auto --task=rerere-gc &&
603+ : >.git/rr-cache/entry-1 &&
604+ test_expect_rerere_gc git -c maintenance.rerere-gc.auto=9000 maintenance run --auto --task=rerere-gc &&
605+
606+ # Zero should never prune.
607+ : >.git/rr-cache/entry-1 &&
608+ test_expect_rerere_gc ! git -c maintenance.rerere-gc.auto=0 maintenance run --auto --task=rerere-gc
609+ '
610+
567611test_expect_success ' --auto and --schedule incompatible' '
568612 test_must_fail git maintenance run --auto --schedule=daily 2>err &&
569613 test_grep "at most one" err
0 commit comments