]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t7700: consolidate code into test_has_duplicate_object()
authorDenton Liu <liu.denton@gmail.com>
Wed, 4 Dec 2019 22:03:14 +0000 (14:03 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 4 Dec 2019 22:25:05 +0000 (14:25 -0800)
The code to test that objects were not duplicated from the packfile was
duplicated many times. Extract the duplicated code into
test_has_duplicate_object() and use that instead.

Refactor the resulting extraction so that if the git command fails,
the return code is not silently lost.

Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t7700-repack.sh

index 5fb9e99f34f34f11d2fe53710ed386b0d73fb4e0..80ded48088026f019bb83ae25975fe36558a23a6 100755 (executable)
@@ -21,6 +21,25 @@ test_no_missing_in_packs () {
        test_must_be_empty missing
 }
 
+# we expect $packsha1 and $objsha1 to be defined
+test_has_duplicate_object () {
+       want_duplicate_object="$1"
+       found_duplicate_object=false
+       for p in .git/objects/pack/*.idx
+       do
+               idx=$(basename $p)
+               test "pack-$packsha1.idx" = "$idx" && continue
+               git verify-pack -v $p >packlist || return $?
+               if egrep "^$objsha1" packlist
+               then
+                       found_duplicate_object=true
+                       echo "DUPLICATE OBJECT FOUND"
+                       break
+               fi
+       done &&
+       test "$want_duplicate_object" = "$found_duplicate_object"
+}
+
 test_expect_success 'objects in packs marked .keep are not repacked' '
        echo content1 >file1 &&
        echo content2 >file2 &&
@@ -40,54 +59,19 @@ test_expect_success 'objects in packs marked .keep are not repacked' '
        mv pack-* .git/objects/pack/ &&
        git repack -A -d -l &&
        git prune-packed &&
-       for p in .git/objects/pack/*.idx
-       do
-               idx=$(basename $p)
-               test "pack-$packsha1.idx" = "$idx" && continue
-               if git verify-pack -v $p | egrep "^$objsha1"
-               then
-                       found_duplicate_object=1
-                       echo "DUPLICATE OBJECT FOUND"
-                       break
-               fi
-       done &&
-       test -z "$found_duplicate_object"
+       test_has_duplicate_object false
 '
 
 test_expect_success 'writing bitmaps via command-line can duplicate .keep objects' '
        # build on $objsha1, $packsha1, and .keep state from previous
        git repack -Adbl &&
-       test_when_finished "found_duplicate_object=" &&
-       for p in .git/objects/pack/*.idx
-       do
-               idx=$(basename $p)
-               test "pack-$packsha1.idx" = "$idx" && continue
-               if git verify-pack -v $p | egrep "^$objsha1"
-               then
-                       found_duplicate_object=1
-                       echo "DUPLICATE OBJECT FOUND"
-                       break
-               fi
-       done &&
-       test "$found_duplicate_object" = 1
+       test_has_duplicate_object true
 '
 
 test_expect_success 'writing bitmaps via config can duplicate .keep objects' '
        # build on $objsha1, $packsha1, and .keep state from previous
        git -c repack.writebitmaps=true repack -Adl &&
-       test_when_finished "found_duplicate_object=" &&
-       for p in .git/objects/pack/*.idx
-       do
-               idx=$(basename $p)
-               test "pack-$packsha1.idx" = "$idx" && continue
-               if git verify-pack -v $p | egrep "^$objsha1"
-               then
-                       found_duplicate_object=1
-                       echo "DUPLICATE OBJECT FOUND"
-                       break
-               fi
-       done &&
-       test "$found_duplicate_object" = 1
+       test_has_duplicate_object true
 '
 
 test_expect_success 'loose objects in alternate ODB are not repacked' '
@@ -100,16 +84,7 @@ test_expect_success 'loose objects in alternate ODB are not repacked' '
        git commit -m commit_file3 &&
        git repack -a -d -l &&
        git prune-packed &&
-       for p in .git/objects/pack/*.idx
-       do
-               if git verify-pack -v $p | egrep "^$objsha1"
-               then
-                       found_duplicate_object=1
-                       echo "DUPLICATE OBJECT FOUND"
-                       break
-               fi
-       done &&
-       test -z "$found_duplicate_object"
+       test_has_duplicate_object false
 '
 
 test_expect_success 'packed obs in alt ODB are repacked even when local repo is packless' '