update-ref: fix "verify" command with missing <oldvalue>
[gitweb.git] / t / t5310-pack-bitmaps.sh
index d81f2c7c725da551ce9897481a800965fca6ce9d..6003490192880802d866ec3788facaf4dcf17147 100755 (executable)
@@ -3,6 +3,10 @@
 test_description='exercise basic bitmap functionality'
 . ./test-lib.sh
 
+objpath () {
+       echo ".git/objects/$(echo "$1" | sed -e 's|\(..\)|\1/|')"
+}
+
 test_expect_success 'setup repo with moderate-sized history' '
        for i in $(test_seq 1 10); do
                test_commit $i
@@ -91,7 +95,10 @@ test_expect_success 'fetch (partial bitmap)' '
 
 test_expect_success 'incremental repack cannot create bitmaps' '
        test_commit more-1 &&
-       test_must_fail git repack -d
+       find .git/objects/pack -name "*.bitmap" >expect &&
+       git repack -d &&
+       find .git/objects/pack -name "*.bitmap" >actual &&
+       test_cmp expect actual
 '
 
 test_expect_success 'incremental repack can disable bitmaps' '
@@ -112,6 +119,33 @@ test_expect_success 'fetch (full bitmap)' '
        test_cmp expect actual
 '
 
+test_expect_success 'create objects for missing-HAVE tests' '
+       blob=$(echo "missing have" | git hash-object -w --stdin) &&
+       tree=$(printf "100644 blob $blob\tfile\n" | git mktree) &&
+       parent=$(echo parent | git commit-tree $tree) &&
+       commit=$(echo commit | git commit-tree $tree -p $parent) &&
+       cat >revs <<-EOF
+       HEAD
+       ^HEAD^
+       ^$commit
+       EOF
+'
+
+test_expect_success 'pack with missing blob' '
+       rm $(objpath $blob) &&
+       git pack-objects --stdout --revs <revs >/dev/null
+'
+
+test_expect_success 'pack with missing tree' '
+       rm $(objpath $tree) &&
+       git pack-objects --stdout --revs <revs >/dev/null
+'
+
+test_expect_success 'pack with missing parent' '
+       rm $(objpath $parent) &&
+       git pack-objects --stdout --revs <revs >/dev/null
+'
+
 test_lazy_prereq JGIT '
        type jgit
 '
@@ -136,4 +170,13 @@ test_expect_success JGIT 'jgit can read our bitmaps' '
        )
 '
 
+test_expect_success 'splitting packs does not generate bogus bitmaps' '
+       test-genrandom foo $((1024 * 1024)) >rand &&
+       git add rand &&
+       git commit -m "commit with big file" &&
+       git -c pack.packSizeLimit=500k repack -adb &&
+       git init --bare no-bitmaps.git &&
+       git -C no-bitmaps.git fetch .. HEAD
+'
+
 test_done