]> git.ipfire.org Git - thirdparty/git.git/blame - t/t9119-git-svn-info.sh
Git 1.7.3
[thirdparty/git.git] / t / t9119-git-svn-info.sh
CommitLineData
e6fefa92
DK
1#!/bin/sh
2#
3# Copyright (c) 2007 David D. Kilzer
4
1364ff27 5test_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 11v=`svn_cmd --version | sed -n -e 's/^svn, version \(1\.[0-9]*\.[0-9]*\).*$/\1/p'`
80828488 12case $v in
3acae29e 131.[456].*)
80828488
EW
14 ;;
15*)
fadb5156 16 skip_all="skipping svn-info test (SVN version: $v not supported)"
80828488
EW
17 test_done
18 ;;
19esac
e6fefa92
DK
20
21ptouch() {
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
38quoted_svnrepo="$(echo $svnrepo | sed 's/ /%20/')"
39
80828488 40test_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
72test_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 78test_expect_success 'info --url' '
1364ff27 79 test "$(cd gitwc; git svn info --url)" = "$quoted_svnrepo"
8b014d71
DK
80 '
81
e6fefa92
DK
82test_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 88test_expect_success 'info --url .' '
1364ff27 89 test "$(cd gitwc; git svn info --url .)" = "$quoted_svnrepo"
8b014d71
DK
90 '
91
e6fefa92
DK
92test_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 98test_expect_success 'info --url file' '
1364ff27 99 test "$(cd gitwc; git svn info --url file)" = "$quoted_svnrepo/file"
8b014d71
DK
100 '
101
e6fefa92
DK
102test_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
108test_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 114test_expect_success 'info --url directory' '
1364ff27 115 test "$(cd gitwc; git svn info --url directory)" = "$quoted_svnrepo/directory"
8b014d71
DK
116 '
117
e6fefa92
DK
118test_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 124test_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
129test_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 137test_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
142test_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 159test_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
164test_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 183test_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 188test_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 208test_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 213test_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 233test_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
243test_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 261test_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 266test_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 284test_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 289test_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 308test_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 313test_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 332test_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
340test_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 347test_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
354test_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 361test_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 367test_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 377test_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 383test_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 393test_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 399test_done