]>
Commit | Line | Data |
---|---|---|
e6fefa92 DK |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2007 David D. Kilzer | |
4 | ||
1364ff27 | 5 | test_description='git svn info' |
e6fefa92 DK |
6 | |
7 | . ./lib-git-svn.sh | |
80828488 | 8 | |
80828488 | 9 | # Tested with: svn, version 1.4.4 (r25188) |
3acae29e | 10 | # Tested with: svn, version 1.6.[12345689] |
57da0496 | 11 | v=$(svn_cmd --version | sed -n -e 's/^svn, version \(1\.[0-9]*\.[0-9]*\).*$/\1/p') |
80828488 | 12 | case $v in |
3acae29e | 13 | 1.[456].*) |
80828488 EW |
14 | ;; |
15 | *) | |
fadb5156 | 16 | skip_all="skipping svn-info test (SVN version: $v not supported)" |
80828488 EW |
17 | test_done |
18 | ;; | |
19 | esac | |
e6fefa92 | 20 | |
ed7158b4 JH |
21 | # On the "Text Last Updated" line, "git svn info" does not return the |
22 | # same value as "svn info" (i.e. the commit timestamp that touched the | |
23 | # path most recently); do not expect that field to match. | |
24 | test_cmp_info () { | |
25 | sed -e '/^Text Last Updated:/d' "$1" >tmp.expect | |
26 | sed -e '/^Text Last Updated:/d' "$2" >tmp.actual | |
27 | test_cmp tmp.expect tmp.actual && | |
28 | rm -f tmp.expect tmp.actual | |
e6fefa92 DK |
29 | } |
30 | ||
05427b91 TR |
31 | quoted_svnrepo="$(echo $svnrepo | sed 's/ /%20/')" |
32 | ||
80828488 | 33 | test_expect_success 'setup repository and import' ' |
e6fefa92 | 34 | mkdir info && |
18a82692 JN |
35 | ( |
36 | cd info && | |
37 | echo FIRST >A && | |
38 | echo one >file && | |
e6fefa92 DK |
39 | ln -s file symlink-file && |
40 | mkdir directory && | |
41 | touch directory/.placeholder && | |
42 | ln -s directory symlink-directory && | |
fd4ec4f2 JL |
43 | svn_cmd import -m "initial" . "$svnrepo" |
44 | ) && | |
da083d68 | 45 | svn_cmd co "$svnrepo" svnwc && |
18a82692 JN |
46 | ( |
47 | cd svnwc && | |
48 | echo foo >foo && | |
da083d68 ER |
49 | svn_cmd add foo && |
50 | svn_cmd commit -m "change outside directory" && | |
fd4ec4f2 JL |
51 | svn_cmd update |
52 | ) && | |
e6fefa92 | 53 | mkdir gitwc && |
18a82692 JN |
54 | ( |
55 | cd gitwc && | |
1364ff27 | 56 | git svn init "$svnrepo" && |
fd4ec4f2 | 57 | git svn fetch |
ed7158b4 | 58 | ) |
80828488 | 59 | ' |
e6fefa92 DK |
60 | |
61 | test_expect_success 'info' " | |
62 | (cd svnwc; svn info) > expected.info && | |
1364ff27 | 63 | (cd gitwc; git svn info) > actual.info && |
ed7158b4 | 64 | test_cmp_info expected.info actual.info |
e6fefa92 DK |
65 | " |
66 | ||
8b014d71 | 67 | test_expect_success 'info --url' ' |
1364ff27 | 68 | test "$(cd gitwc; git svn info --url)" = "$quoted_svnrepo" |
8b014d71 DK |
69 | ' |
70 | ||
e6fefa92 DK |
71 | test_expect_success 'info .' " |
72 | (cd svnwc; svn info .) > expected.info-dot && | |
1364ff27 | 73 | (cd gitwc; git svn info .) > actual.info-dot && |
ed7158b4 | 74 | test_cmp_info expected.info-dot actual.info-dot |
e6fefa92 DK |
75 | " |
76 | ||
4950eed5 EW |
77 | test_expect_success 'info $(pwd)' ' |
78 | (cd svnwc; svn info "$(pwd)") >expected.info-pwd && | |
79 | (cd gitwc; git svn info "$(pwd)") >actual.info-pwd && | |
80 | grep -v ^Path: <expected.info-pwd >expected.info-np && | |
81 | grep -v ^Path: <actual.info-pwd >actual.info-np && | |
82 | test_cmp_info expected.info-np actual.info-np && | |
83 | test "$(sed -ne \"/^Path:/ s!/svnwc!!\" <expected.info-pwd)" = \ | |
84 | "$(sed -ne \"/^Path:/ s!/gitwc!!\" <actual.info-pwd)" | |
85 | ' | |
86 | ||
87 | test_expect_success 'info $(pwd)/../___wc' ' | |
88 | (cd svnwc; svn info "$(pwd)/../svnwc") >expected.info-pwd && | |
89 | (cd gitwc; git svn info "$(pwd)/../gitwc") >actual.info-pwd && | |
90 | grep -v ^Path: <expected.info-pwd >expected.info-np && | |
91 | grep -v ^Path: <actual.info-pwd >actual.info-np && | |
92 | test_cmp_info expected.info-np actual.info-np && | |
93 | test "$(sed -ne \"/^Path:/ s!/svnwc!!\" <expected.info-pwd)" = \ | |
94 | "$(sed -ne \"/^Path:/ s!/gitwc!!\" <actual.info-pwd)" | |
95 | ' | |
96 | ||
97 | test_expect_success 'info $(pwd)/../___wc//file' ' | |
98 | (cd svnwc; svn info "$(pwd)/../svnwc//file") >expected.info-pwd && | |
99 | (cd gitwc; git svn info "$(pwd)/../gitwc//file") >actual.info-pwd && | |
100 | grep -v ^Path: <expected.info-pwd >expected.info-np && | |
101 | grep -v ^Path: <actual.info-pwd >actual.info-np && | |
102 | test_cmp_info expected.info-np actual.info-np && | |
103 | test "$(sed -ne \"/^Path:/ s!/svnwc!!\" <expected.info-pwd)" = \ | |
104 | "$(sed -ne \"/^Path:/ s!/gitwc!!\" <actual.info-pwd)" | |
105 | ' | |
106 | ||
8b014d71 | 107 | test_expect_success 'info --url .' ' |
1364ff27 | 108 | test "$(cd gitwc; git svn info --url .)" = "$quoted_svnrepo" |
8b014d71 DK |
109 | ' |
110 | ||
e6fefa92 DK |
111 | test_expect_success 'info file' " |
112 | (cd svnwc; svn info file) > expected.info-file && | |
1364ff27 | 113 | (cd gitwc; git svn info file) > actual.info-file && |
ed7158b4 | 114 | test_cmp_info expected.info-file actual.info-file |
e6fefa92 DK |
115 | " |
116 | ||
8b014d71 | 117 | test_expect_success 'info --url file' ' |
1364ff27 | 118 | test "$(cd gitwc; git svn info --url file)" = "$quoted_svnrepo/file" |
8b014d71 DK |
119 | ' |
120 | ||
e6fefa92 DK |
121 | test_expect_success 'info directory' " |
122 | (cd svnwc; svn info directory) > expected.info-directory && | |
1364ff27 | 123 | (cd gitwc; git svn info directory) > actual.info-directory && |
ed7158b4 | 124 | test_cmp_info expected.info-directory actual.info-directory |
e6fefa92 DK |
125 | " |
126 | ||
edde9112 TR |
127 | test_expect_success 'info inside directory' " |
128 | (cd svnwc/directory; svn info) > expected.info-inside-directory && | |
1364ff27 | 129 | (cd gitwc/directory; git svn info) > actual.info-inside-directory && |
ed7158b4 | 130 | test_cmp_info expected.info-inside-directory actual.info-inside-directory |
edde9112 TR |
131 | " |
132 | ||
8b014d71 | 133 | test_expect_success 'info --url directory' ' |
1364ff27 | 134 | test "$(cd gitwc; git svn info --url directory)" = "$quoted_svnrepo/directory" |
8b014d71 DK |
135 | ' |
136 | ||
e6fefa92 DK |
137 | test_expect_success 'info symlink-file' " |
138 | (cd svnwc; svn info symlink-file) > expected.info-symlink-file && | |
1364ff27 | 139 | (cd gitwc; git svn info symlink-file) > actual.info-symlink-file && |
ed7158b4 | 140 | test_cmp_info expected.info-symlink-file actual.info-symlink-file |
e6fefa92 DK |
141 | " |
142 | ||
8b014d71 | 143 | test_expect_success 'info --url symlink-file' ' |
1364ff27 | 144 | test "$(cd gitwc; git svn info --url symlink-file)" \ |
05427b91 | 145 | = "$quoted_svnrepo/symlink-file" |
8b014d71 DK |
146 | ' |
147 | ||
e6fefa92 DK |
148 | test_expect_success 'info symlink-directory' " |
149 | (cd svnwc; svn info symlink-directory) \ | |
150 | > expected.info-symlink-directory && | |
1364ff27 | 151 | (cd gitwc; git svn info symlink-directory) \ |
e6fefa92 | 152 | > actual.info-symlink-directory && |
ed7158b4 | 153 | test_cmp_info expected.info-symlink-directory actual.info-symlink-directory |
e6fefa92 DK |
154 | " |
155 | ||
8b014d71 | 156 | test_expect_success 'info --url symlink-directory' ' |
1364ff27 | 157 | test "$(cd gitwc; git svn info --url symlink-directory)" \ |
05427b91 | 158 | = "$quoted_svnrepo/symlink-directory" |
8b014d71 DK |
159 | ' |
160 | ||
e6fefa92 DK |
161 | test_expect_success 'info added-file' " |
162 | echo two > gitwc/added-file && | |
18a82692 JN |
163 | ( |
164 | cd gitwc && | |
fd4ec4f2 JL |
165 | git add added-file |
166 | ) && | |
e6fefa92 | 167 | cp gitwc/added-file svnwc/added-file && |
18a82692 JN |
168 | ( |
169 | cd svnwc && | |
fd4ec4f2 JL |
170 | svn_cmd add added-file > /dev/null |
171 | ) && | |
e6fefa92 | 172 | (cd svnwc; svn info added-file) > expected.info-added-file && |
1364ff27 | 173 | (cd gitwc; git svn info added-file) > actual.info-added-file && |
ed7158b4 | 174 | test_cmp_info expected.info-added-file actual.info-added-file |
e6fefa92 DK |
175 | " |
176 | ||
8b014d71 | 177 | test_expect_success 'info --url added-file' ' |
1364ff27 | 178 | test "$(cd gitwc; git svn info --url added-file)" \ |
05427b91 | 179 | = "$quoted_svnrepo/added-file" |
8b014d71 DK |
180 | ' |
181 | ||
e6fefa92 DK |
182 | test_expect_success 'info added-directory' " |
183 | mkdir gitwc/added-directory svnwc/added-directory && | |
e6fefa92 | 184 | touch gitwc/added-directory/.placeholder && |
18a82692 JN |
185 | ( |
186 | cd svnwc && | |
fd4ec4f2 JL |
187 | svn_cmd add added-directory > /dev/null |
188 | ) && | |
18a82692 JN |
189 | ( |
190 | cd gitwc && | |
fd4ec4f2 JL |
191 | git add added-directory |
192 | ) && | |
e6fefa92 DK |
193 | (cd svnwc; svn info added-directory) \ |
194 | > expected.info-added-directory && | |
1364ff27 | 195 | (cd gitwc; git svn info added-directory) \ |
e6fefa92 | 196 | > actual.info-added-directory && |
ed7158b4 | 197 | test_cmp_info expected.info-added-directory actual.info-added-directory |
e6fefa92 DK |
198 | " |
199 | ||
8b014d71 | 200 | test_expect_success 'info --url added-directory' ' |
1364ff27 | 201 | test "$(cd gitwc; git svn info --url added-directory)" \ |
05427b91 | 202 | = "$quoted_svnrepo/added-directory" |
8b014d71 DK |
203 | ' |
204 | ||
e6fefa92 | 205 | test_expect_success 'info added-symlink-file' " |
18a82692 JN |
206 | ( |
207 | cd gitwc && | |
e6fefa92 | 208 | ln -s added-file added-symlink-file && |
fd4ec4f2 JL |
209 | git add added-symlink-file |
210 | ) && | |
18a82692 JN |
211 | ( |
212 | cd svnwc && | |
e6fefa92 | 213 | ln -s added-file added-symlink-file && |
fd4ec4f2 JL |
214 | svn_cmd add added-symlink-file > /dev/null |
215 | ) && | |
e6fefa92 DK |
216 | (cd svnwc; svn info added-symlink-file) \ |
217 | > expected.info-added-symlink-file && | |
1364ff27 | 218 | (cd gitwc; git svn info added-symlink-file) \ |
e6fefa92 | 219 | > actual.info-added-symlink-file && |
ed7158b4 JH |
220 | test_cmp_info expected.info-added-symlink-file \ |
221 | actual.info-added-symlink-file | |
e6fefa92 DK |
222 | " |
223 | ||
8b014d71 | 224 | test_expect_success 'info --url added-symlink-file' ' |
1364ff27 | 225 | test "$(cd gitwc; git svn info --url added-symlink-file)" \ |
05427b91 | 226 | = "$quoted_svnrepo/added-symlink-file" |
8b014d71 DK |
227 | ' |
228 | ||
e6fefa92 | 229 | test_expect_success 'info added-symlink-directory' " |
18a82692 JN |
230 | ( |
231 | cd gitwc && | |
e6fefa92 | 232 | ln -s added-directory added-symlink-directory && |
fd4ec4f2 JL |
233 | git add added-symlink-directory |
234 | ) && | |
18a82692 JN |
235 | ( |
236 | cd svnwc && | |
e6fefa92 | 237 | ln -s added-directory added-symlink-directory && |
fd4ec4f2 JL |
238 | svn_cmd add added-symlink-directory > /dev/null |
239 | ) && | |
e6fefa92 DK |
240 | (cd svnwc; svn info added-symlink-directory) \ |
241 | > expected.info-added-symlink-directory && | |
1364ff27 | 242 | (cd gitwc; git svn info added-symlink-directory) \ |
e6fefa92 | 243 | > actual.info-added-symlink-directory && |
ed7158b4 JH |
244 | test_cmp_info expected.info-added-symlink-directory \ |
245 | actual.info-added-symlink-directory | |
e6fefa92 DK |
246 | " |
247 | ||
8b014d71 | 248 | test_expect_success 'info --url added-symlink-directory' ' |
1364ff27 | 249 | test "$(cd gitwc; git svn info --url added-symlink-directory)" \ |
05427b91 | 250 | = "$quoted_svnrepo/added-symlink-directory" |
8b014d71 DK |
251 | ' |
252 | ||
e6fefa92 | 253 | test_expect_success 'info deleted-file' " |
18a82692 JN |
254 | ( |
255 | cd gitwc && | |
fd4ec4f2 JL |
256 | git rm -f file > /dev/null |
257 | ) && | |
18a82692 JN |
258 | ( |
259 | cd svnwc && | |
fd4ec4f2 JL |
260 | svn_cmd rm --force file > /dev/null |
261 | ) && | |
ed7158b4 JH |
262 | (cd svnwc; svn info file) >expected.info-deleted-file && |
263 | (cd gitwc; git svn info file) >actual.info-deleted-file && | |
264 | test_cmp_info expected.info-deleted-file actual.info-deleted-file | |
e6fefa92 DK |
265 | " |
266 | ||
8b014d71 | 267 | test_expect_success 'info --url file (deleted)' ' |
1364ff27 | 268 | test "$(cd gitwc; git svn info --url file)" \ |
05427b91 | 269 | = "$quoted_svnrepo/file" |
8b014d71 DK |
270 | ' |
271 | ||
e6fefa92 | 272 | test_expect_success 'info deleted-directory' " |
18a82692 JN |
273 | ( |
274 | cd gitwc && | |
fd4ec4f2 JL |
275 | git rm -r -f directory > /dev/null |
276 | ) && | |
18a82692 JN |
277 | ( |
278 | cd svnwc && | |
fd4ec4f2 JL |
279 | svn_cmd rm --force directory > /dev/null |
280 | ) && | |
ed7158b4 JH |
281 | (cd svnwc; svn info directory) >expected.info-deleted-directory && |
282 | (cd gitwc; git svn info directory) >actual.info-deleted-directory && | |
283 | test_cmp_info expected.info-deleted-directory actual.info-deleted-directory | |
e6fefa92 DK |
284 | " |
285 | ||
8b014d71 | 286 | test_expect_success 'info --url directory (deleted)' ' |
1364ff27 | 287 | test "$(cd gitwc; git svn info --url directory)" \ |
05427b91 | 288 | = "$quoted_svnrepo/directory" |
8b014d71 DK |
289 | ' |
290 | ||
e6fefa92 | 291 | test_expect_success 'info deleted-symlink-file' " |
18a82692 JN |
292 | ( |
293 | cd gitwc && | |
fd4ec4f2 JL |
294 | git rm -f symlink-file > /dev/null |
295 | ) && | |
18a82692 JN |
296 | ( |
297 | cd svnwc && | |
fd4ec4f2 JL |
298 | svn_cmd rm --force symlink-file > /dev/null |
299 | ) && | |
ed7158b4 JH |
300 | (cd svnwc; svn info symlink-file) >expected.info-deleted-symlink-file && |
301 | (cd gitwc; git svn info symlink-file) >actual.info-deleted-symlink-file && | |
302 | test_cmp_info expected.info-deleted-symlink-file actual.info-deleted-symlink-file | |
e6fefa92 DK |
303 | " |
304 | ||
8b014d71 | 305 | test_expect_success 'info --url symlink-file (deleted)' ' |
1364ff27 | 306 | test "$(cd gitwc; git svn info --url symlink-file)" \ |
05427b91 | 307 | = "$quoted_svnrepo/symlink-file" |
8b014d71 DK |
308 | ' |
309 | ||
e6fefa92 | 310 | test_expect_success 'info deleted-symlink-directory' " |
18a82692 JN |
311 | ( |
312 | cd gitwc && | |
fd4ec4f2 JL |
313 | git rm -f symlink-directory > /dev/null |
314 | ) && | |
18a82692 JN |
315 | ( |
316 | cd svnwc && | |
fd4ec4f2 JL |
317 | svn_cmd rm --force symlink-directory > /dev/null |
318 | ) && | |
ed7158b4 JH |
319 | (cd svnwc; svn info symlink-directory) >expected.info-deleted-symlink-directory && |
320 | (cd gitwc; git svn info symlink-directory) >actual.info-deleted-symlink-directory && | |
321 | test_cmp_info expected.info-deleted-symlink-directory actual.info-deleted-symlink-directory | |
e6fefa92 DK |
322 | " |
323 | ||
8b014d71 | 324 | test_expect_success 'info --url symlink-directory (deleted)' ' |
1364ff27 | 325 | test "$(cd gitwc; git svn info --url symlink-directory)" \ |
05427b91 | 326 | = "$quoted_svnrepo/symlink-directory" |
8b014d71 DK |
327 | ' |
328 | ||
e6fefa92 DK |
329 | # NOTE: git does not have the concept of replaced objects, |
330 | # so we can't test for files in that state. | |
331 | ||
332 | test_expect_success 'info unknown-file' " | |
333 | echo two > gitwc/unknown-file && | |
1364ff27 | 334 | (cd gitwc; test_must_fail git svn info unknown-file) \ |
4457d4f7 TR |
335 | 2> actual.info-unknown-file && |
336 | grep unknown-file actual.info-unknown-file | |
e6fefa92 DK |
337 | " |
338 | ||
8b014d71 | 339 | test_expect_success 'info --url unknown-file' ' |
4457d4f7 | 340 | echo two > gitwc/unknown-file && |
1364ff27 | 341 | (cd gitwc; test_must_fail git svn info --url unknown-file) \ |
4457d4f7 TR |
342 | 2> actual.info-url-unknown-file && |
343 | grep unknown-file actual.info-url-unknown-file | |
8b014d71 DK |
344 | ' |
345 | ||
e6fefa92 DK |
346 | test_expect_success 'info unknown-directory' " |
347 | mkdir gitwc/unknown-directory svnwc/unknown-directory && | |
1364ff27 | 348 | (cd gitwc; test_must_fail git svn info unknown-directory) \ |
4457d4f7 TR |
349 | 2> actual.info-unknown-directory && |
350 | grep unknown-directory actual.info-unknown-directory | |
e6fefa92 DK |
351 | " |
352 | ||
8b014d71 | 353 | test_expect_success 'info --url unknown-directory' ' |
1364ff27 | 354 | (cd gitwc; test_must_fail git svn info --url unknown-directory) \ |
4457d4f7 TR |
355 | 2> actual.info-url-unknown-directory && |
356 | grep unknown-directory actual.info-url-unknown-directory | |
8b014d71 DK |
357 | ' |
358 | ||
e6fefa92 | 359 | test_expect_success 'info unknown-symlink-file' " |
18a82692 JN |
360 | ( |
361 | cd gitwc && | |
fd4ec4f2 JL |
362 | ln -s unknown-file unknown-symlink-file |
363 | ) && | |
1364ff27 | 364 | (cd gitwc; test_must_fail git svn info unknown-symlink-file) \ |
4457d4f7 TR |
365 | 2> actual.info-unknown-symlink-file && |
366 | grep unknown-symlink-file actual.info-unknown-symlink-file | |
e6fefa92 DK |
367 | " |
368 | ||
8b014d71 | 369 | test_expect_success 'info --url unknown-symlink-file' ' |
1364ff27 | 370 | (cd gitwc; test_must_fail git svn info --url unknown-symlink-file) \ |
4457d4f7 TR |
371 | 2> actual.info-url-unknown-symlink-file && |
372 | grep unknown-symlink-file actual.info-url-unknown-symlink-file | |
8b014d71 DK |
373 | ' |
374 | ||
e6fefa92 | 375 | test_expect_success 'info unknown-symlink-directory' " |
18a82692 JN |
376 | ( |
377 | cd gitwc && | |
fd4ec4f2 JL |
378 | ln -s unknown-directory unknown-symlink-directory |
379 | ) && | |
1364ff27 | 380 | (cd gitwc; test_must_fail git svn info unknown-symlink-directory) \ |
4457d4f7 TR |
381 | 2> actual.info-unknown-symlink-directory && |
382 | grep unknown-symlink-directory actual.info-unknown-symlink-directory | |
e6fefa92 DK |
383 | " |
384 | ||
8b014d71 | 385 | test_expect_success 'info --url unknown-symlink-directory' ' |
1364ff27 | 386 | (cd gitwc; test_must_fail git svn info --url unknown-symlink-directory) \ |
4457d4f7 TR |
387 | 2> actual.info-url-unknown-symlink-directory && |
388 | grep unknown-symlink-directory actual.info-url-unknown-symlink-directory | |
8b014d71 DK |
389 | ' |
390 | ||
e6fefa92 | 391 | test_done |