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