aboutsummaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
Diffstat (limited to 't')
-rw-r--r--t/t5100-delta-pull.sh79
1 files changed, 79 insertions, 0 deletions
diff --git a/t/t5100-delta-pull.sh b/t/t5100-delta-pull.sh
new file mode 100644
index 000000000..8693c5ce8
--- /dev/null
+++ b/t/t5100-delta-pull.sh
@@ -0,0 +1,79 @@
+#!/bin/sh
+#
+# Copyright (c) 2005 Junio C Hamano
+#
+
+test_description='Test pulling deltified objects
+
+'
+. ./test-lib.sh
+
+locate_obj='s|\(..\)|.git/objects/\1/|'
+
+test_expect_success \
+ setup \
+ 'cat ../README >a &&
+ git-update-cache --add a &&
+ a0=`git-ls-files --stage |
+ sed -e '\''s/^[0-7]* \([0-9a-f]*\) .*/\1/'\''` &&
+
+ sed -e 's/test/TEST/g' ../README >a &&
+ git-update-cache a &&
+ a1=`git-ls-files --stage |
+ sed -e '\''s/^[0-7]* \([0-9a-f]*\) .*/\1/'\''` &&
+ tree=`git-write-tree` &&
+ commit=`git-commit-tree $tree </dev/null` &&
+ a0f=`echo "$a0" | sed -e "$locate_obj"` &&
+ a1f=`echo "$a1" | sed -e "$locate_obj"` &&
+ echo commit $commit &&
+ echo a0 $a0 &&
+ echo a1 $a1 &&
+ ls -l $a0f $a1f &&
+ echo $commit >.git/HEAD &&
+ git-mkdelta -v $a0 $a1 &&
+ ls -l $a0f $a1f'
+
+# Now commit has a tree that records delitified "a" whose SHA1 is a1.
+# Create a new repo and pull this commit into it.
+
+test_expect_success \
+ 'setup and cd into new repo' \
+ 'mkdir dest && cd dest && rm -fr .git && git-init-db'
+
+test_expect_success \
+ 'pull from deltified repo into a new repo without -d' \
+ 'rm -fr .git a && git-init-db &&
+ git-local-pull -v -a $commit ../.git/ &&
+ git-cat-file blob $a1 >a &&
+ diff -u a ../a'
+
+test_expect_failure \
+ 'pull from deltified repo into a new repo with -d' \
+ 'rm -fr .git a && git-init-db &&
+ git-local-pull -v -a -d $commit ../.git/ &&
+ git-cat-file blob $a1 >a &&
+ diff -u a ../a'
+
+test_expect_failure \
+ 'pull from deltified repo after delta failure without --recover' \
+ 'rm -f a &&
+ git-local-pull -v -a $commit ../.git/ &&
+ git-cat-file blob $a1 >a &&
+ diff -u a ../a'
+
+test_expect_success \
+ 'pull from deltified repo after delta failure with --recover' \
+ 'rm -f a &&
+ git-local-pull -v -a --recover $commit ../.git/ &&
+ git-cat-file blob $a1 >a &&
+ diff -u a ../a'
+
+test_expect_success \
+ 'missing-tree or missing-blob should be re-fetched without --recover' \
+ 'rm -f a $a0f $a1f &&
+ git-local-pull -v -a $commit ../.git/ &&
+ git-cat-file blob $a1 >a &&
+ diff -u a ../a'
+
+test_done
+