Raw
1 #!/bin/sh
2
3 test_description='test GIT_CEILING_DIRECTORIES'
4
5 . ./test-lib.sh
6
7 test_prefix() {
8 local expect="$2" &&
9 test_expect_success "$1: git rev-parse --show-prefix is '$2'" '
10 echo "$expect" >expect &&
11 git rev-parse --show-prefix >actual &&
12 test_cmp expect actual
13 '
14 }
15
16 test_fail() {
17 test_expect_success "$1: prefix" '
18 test_expect_code 128 git rev-parse --show-prefix
19 '
20 }
21
22 TRASH_ROOT="$PWD"
23 ROOT_PARENT=$(dirname "$TRASH_ROOT")
24
25
26 unset GIT_CEILING_DIRECTORIES
27 test_prefix no_ceil ""
28
29 export GIT_CEILING_DIRECTORIES
30
31 GIT_CEILING_DIRECTORIES=""
32 test_prefix ceil_empty ""
33
34 GIT_CEILING_DIRECTORIES="$ROOT_PARENT"
35 test_prefix ceil_at_parent ""
36
37 GIT_CEILING_DIRECTORIES="$ROOT_PARENT/"
38 test_prefix ceil_at_parent_slash ""
39
40 GIT_CEILING_DIRECTORIES="$TRASH_ROOT"
41 test_prefix ceil_at_trash ""
42
43 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/"
44 test_prefix ceil_at_trash_slash ""
45
46 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub"
47 test_prefix ceil_at_sub ""
48
49 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/"
50 test_prefix ceil_at_sub_slash ""
51
52 if test_have_prereq SYMLINKS
53 then
54 ln -s sub top
55 fi
56
57 mkdir -p sub/dir || exit 1
58 cd sub/dir || exit 1
59
60 unset GIT_CEILING_DIRECTORIES
61 test_prefix subdir_no_ceil "sub/dir/"
62
63 export GIT_CEILING_DIRECTORIES
64
65 GIT_CEILING_DIRECTORIES=""
66 test_prefix subdir_ceil_empty "sub/dir/"
67
68 GIT_CEILING_DIRECTORIES="$TRASH_ROOT"
69 test_fail subdir_ceil_at_trash
70
71 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/"
72 test_fail subdir_ceil_at_trash_slash
73
74 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub"
75 test_fail subdir_ceil_at_sub
76
77 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/"
78 test_fail subdir_ceil_at_sub_slash
79
80 if test_have_prereq SYMLINKS
81 then
82 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/top"
83 test_fail subdir_ceil_at_top
84 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/top/"
85 test_fail subdir_ceil_at_top_slash
86
87 GIT_CEILING_DIRECTORIES=":$TRASH_ROOT/top"
88 test_prefix subdir_ceil_at_top_no_resolve "sub/dir/"
89 GIT_CEILING_DIRECTORIES=":$TRASH_ROOT/top/"
90 test_prefix subdir_ceil_at_top_slash_no_resolve "sub/dir/"
91 fi
92
93 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/dir"
94 test_prefix subdir_ceil_at_subdir "sub/dir/"
95
96 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/dir/"
97 test_prefix subdir_ceil_at_subdir_slash "sub/dir/"
98
99
100 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/su"
101 test_prefix subdir_ceil_at_su "sub/dir/"
102
103 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/su/"
104 test_prefix subdir_ceil_at_su_slash "sub/dir/"
105
106 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/di"
107 test_prefix subdir_ceil_at_sub_di "sub/dir/"
108
109 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/di"
110 test_prefix subdir_ceil_at_sub_di_slash "sub/dir/"
111
112 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/subdi"
113 test_prefix subdir_ceil_at_subdi "sub/dir/"
114
115 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/subdi"
116 test_prefix subdir_ceil_at_subdi_slash "sub/dir/"
117
118
119 GIT_CEILING_DIRECTORIES="/foo:$TRASH_ROOT/sub"
120 test_fail second_of_two
121
122 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub:/bar"
123 test_fail first_of_two
124
125 GIT_CEILING_DIRECTORIES="/foo:$TRASH_ROOT/sub:/bar"
126 test_fail second_of_three
127
128
129 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub"
130 GIT_DIR=../../.git
131 export GIT_DIR
132 test_prefix git_dir_specified ""
133 unset GIT_DIR
134
135
136 cd ../.. || exit 1
137 mkdir -p s/d || exit 1
138 cd s/d || exit 1
139
140 unset GIT_CEILING_DIRECTORIES
141 test_prefix sd_no_ceil "s/d/"
142
143 export GIT_CEILING_DIRECTORIES
144
145 GIT_CEILING_DIRECTORIES=""
146 test_prefix sd_ceil_empty "s/d/"
147
148 GIT_CEILING_DIRECTORIES="$TRASH_ROOT"
149 test_fail sd_ceil_at_trash
150
151 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/"
152 test_fail sd_ceil_at_trash_slash
153
154 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s"
155 test_fail sd_ceil_at_s
156
157 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/"
158 test_fail sd_ceil_at_s_slash
159
160 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/d"
161 test_prefix sd_ceil_at_sd "s/d/"
162
163 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/d/"
164 test_prefix sd_ceil_at_sd_slash "s/d/"
165
166
167 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/su"
168 test_prefix sd_ceil_at_su "s/d/"
169
170 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/su/"
171 test_prefix sd_ceil_at_su_slash "s/d/"
172
173 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/di"
174 test_prefix sd_ceil_at_s_di "s/d/"
175
176 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/di"
177 test_prefix sd_ceil_at_s_di_slash "s/d/"
178
179 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sdi"
180 test_prefix sd_ceil_at_sdi "s/d/"
181
182 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sdi"
183 test_prefix sd_ceil_at_sdi_slash "s/d/"
184
185
186 test_done