[PATCH] Teach read_sha1_file() and friends about packed git object store.
[git.git] / t / t5300-pack-object.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2005 Junio C Hamano
4 #
5
6 test_description='git-pack-object
7
8 '
9 . ./test-lib.sh
10
11 TRASH=`pwd`
12
13 test_expect_success \
14     'setup' \
15     'rm -f .git/index*
16      for i in a b c
17      do
18              dd if=/dev/zero bs=4k count=1 | tr "\\0" $i >$i &&
19              git-update-cache --add $i || exit
20      done &&
21      cat c >d && echo foo >>d && git-update-cache --add d &&
22      tree=`git-write-tree` &&
23      commit=`git-commit-tree $tree </dev/null` && {
24          echo $tree &&
25          echo $commit &&
26          git-ls-tree $tree | sed -e "s/.* \\([0-9a-f]*\\)       .*/\\1/"
27      } >obj-list && {
28          git-diff-tree --root -p $commit &&
29          while read object
30          do
31             t=`git-cat-file -t $object` &&
32             git-cat-file $t $object || exit 1
33          done <obj-list
34      } >expect'
35
36 test_expect_success \
37     'pack without delta' \
38     'git-pack-objects --window=0 test-1 <obj-list'
39
40 rm -fr .git2
41 mkdir .git2
42
43 test_expect_success \
44     'unpack without delta' \
45     'GIT_OBJECT_DIRECTORY=.git2/objects &&
46      export GIT_OBJECT_DIRECTORY &&
47      git-init-db &&
48      git-unpack-objects test-1'
49
50 unset GIT_OBJECT_DIRECTORY
51 cd $TRASH/.git2
52
53 test_expect_success \
54     'check unpack without delta' \
55     '(cd ../.git && find objects -type f -print) |
56      while read path
57      do
58          cmp $path ../.git/$path || {
59              echo $path differs.
60              exit 1
61          }
62      done'
63 cd $TRASH
64
65 test_expect_success \
66     'pack with delta' \
67     'pwd &&
68      git-pack-objects test-2 <obj-list'
69
70 rm -fr .git2
71 mkdir .git2
72
73 test_expect_success \
74     'unpack with delta' \
75     'GIT_OBJECT_DIRECTORY=.git2/objects &&
76      export GIT_OBJECT_DIRECTORY &&
77      git-init-db &&
78      git-unpack-objects test-2'
79
80 unset GIT_OBJECT_DIRECTORY
81 cd $TRASH/.git2
82 test_expect_success \
83     'check unpack with delta' \
84     '(cd ../.git && find objects -type f -print) |
85      while read path
86      do
87          cmp $path ../.git/$path || {
88              echo $path differs.
89              exit 1
90          }
91      done'
92 cd $TRASH
93
94 rm -fr .git2
95 mkdir .git2
96
97 test_expect_success \
98     'use packed objects' \
99     'GIT_OBJECT_DIRECTORY=.git2/objects &&
100      export GIT_OBJECT_DIRECTORY &&
101      git-init-db &&
102      mkdir .git2/objects/pack &&
103      cp test-1.pack test-1.idx .git2/objects/pack && {
104          git-diff-tree --root -p $commit &&
105          while read object
106          do
107             t=`git-cat-file -t $object` &&
108             git-cat-file $t $object || exit 1
109          done <obj-list
110     } >current &&
111     diff expect current'
112
113
114 test_expect_success \
115     'use packed deltified objects' \
116     'GIT_OBJECT_DIRECTORY=.git2/objects &&
117      export GIT_OBJECT_DIRECTORY &&
118      rm -f .git2/objects/pack/test-?.idx &&
119      cp test-2.pack test-2.idx .git2/objects/pack && {
120          git-diff-tree --root -p $commit &&
121          while read object
122          do
123             t=`git-cat-file -t $object` &&
124             git-cat-file $t $object || exit 1
125          done <obj-list
126     } >current &&
127     diff expect current'
128
129 test_done