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