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