]> git.ipfire.org Git - thirdparty/git.git/blame - t/t9119-git-svn-info.sh
git svn info: make info relative to the current directory
[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
80828488 37test_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
66test_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 72test_expect_success 'info --url' '
80828488 73 test "$(cd gitwc; git-svn info --url)" = "$svnrepo"
8b014d71
DK
74 '
75
e6fefa92
DK
76test_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 82test_expect_success 'info --url .' '
80828488 83 test "$(cd gitwc; git-svn info --url .)" = "$svnrepo"
8b014d71
DK
84 '
85
e6fefa92
DK
86test_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 92test_expect_success 'info --url file' '
80828488 93 test "$(cd gitwc; git-svn info --url file)" = "$svnrepo/file"
8b014d71
DK
94 '
95
e6fefa92
DK
96test_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
102test_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 108test_expect_success 'info --url directory' '
80828488 109 test "$(cd gitwc; git-svn info --url directory)" = "$svnrepo/directory"
8b014d71
DK
110 '
111
e6fefa92
DK
112test_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 118test_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
123test_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 131test_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
136test_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 151test_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
156test_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 173test_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
178test_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 196test_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
201test_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 219test_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
229test_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 245test_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
250test_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 266test_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
271test_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 288test_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
293test_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 310test_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
318test_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 327test_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
333test_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 344test_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
351test_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 367test_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
374test_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 391test_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 398test_done