]>
Commit | Line | Data |
---|---|---|
c43ce6d6 JH |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2006 Junio C Hamano | |
4 | # | |
5 | ||
6 | test_description='Try various core-level commands in subdirectory. | |
7 | ' | |
8 | ||
9 | . ./test-lib.sh | |
10 | ||
11 | test_expect_success setup ' | |
12 | long="a b c d e f g h i j k l m n o p q r s t u v w x y z" && | |
13 | for c in $long; do echo $c; done >one && | |
14 | mkdir dir && | |
15 | for c in x y z $long a b c; do echo $c; done >dir/two && | |
16 | cp one original.one && | |
17 | cp dir/two original.two | |
18 | ' | |
19 | HERE=`pwd` | |
20 | LF=' | |
21 | ' | |
22 | ||
23 | test_expect_success 'update-index and ls-files' ' | |
24 | cd $HERE && | |
25 | git-update-index --add one && | |
26 | case "`git-ls-files`" in | |
27 | one) echo ok one ;; | |
28 | *) echo bad one; exit 1 ;; | |
29 | esac && | |
30 | cd dir && | |
31 | git-update-index --add two && | |
32 | case "`git-ls-files`" in | |
33 | two) echo ok two ;; | |
34 | *) echo bad two; exit 1 ;; | |
35 | esac && | |
36 | cd .. && | |
37 | case "`git-ls-files`" in | |
38 | dir/two"$LF"one) echo ok both ;; | |
39 | *) echo bad; exit 1 ;; | |
40 | esac | |
41 | ' | |
42 | ||
43 | test_expect_success 'cat-file' ' | |
44 | cd $HERE && | |
45 | two=`git-ls-files -s dir/two` && | |
46 | two=`expr "$two" : "[0-7]* \\([0-9a-f]*\\)"` && | |
47 | echo "$two" && | |
48 | git-cat-file -p "$two" >actual && | |
49 | cmp dir/two actual && | |
50 | cd dir && | |
51 | git-cat-file -p "$two" >actual && | |
52 | cmp two actual | |
53 | ' | |
54 | rm -f actual dir/actual | |
55 | ||
56 | test_expect_success 'diff-files' ' | |
57 | cd $HERE && | |
58 | echo a >>one && | |
59 | echo d >>dir/two && | |
60 | case "`git-diff-files --name-only`" in | |
61 | dir/two"$LF"one) echo ok top ;; | |
62 | *) echo bad top; exit 1 ;; | |
63 | esac && | |
64 | # diff should not omit leading paths | |
65 | cd dir && | |
66 | case "`git-diff-files --name-only`" in | |
67 | dir/two"$LF"one) echo ok subdir ;; | |
68 | *) echo bad subdir; exit 1 ;; | |
69 | esac && | |
70 | case "`git-diff-files --name-only .`" in | |
71 | dir/two) echo ok subdir limited ;; | |
72 | *) echo bad subdir limited; exit 1 ;; | |
73 | esac | |
74 | ' | |
75 | ||
76 | test_expect_success 'write-tree' ' | |
77 | cd $HERE && | |
78 | top=`git-write-tree` && | |
79 | echo $top && | |
80 | cd dir && | |
81 | sub=`git-write-tree` && | |
82 | echo $sub && | |
83 | test "z$top" = "z$sub" | |
84 | ' | |
85 | ||
86 | test_expect_success 'checkout-index' ' | |
87 | cd $HERE && | |
88 | git-checkout-index -f -u one && | |
89 | cmp one original.one && | |
90 | cd dir && | |
91 | git-checkout-index -f -u two && | |
92 | cmp two ../original.two | |
93 | ' | |
94 | ||
95 | test_expect_success 'read-tree' ' | |
96 | cd $HERE && | |
97 | rm -f one dir/two && | |
98 | tree=`git-write-tree` && | |
99 | git-read-tree --reset -u "$tree" && | |
100 | cmp one original.one && | |
101 | cmp dir/two original.two && | |
102 | cd dir && | |
103 | rm -f two && | |
104 | git-read-tree --reset -u "$tree" && | |
105 | cmp two ../original.two && | |
106 | cmp ../one ../original.one | |
107 | ' | |
108 | ||
3dff5379 | 109 | test_expect_success 'no file/rev ambiguity check inside .git' ' |
68025633 JS |
110 | cd $HERE && |
111 | git commit -a -m 1 && | |
112 | cd $HERE/.git && | |
113 | git show -s HEAD | |
114 | ' | |
115 | ||
3dff5379 | 116 | test_expect_success 'no file/rev ambiguity check inside a bare repo' ' |
68025633 JS |
117 | cd $HERE && |
118 | git clone -s --bare .git foo.git && | |
119 | cd foo.git && GIT_DIR=. git show -s HEAD | |
120 | ' | |
121 | ||
122 | # This still does not work as it should... | |
3dff5379 | 123 | : test_expect_success 'no file/rev ambiguity check inside a bare repo' ' |
68025633 JS |
124 | cd $HERE && |
125 | git clone -s --bare .git foo.git && | |
126 | cd foo.git && git show -s HEAD | |
127 | ' | |
128 | ||
129 | test_expect_success 'detection should not be fooled by a symlink' ' | |
130 | cd $HERE && | |
131 | rm -fr foo.git && | |
132 | git clone -s .git another && | |
133 | ln -s another yetanother && | |
134 | cd yetanother/.git && | |
135 | git show -s HEAD | |
136 | ' | |
137 | ||
c43ce6d6 | 138 | test_done |