]>
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 | ' | |
c43ce6d6 JH |
19 | LF=' |
20 | ' | |
21 | ||
22 | test_expect_success 'update-index and ls-files' ' | |
5be60078 JH |
23 | git update-index --add one && |
24 | case "`git ls-files`" in | |
335f8787 | 25 | one) echo pass one ;; |
c43ce6d6 JH |
26 | *) echo bad one; exit 1 ;; |
27 | esac && | |
18a82692 JN |
28 | ( |
29 | cd dir && | |
30 | git update-index --add two && | |
31 | case "`git ls-files`" in | |
32 | two) echo pass two ;; | |
33 | *) echo bad two; exit 1 ;; | |
34 | esac | |
fd4ec4f2 | 35 | ) && |
5be60078 | 36 | case "`git ls-files`" in |
335f8787 | 37 | dir/two"$LF"one) echo pass both ;; |
c43ce6d6 JH |
38 | *) echo bad; exit 1 ;; |
39 | esac | |
40 | ' | |
41 | ||
42 | test_expect_success 'cat-file' ' | |
5be60078 | 43 | two=`git ls-files -s dir/two` && |
c43ce6d6 JH |
44 | two=`expr "$two" : "[0-7]* \\([0-9a-f]*\\)"` && |
45 | echo "$two" && | |
5be60078 | 46 | git cat-file -p "$two" >actual && |
c43ce6d6 | 47 | cmp dir/two actual && |
fd3c32c9 JL |
48 | ( |
49 | cd dir && | |
50 | git cat-file -p "$two" >actual && | |
51 | cmp two actual | |
52 | ) | |
c43ce6d6 JH |
53 | ' |
54 | rm -f actual dir/actual | |
55 | ||
56 | test_expect_success 'diff-files' ' | |
c43ce6d6 JH |
57 | echo a >>one && |
58 | echo d >>dir/two && | |
5be60078 | 59 | case "`git diff-files --name-only`" in |
335f8787 | 60 | dir/two"$LF"one) echo pass top ;; |
c43ce6d6 JH |
61 | *) echo bad top; exit 1 ;; |
62 | esac && | |
63 | # diff should not omit leading paths | |
fd3c32c9 JL |
64 | ( |
65 | cd dir && | |
66 | case "`git diff-files --name-only`" in | |
67 | dir/two"$LF"one) echo pass subdir ;; | |
68 | *) echo bad subdir; exit 1 ;; | |
69 | esac && | |
70 | case "`git diff-files --name-only .`" in | |
71 | dir/two) echo pass subdir limited ;; | |
72 | *) echo bad subdir limited; exit 1 ;; | |
73 | esac | |
74 | ) | |
c43ce6d6 JH |
75 | ' |
76 | ||
77 | test_expect_success 'write-tree' ' | |
5be60078 | 78 | top=`git write-tree` && |
c43ce6d6 | 79 | echo $top && |
fd3c32c9 JL |
80 | ( |
81 | cd dir && | |
82 | sub=`git write-tree` && | |
83 | echo $sub && | |
84 | test "z$top" = "z$sub" | |
85 | ) | |
c43ce6d6 JH |
86 | ' |
87 | ||
88 | test_expect_success 'checkout-index' ' | |
5be60078 | 89 | git checkout-index -f -u one && |
c43ce6d6 | 90 | cmp one original.one && |
fd3c32c9 JL |
91 | ( |
92 | cd dir && | |
93 | git checkout-index -f -u two && | |
94 | cmp two ../original.two | |
95 | ) | |
c43ce6d6 JH |
96 | ' |
97 | ||
98 | test_expect_success 'read-tree' ' | |
c43ce6d6 | 99 | rm -f one dir/two && |
5be60078 JH |
100 | tree=`git write-tree` && |
101 | git read-tree --reset -u "$tree" && | |
c43ce6d6 JH |
102 | cmp one original.one && |
103 | cmp dir/two original.two && | |
fd3c32c9 JL |
104 | ( |
105 | cd dir && | |
106 | rm -f two && | |
107 | git read-tree --reset -u "$tree" && | |
108 | cmp two ../original.two && | |
109 | cmp ../one ../original.one | |
110 | ) | |
c43ce6d6 JH |
111 | ' |
112 | ||
101662c2 MG |
113 | test_expect_success 'alias expansion' ' |
114 | ( | |
115 | git config alias.ss status && | |
116 | cd dir && | |
117 | git status && | |
118 | git ss | |
119 | ) | |
120 | ' | |
3dff5379 | 121 | test_expect_success 'no file/rev ambiguity check inside .git' ' |
68025633 | 122 | git commit -a -m 1 && |
fd3c32c9 JL |
123 | ( |
124 | cd .git && | |
125 | git show -s HEAD | |
126 | ) | |
68025633 JS |
127 | ' |
128 | ||
3dff5379 | 129 | test_expect_success 'no file/rev ambiguity check inside a bare repo' ' |
68025633 | 130 | git clone -s --bare .git foo.git && |
fd3c32c9 JL |
131 | ( |
132 | cd foo.git && | |
133 | GIT_DIR=. git show -s HEAD | |
134 | ) | |
68025633 JS |
135 | ' |
136 | ||
137 | # This still does not work as it should... | |
3dff5379 | 138 | : test_expect_success 'no file/rev ambiguity check inside a bare repo' ' |
68025633 | 139 | git clone -s --bare .git foo.git && |
fd3c32c9 JL |
140 | ( |
141 | cd foo.git && | |
142 | git show -s HEAD | |
143 | ) | |
68025633 JS |
144 | ' |
145 | ||
704a3143 | 146 | test_expect_success SYMLINKS 'detection should not be fooled by a symlink' ' |
68025633 JS |
147 | rm -fr foo.git && |
148 | git clone -s .git another && | |
149 | ln -s another yetanother && | |
fd3c32c9 JL |
150 | ( |
151 | cd yetanother/.git && | |
152 | git show -s HEAD | |
153 | ) | |
68025633 JS |
154 | ' |
155 | ||
c43ce6d6 | 156 | test_done |