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