Merge branch 'sb/gpg-i18n'
[gitweb.git] / t / t5500-fetch-pack.sh
index e80a2af348565a0a3d001ef28cb76427acfee495..354d32c584741daffa03891c5bee7fdc469a20da 100755 (executable)
@@ -130,16 +130,25 @@ test_expect_success 'single given branch clone' '
        test_must_fail git --git-dir=branch-a/.git rev-parse origin/B
 '
 
+test_expect_success 'clone shallow depth 1' '
+       git clone --no-single-branch --depth 1 "file://$(pwd)/." shallow0 &&
+       test "`git --git-dir=shallow0/.git rev-list --count HEAD`" = 1
+'
+
 test_expect_success 'clone shallow' '
        git clone --no-single-branch --depth 2 "file://$(pwd)/." shallow
 '
 
+test_expect_success 'clone shallow depth count' '
+       test "`git --git-dir=shallow/.git rev-list --count HEAD`" = 2
+'
+
 test_expect_success 'clone shallow object count' '
        (
                cd shallow &&
                git count-objects -v
        ) > count.shallow &&
-       grep "^in-pack: 18" count.shallow
+       grep "^in-pack: 12" count.shallow
 '
 
 test_expect_success 'clone shallow object count (part 2)' '
@@ -256,12 +265,36 @@ test_expect_success 'additional simple shallow deepenings' '
        )
 '
 
+test_expect_success 'clone shallow depth count' '
+       test "`git --git-dir=shallow/.git rev-list --count HEAD`" = 11
+'
+
 test_expect_success 'clone shallow object count' '
        (
                cd shallow &&
                git count-objects -v
        ) > count.shallow &&
-       grep "^count: 52" count.shallow
+       grep "^count: 55" count.shallow
+'
+
+test_expect_success 'fetch --no-shallow on full repo' '
+       test_must_fail git fetch --noshallow
+'
+
+test_expect_success 'fetch --depth --no-shallow' '
+       (
+               cd shallow &&
+               test_must_fail git fetch --depth=1 --noshallow
+       )
+'
+
+test_expect_success 'turn shallow to complete repository' '
+       (
+               cd shallow &&
+               git fetch --unshallow &&
+               ! test -f .git/shallow &&
+               git fsck --full
+       )
 '
 
 test_expect_success 'clone shallow without --no-single-branch' '
@@ -273,7 +306,7 @@ test_expect_success 'clone shallow object count' '
                cd shallow2 &&
                git count-objects -v
        ) > count.shallow2 &&
-       grep "^in-pack: 6" count.shallow2
+       grep "^in-pack: 3" count.shallow2
 '
 
 test_expect_success 'clone shallow with --branch' '
@@ -281,7 +314,7 @@ test_expect_success 'clone shallow with --branch' '
 '
 
 test_expect_success 'clone shallow object count' '
-       echo "in-pack: 6" > count3.expected &&
+       echo "in-pack: 3" > count3.expected &&
        GIT_DIR=shallow3/.git git count-objects -v |
                grep "^in-pack" > count3.actual &&
        test_cmp count3.expected count3.actual
@@ -310,7 +343,7 @@ EOF
        GIT_DIR=shallow6/.git git tag -l >taglist.actual &&
        test_cmp taglist.expected taglist.actual &&
 
-       echo "in-pack: 7" > count6.expected &&
+       echo "in-pack: 4" > count6.expected &&
        GIT_DIR=shallow6/.git git count-objects -v |
                grep "^in-pack" > count6.actual &&
        test_cmp count6.expected count6.actual
@@ -325,7 +358,7 @@ EOF
        GIT_DIR=shallow7/.git git tag -l >taglist.actual &&
        test_cmp taglist.expected taglist.actual &&
 
-       echo "in-pack: 7" > count7.expected &&
+       echo "in-pack: 4" > count7.expected &&
        GIT_DIR=shallow7/.git git count-objects -v |
                grep "^in-pack" > count7.actual &&
        test_cmp count7.expected count7.actual
@@ -391,10 +424,55 @@ test_expect_success 'fetch mixed refs from cmdline and stdin' '
 test_expect_success 'test duplicate refs from stdin' '
        (
        cd client &&
-       test_must_fail git fetch-pack --stdin --no-progress .. <../input.dup
+       git fetch-pack --stdin --no-progress .. <../input.dup
        ) >output &&
        cut -d " " -f 2 <output | sort >actual &&
        test_cmp expect actual
 '
 
+test_expect_success 'set up tests of missing reference' '
+       cat >expect-error <<-\EOF
+       error: no such remote ref refs/heads/xyzzy
+       EOF
+'
+
+test_expect_success 'test lonely missing ref' '
+       (
+               cd client &&
+               test_must_fail git fetch-pack --no-progress .. refs/heads/xyzzy
+       ) >/dev/null 2>error-m &&
+       test_cmp expect-error error-m
+'
+
+test_expect_success 'test missing ref after existing' '
+       (
+               cd client &&
+               test_must_fail git fetch-pack --no-progress .. refs/heads/A refs/heads/xyzzy
+       ) >/dev/null 2>error-em &&
+       test_cmp expect-error error-em
+'
+
+test_expect_success 'test missing ref before existing' '
+       (
+               cd client &&
+               test_must_fail git fetch-pack --no-progress .. refs/heads/xyzzy refs/heads/A
+       ) >/dev/null 2>error-me &&
+       test_cmp expect-error error-me
+'
+
+test_expect_success 'test --all, --depth, and explicit head' '
+       (
+               cd client &&
+               git fetch-pack --no-progress --all --depth=1 .. refs/heads/A
+       ) >out-adh 2>error-adh
+'
+
+test_expect_success 'test --all, --depth, and explicit tag' '
+       git tag OLDTAG refs/heads/B~5 &&
+       (
+               cd client &&
+               git fetch-pack --no-progress --all --depth=1 .. refs/tags/OLDTAG
+       ) >out-adt 2>error-adt
+'
+
 test_done