]> git.ipfire.org Git - thirdparty/git.git/commitdiff
gc tests: add a test for the "pre-auto-gc" hook
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Mon, 14 Jun 2021 10:39:25 +0000 (12:39 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 16 Jun 2021 01:25:12 +0000 (10:25 +0900)
Add a missing test for the behavior of the pre-auto-gc hook added in
0b85d92661e (Documentation/hooks: add pre-auto-gc hook, 2008-04-02).

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t6500-gc.sh

index 60d961b52600548fc121fac4183728f86bde05af..10c7ae7f09ce6d617aaf51b273c6d276dbf1e948 100755 (executable)
@@ -95,6 +95,52 @@ test_expect_success 'gc --keep-largest-pack' '
        )
 '
 
+test_expect_success 'pre-auto-gc hook can stop auto gc' '
+       cat >err.expect <<-\EOF &&
+       no gc for you
+       EOF
+
+       git init pre-auto-gc-hook &&
+       (
+               cd pre-auto-gc-hook &&
+               write_script ".git/hooks/pre-auto-gc" <<-\EOF &&
+               echo >&2 no gc for you &&
+               exit 1
+               EOF
+
+               git config gc.auto 3 &&
+               git config gc.autoDetach false &&
+
+               # We need to create two object whose sha1s start with 17
+               # since this is what git gc counts.  As it happens, these
+               # two blobs will do so.
+               test_commit "$(test_oid obj1)" &&
+               test_commit "$(test_oid obj2)" &&
+
+               git gc --auto >../out.actual 2>../err.actual
+       ) &&
+       test_must_be_empty out.actual &&
+       test_cmp err.expect err.actual &&
+
+       cat >err.expect <<-\EOF &&
+       will gc for you
+       Auto packing the repository for optimum performance.
+       See "git help gc" for manual housekeeping.
+       EOF
+
+       (
+               cd pre-auto-gc-hook &&
+               write_script ".git/hooks/pre-auto-gc" <<-\EOF &&
+               echo >&2 will gc for you &&
+               exit 0
+               EOF
+               git gc --auto >../out.actual 2>../err.actual
+       ) &&
+
+       test_must_be_empty out.actual &&
+       test_cmp err.expect err.actual
+'
+
 test_expect_success 'auto gc with too many loose objects does not attempt to create bitmaps' '
        test_config gc.auto 3 &&
        test_config gc.autodetach false &&