]>
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] |
da083d68 | 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 DK |
20 | |
21 | ptouch() { | |
22 | perl -w -e ' | |
23 | use strict; | |
d9042a0a | 24 | use POSIX qw(mktime); |
e6fefa92 | 25 | die "ptouch requires exactly 2 arguments" if @ARGV != 2; |
d9042a0a DK |
26 | my $text_last_updated = shift @ARGV; |
27 | my $git_file = shift @ARGV; | |
28 | die "\"$git_file\" does not exist" if ! -e $git_file; | |
29 | if ($text_last_updated | |
30 | =~ /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/) { | |
31 | my $mtime = mktime($6, $5, $4, $3, $2 - 1, $1 - 1900); | |
32 | my $atime = $mtime; | |
33 | utime $atime, $mtime, $git_file; | |
34 | } | |
da083d68 | 35 | ' "`svn_cmd info $2 | grep '^Text Last Updated:'`" "$1" |
e6fefa92 DK |
36 | } |
37 | ||
05427b91 TR |
38 | quoted_svnrepo="$(echo $svnrepo | sed 's/ /%20/')" |
39 | ||
80828488 | 40 | test_expect_success 'setup repository and import' ' |
e6fefa92 | 41 | mkdir info && |
18a82692 JN |
42 | ( |
43 | cd info && | |
44 | echo FIRST >A && | |
45 | echo one >file && | |
e6fefa92 DK |
46 | ln -s file symlink-file && |
47 | mkdir directory && | |
48 | touch directory/.placeholder && | |
49 | ln -s directory symlink-directory && | |
fd4ec4f2 JL |
50 | svn_cmd import -m "initial" . "$svnrepo" |
51 | ) && | |
da083d68 | 52 | svn_cmd co "$svnrepo" svnwc && |
18a82692 JN |
53 | ( |
54 | cd svnwc && | |
55 | echo foo >foo && | |
da083d68 ER |
56 | svn_cmd add foo && |
57 | svn_cmd commit -m "change outside directory" && | |
fd4ec4f2 JL |
58 | svn_cmd update |
59 | ) && | |
e6fefa92 | 60 | mkdir gitwc && |
18a82692 JN |
61 | ( |
62 | cd gitwc && | |
1364ff27 | 63 | git svn init "$svnrepo" && |
fd4ec4f2 JL |
64 | git svn fetch |
65 | ) && | |
8d5100c7 TR |
66 | ptouch gitwc/file svnwc/file && |
67 | ptouch gitwc/directory svnwc/directory && | |
68 | ptouch gitwc/symlink-file svnwc/symlink-file && | |
69 | ptouch gitwc/symlink-directory svnwc/symlink-directory | |
80828488 | 70 | ' |
e6fefa92 DK |
71 | |
72 | test_expect_success 'info' " | |
73 | (cd svnwc; svn info) > expected.info && | |
1364ff27 | 74 | (cd gitwc; git svn info) > actual.info && |
67214c85 | 75 | test_cmp expected.info actual.info |
e6fefa92 DK |
76 | " |
77 | ||
8b014d71 | 78 | test_expect_success 'info --url' ' |
1364ff27 | 79 | test "$(cd gitwc; git svn info --url)" = "$quoted_svnrepo" |
8b014d71 DK |
80 | ' |
81 | ||
e6fefa92 DK |
82 | test_expect_success 'info .' " |
83 | (cd svnwc; svn info .) > expected.info-dot && | |
1364ff27 | 84 | (cd gitwc; git svn info .) > actual.info-dot && |
67214c85 | 85 | test_cmp expected.info-dot actual.info-dot |
e6fefa92 DK |
86 | " |
87 | ||
8b014d71 | 88 | test_expect_success 'info --url .' ' |
1364ff27 | 89 | test "$(cd gitwc; git svn info --url .)" = "$quoted_svnrepo" |
8b014d71 DK |
90 | ' |
91 | ||
e6fefa92 DK |
92 | test_expect_success 'info file' " |
93 | (cd svnwc; svn info file) > expected.info-file && | |
1364ff27 | 94 | (cd gitwc; git svn info file) > actual.info-file && |
67214c85 | 95 | test_cmp expected.info-file actual.info-file |
e6fefa92 DK |
96 | " |
97 | ||
8b014d71 | 98 | test_expect_success 'info --url file' ' |
1364ff27 | 99 | test "$(cd gitwc; git svn info --url file)" = "$quoted_svnrepo/file" |
8b014d71 DK |
100 | ' |
101 | ||
e6fefa92 DK |
102 | test_expect_success 'info directory' " |
103 | (cd svnwc; svn info directory) > expected.info-directory && | |
1364ff27 | 104 | (cd gitwc; git svn info directory) > actual.info-directory && |
67214c85 | 105 | test_cmp expected.info-directory actual.info-directory |
e6fefa92 DK |
106 | " |
107 | ||
edde9112 TR |
108 | test_expect_success 'info inside directory' " |
109 | (cd svnwc/directory; svn info) > expected.info-inside-directory && | |
1364ff27 | 110 | (cd gitwc/directory; git svn info) > actual.info-inside-directory && |
edde9112 TR |
111 | test_cmp expected.info-inside-directory actual.info-inside-directory |
112 | " | |
113 | ||
8b014d71 | 114 | test_expect_success 'info --url directory' ' |
1364ff27 | 115 | test "$(cd gitwc; git svn info --url directory)" = "$quoted_svnrepo/directory" |
8b014d71 DK |
116 | ' |
117 | ||
e6fefa92 DK |
118 | test_expect_success 'info symlink-file' " |
119 | (cd svnwc; svn info symlink-file) > expected.info-symlink-file && | |
1364ff27 | 120 | (cd gitwc; git svn info symlink-file) > actual.info-symlink-file && |
67214c85 | 121 | test_cmp expected.info-symlink-file actual.info-symlink-file |
e6fefa92 DK |
122 | " |
123 | ||
8b014d71 | 124 | test_expect_success 'info --url symlink-file' ' |
1364ff27 | 125 | test "$(cd gitwc; git svn info --url symlink-file)" \ |
05427b91 | 126 | = "$quoted_svnrepo/symlink-file" |
8b014d71 DK |
127 | ' |
128 | ||
e6fefa92 DK |
129 | test_expect_success 'info symlink-directory' " |
130 | (cd svnwc; svn info symlink-directory) \ | |
131 | > expected.info-symlink-directory && | |
1364ff27 | 132 | (cd gitwc; git svn info symlink-directory) \ |
e6fefa92 | 133 | > actual.info-symlink-directory && |
67214c85 | 134 | test_cmp expected.info-symlink-directory actual.info-symlink-directory |
e6fefa92 DK |
135 | " |
136 | ||
8b014d71 | 137 | test_expect_success 'info --url symlink-directory' ' |
1364ff27 | 138 | test "$(cd gitwc; git svn info --url symlink-directory)" \ |
05427b91 | 139 | = "$quoted_svnrepo/symlink-directory" |
8b014d71 DK |
140 | ' |
141 | ||
e6fefa92 DK |
142 | test_expect_success 'info added-file' " |
143 | echo two > gitwc/added-file && | |
18a82692 JN |
144 | ( |
145 | cd gitwc && | |
fd4ec4f2 JL |
146 | git add added-file |
147 | ) && | |
e6fefa92 DK |
148 | cp gitwc/added-file svnwc/added-file && |
149 | ptouch gitwc/added-file svnwc/added-file && | |
18a82692 JN |
150 | ( |
151 | cd svnwc && | |
fd4ec4f2 JL |
152 | svn_cmd add added-file > /dev/null |
153 | ) && | |
e6fefa92 | 154 | (cd svnwc; svn info added-file) > expected.info-added-file && |
1364ff27 | 155 | (cd gitwc; git svn info added-file) > actual.info-added-file && |
67214c85 | 156 | test_cmp expected.info-added-file actual.info-added-file |
e6fefa92 DK |
157 | " |
158 | ||
8b014d71 | 159 | test_expect_success 'info --url added-file' ' |
1364ff27 | 160 | test "$(cd gitwc; git svn info --url added-file)" \ |
05427b91 | 161 | = "$quoted_svnrepo/added-file" |
8b014d71 DK |
162 | ' |
163 | ||
e6fefa92 DK |
164 | test_expect_success 'info added-directory' " |
165 | mkdir gitwc/added-directory svnwc/added-directory && | |
166 | ptouch gitwc/added-directory svnwc/added-directory && | |
167 | touch gitwc/added-directory/.placeholder && | |
18a82692 JN |
168 | ( |
169 | cd svnwc && | |
fd4ec4f2 JL |
170 | svn_cmd add added-directory > /dev/null |
171 | ) && | |
18a82692 JN |
172 | ( |
173 | cd gitwc && | |
fd4ec4f2 JL |
174 | git add added-directory |
175 | ) && | |
e6fefa92 DK |
176 | (cd svnwc; svn info added-directory) \ |
177 | > expected.info-added-directory && | |
1364ff27 | 178 | (cd gitwc; git svn info added-directory) \ |
e6fefa92 | 179 | > actual.info-added-directory && |
67214c85 | 180 | test_cmp expected.info-added-directory actual.info-added-directory |
e6fefa92 DK |
181 | " |
182 | ||
8b014d71 | 183 | test_expect_success 'info --url added-directory' ' |
1364ff27 | 184 | test "$(cd gitwc; git svn info --url added-directory)" \ |
05427b91 | 185 | = "$quoted_svnrepo/added-directory" |
8b014d71 DK |
186 | ' |
187 | ||
e6fefa92 | 188 | test_expect_success 'info added-symlink-file' " |
18a82692 JN |
189 | ( |
190 | cd gitwc && | |
e6fefa92 | 191 | ln -s added-file added-symlink-file && |
fd4ec4f2 JL |
192 | git add added-symlink-file |
193 | ) && | |
18a82692 JN |
194 | ( |
195 | cd svnwc && | |
e6fefa92 | 196 | ln -s added-file added-symlink-file && |
fd4ec4f2 JL |
197 | svn_cmd add added-symlink-file > /dev/null |
198 | ) && | |
e6fefa92 DK |
199 | ptouch gitwc/added-symlink-file svnwc/added-symlink-file && |
200 | (cd svnwc; svn info added-symlink-file) \ | |
201 | > expected.info-added-symlink-file && | |
1364ff27 | 202 | (cd gitwc; git svn info added-symlink-file) \ |
e6fefa92 | 203 | > actual.info-added-symlink-file && |
67214c85 | 204 | test_cmp expected.info-added-symlink-file \ |
e6fefa92 DK |
205 | actual.info-added-symlink-file |
206 | " | |
207 | ||
8b014d71 | 208 | test_expect_success 'info --url added-symlink-file' ' |
1364ff27 | 209 | test "$(cd gitwc; git svn info --url added-symlink-file)" \ |
05427b91 | 210 | = "$quoted_svnrepo/added-symlink-file" |
8b014d71 DK |
211 | ' |
212 | ||
e6fefa92 | 213 | test_expect_success 'info added-symlink-directory' " |
18a82692 JN |
214 | ( |
215 | cd gitwc && | |
e6fefa92 | 216 | ln -s added-directory added-symlink-directory && |
fd4ec4f2 JL |
217 | git add added-symlink-directory |
218 | ) && | |
18a82692 JN |
219 | ( |
220 | cd svnwc && | |
e6fefa92 | 221 | ln -s added-directory added-symlink-directory && |
fd4ec4f2 JL |
222 | svn_cmd add added-symlink-directory > /dev/null |
223 | ) && | |
e6fefa92 DK |
224 | ptouch gitwc/added-symlink-directory svnwc/added-symlink-directory && |
225 | (cd svnwc; svn info added-symlink-directory) \ | |
226 | > expected.info-added-symlink-directory && | |
1364ff27 | 227 | (cd gitwc; git svn info added-symlink-directory) \ |
e6fefa92 | 228 | > actual.info-added-symlink-directory && |
67214c85 | 229 | test_cmp expected.info-added-symlink-directory \ |
e6fefa92 DK |
230 | actual.info-added-symlink-directory |
231 | " | |
232 | ||
8b014d71 | 233 | test_expect_success 'info --url added-symlink-directory' ' |
1364ff27 | 234 | test "$(cd gitwc; git svn info --url added-symlink-directory)" \ |
05427b91 | 235 | = "$quoted_svnrepo/added-symlink-directory" |
8b014d71 DK |
236 | ' |
237 | ||
e6fefa92 DK |
238 | # The next few tests replace the "Text Last Updated" value with a |
239 | # placeholder since git doesn't have a way to know the date that a | |
240 | # now-deleted file was last checked out locally. Internally it | |
241 | # simply reuses the Last Changed Date. | |
242 | ||
243 | test_expect_success 'info deleted-file' " | |
18a82692 JN |
244 | ( |
245 | cd gitwc && | |
fd4ec4f2 JL |
246 | git rm -f file > /dev/null |
247 | ) && | |
18a82692 JN |
248 | ( |
249 | cd svnwc && | |
fd4ec4f2 JL |
250 | svn_cmd rm --force file > /dev/null |
251 | ) && | |
e6fefa92 DK |
252 | (cd svnwc; svn info file) | |
253 | sed -e 's/^\(Text Last Updated:\).*/\1 TEXT-LAST-UPDATED-STRING/' \ | |
254 | > expected.info-deleted-file && | |
1364ff27 | 255 | (cd gitwc; git svn info file) | |
e6fefa92 DK |
256 | sed -e 's/^\(Text Last Updated:\).*/\1 TEXT-LAST-UPDATED-STRING/' \ |
257 | > actual.info-deleted-file && | |
67214c85 | 258 | test_cmp expected.info-deleted-file actual.info-deleted-file |
e6fefa92 DK |
259 | " |
260 | ||
8b014d71 | 261 | test_expect_success 'info --url file (deleted)' ' |
1364ff27 | 262 | test "$(cd gitwc; git svn info --url file)" \ |
05427b91 | 263 | = "$quoted_svnrepo/file" |
8b014d71 DK |
264 | ' |
265 | ||
e6fefa92 | 266 | test_expect_success 'info deleted-directory' " |
18a82692 JN |
267 | ( |
268 | cd gitwc && | |
fd4ec4f2 JL |
269 | git rm -r -f directory > /dev/null |
270 | ) && | |
18a82692 JN |
271 | ( |
272 | cd svnwc && | |
fd4ec4f2 JL |
273 | svn_cmd rm --force directory > /dev/null |
274 | ) && | |
e6fefa92 DK |
275 | (cd svnwc; svn info directory) | |
276 | sed -e 's/^\(Text Last Updated:\).*/\1 TEXT-LAST-UPDATED-STRING/' \ | |
277 | > expected.info-deleted-directory && | |
1364ff27 | 278 | (cd gitwc; git svn info directory) | |
e6fefa92 DK |
279 | sed -e 's/^\(Text Last Updated:\).*/\1 TEXT-LAST-UPDATED-STRING/' \ |
280 | > actual.info-deleted-directory && | |
67214c85 | 281 | test_cmp expected.info-deleted-directory actual.info-deleted-directory |
e6fefa92 DK |
282 | " |
283 | ||
8b014d71 | 284 | test_expect_success 'info --url directory (deleted)' ' |
1364ff27 | 285 | test "$(cd gitwc; git svn info --url directory)" \ |
05427b91 | 286 | = "$quoted_svnrepo/directory" |
8b014d71 DK |
287 | ' |
288 | ||
e6fefa92 | 289 | test_expect_success 'info deleted-symlink-file' " |
18a82692 JN |
290 | ( |
291 | cd gitwc && | |
fd4ec4f2 JL |
292 | git rm -f symlink-file > /dev/null |
293 | ) && | |
18a82692 JN |
294 | ( |
295 | cd svnwc && | |
fd4ec4f2 JL |
296 | svn_cmd rm --force symlink-file > /dev/null |
297 | ) && | |
e6fefa92 DK |
298 | (cd svnwc; svn info symlink-file) | |
299 | sed -e 's/^\(Text Last Updated:\).*/\1 TEXT-LAST-UPDATED-STRING/' \ | |
300 | > expected.info-deleted-symlink-file && | |
1364ff27 | 301 | (cd gitwc; git svn info symlink-file) | |
e6fefa92 DK |
302 | sed -e 's/^\(Text Last Updated:\).*/\1 TEXT-LAST-UPDATED-STRING/' \ |
303 | > actual.info-deleted-symlink-file && | |
67214c85 | 304 | test_cmp expected.info-deleted-symlink-file \ |
e6fefa92 DK |
305 | actual.info-deleted-symlink-file |
306 | " | |
307 | ||
8b014d71 | 308 | test_expect_success 'info --url symlink-file (deleted)' ' |
1364ff27 | 309 | test "$(cd gitwc; git svn info --url symlink-file)" \ |
05427b91 | 310 | = "$quoted_svnrepo/symlink-file" |
8b014d71 DK |
311 | ' |
312 | ||
e6fefa92 | 313 | test_expect_success 'info deleted-symlink-directory' " |
18a82692 JN |
314 | ( |
315 | cd gitwc && | |
fd4ec4f2 JL |
316 | git rm -f symlink-directory > /dev/null |
317 | ) && | |
18a82692 JN |
318 | ( |
319 | cd svnwc && | |
fd4ec4f2 JL |
320 | svn_cmd rm --force symlink-directory > /dev/null |
321 | ) && | |
e6fefa92 DK |
322 | (cd svnwc; svn info symlink-directory) | |
323 | sed -e 's/^\(Text Last Updated:\).*/\1 TEXT-LAST-UPDATED-STRING/' \ | |
324 | > expected.info-deleted-symlink-directory && | |
1364ff27 | 325 | (cd gitwc; git svn info symlink-directory) | |
e6fefa92 DK |
326 | sed -e 's/^\(Text Last Updated:\).*/\1 TEXT-LAST-UPDATED-STRING/' \ |
327 | > actual.info-deleted-symlink-directory && | |
67214c85 | 328 | test_cmp expected.info-deleted-symlink-directory \ |
e6fefa92 DK |
329 | actual.info-deleted-symlink-directory |
330 | " | |
331 | ||
8b014d71 | 332 | test_expect_success 'info --url symlink-directory (deleted)' ' |
1364ff27 | 333 | test "$(cd gitwc; git svn info --url symlink-directory)" \ |
05427b91 | 334 | = "$quoted_svnrepo/symlink-directory" |
8b014d71 DK |
335 | ' |
336 | ||
e6fefa92 DK |
337 | # NOTE: git does not have the concept of replaced objects, |
338 | # so we can't test for files in that state. | |
339 | ||
340 | test_expect_success 'info unknown-file' " | |
341 | echo two > gitwc/unknown-file && | |
1364ff27 | 342 | (cd gitwc; test_must_fail git svn info unknown-file) \ |
4457d4f7 TR |
343 | 2> actual.info-unknown-file && |
344 | grep unknown-file actual.info-unknown-file | |
e6fefa92 DK |
345 | " |
346 | ||
8b014d71 | 347 | test_expect_success 'info --url unknown-file' ' |
4457d4f7 | 348 | echo two > gitwc/unknown-file && |
1364ff27 | 349 | (cd gitwc; test_must_fail git svn info --url unknown-file) \ |
4457d4f7 TR |
350 | 2> actual.info-url-unknown-file && |
351 | grep unknown-file actual.info-url-unknown-file | |
8b014d71 DK |
352 | ' |
353 | ||
e6fefa92 DK |
354 | test_expect_success 'info unknown-directory' " |
355 | mkdir gitwc/unknown-directory svnwc/unknown-directory && | |
1364ff27 | 356 | (cd gitwc; test_must_fail git svn info unknown-directory) \ |
4457d4f7 TR |
357 | 2> actual.info-unknown-directory && |
358 | grep unknown-directory actual.info-unknown-directory | |
e6fefa92 DK |
359 | " |
360 | ||
8b014d71 | 361 | test_expect_success 'info --url unknown-directory' ' |
1364ff27 | 362 | (cd gitwc; test_must_fail git svn info --url unknown-directory) \ |
4457d4f7 TR |
363 | 2> actual.info-url-unknown-directory && |
364 | grep unknown-directory actual.info-url-unknown-directory | |
8b014d71 DK |
365 | ' |
366 | ||
e6fefa92 | 367 | test_expect_success 'info unknown-symlink-file' " |
18a82692 JN |
368 | ( |
369 | cd gitwc && | |
fd4ec4f2 JL |
370 | ln -s unknown-file unknown-symlink-file |
371 | ) && | |
1364ff27 | 372 | (cd gitwc; test_must_fail git svn info unknown-symlink-file) \ |
4457d4f7 TR |
373 | 2> actual.info-unknown-symlink-file && |
374 | grep unknown-symlink-file actual.info-unknown-symlink-file | |
e6fefa92 DK |
375 | " |
376 | ||
8b014d71 | 377 | test_expect_success 'info --url unknown-symlink-file' ' |
1364ff27 | 378 | (cd gitwc; test_must_fail git svn info --url unknown-symlink-file) \ |
4457d4f7 TR |
379 | 2> actual.info-url-unknown-symlink-file && |
380 | grep unknown-symlink-file actual.info-url-unknown-symlink-file | |
8b014d71 DK |
381 | ' |
382 | ||
e6fefa92 | 383 | test_expect_success 'info unknown-symlink-directory' " |
18a82692 JN |
384 | ( |
385 | cd gitwc && | |
fd4ec4f2 JL |
386 | ln -s unknown-directory unknown-symlink-directory |
387 | ) && | |
1364ff27 | 388 | (cd gitwc; test_must_fail git svn info unknown-symlink-directory) \ |
4457d4f7 TR |
389 | 2> actual.info-unknown-symlink-directory && |
390 | grep unknown-symlink-directory actual.info-unknown-symlink-directory | |
e6fefa92 DK |
391 | " |
392 | ||
8b014d71 | 393 | test_expect_success 'info --url unknown-symlink-directory' ' |
1364ff27 | 394 | (cd gitwc; test_must_fail git svn info --url unknown-symlink-directory) \ |
4457d4f7 TR |
395 | 2> actual.info-url-unknown-symlink-directory && |
396 | grep unknown-symlink-directory actual.info-url-unknown-symlink-directory | |
8b014d71 DK |
397 | ' |
398 | ||
e6fefa92 | 399 | test_done |