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