git svn info: tests: fix ptouch argument order in setup
[git/dkf.git] / t / t9119-git-svn-info.sh
blob821507d416b5e4d386248fb21b907bf5cd9895a4
1 #!/bin/sh
3 # Copyright (c) 2007 David D. Kilzer
5 test_description='git-svn info'
7 . ./lib-git-svn.sh
9 # Tested with: svn, version 1.4.4 (r25188)
10 v=`svn --version | sed -n -e 's/^svn, version \(1\.[0-9]*\.[0-9]*\).*$/\1/p'`
11 case $v in
12 1.[45].*)
15 say "skipping svn-info test (SVN version: $v not supported)"
16 test_done
18 esac
20 ptouch() {
21 perl -w -e '
22 use strict;
23 use POSIX qw(mktime);
24 die "ptouch requires exactly 2 arguments" if @ARGV != 2;
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;
34 ' "`svn info $2 | grep '^Text Last Updated:'`" "$1"
37 test_expect_success 'setup repository and import' '
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 &&
46 svn import -m "initial" . "$svnrepo" &&
47 cd .. &&
48 mkdir gitwc &&
49 cd gitwc &&
50 git-svn init "$svnrepo" &&
51 git-svn fetch &&
52 cd .. &&
53 svn co "$svnrepo" svnwc &&
54 ptouch gitwc/file svnwc/file &&
55 ptouch gitwc/directory svnwc/directory &&
56 ptouch gitwc/symlink-file svnwc/symlink-file &&
57 ptouch gitwc/symlink-directory svnwc/symlink-directory
60 test_expect_success 'info' "
61 (cd svnwc; svn info) > expected.info &&
62 (cd gitwc; git-svn info) > actual.info &&
63 test_cmp expected.info actual.info
66 test_expect_success 'info --url' '
67 test "$(cd gitwc; git-svn info --url)" = "$svnrepo"
70 test_expect_success 'info .' "
71 (cd svnwc; svn info .) > expected.info-dot &&
72 (cd gitwc; git-svn info .) > actual.info-dot &&
73 test_cmp expected.info-dot actual.info-dot
76 test_expect_success 'info --url .' '
77 test "$(cd gitwc; git-svn info --url .)" = "$svnrepo"
80 test_expect_success 'info file' "
81 (cd svnwc; svn info file) > expected.info-file &&
82 (cd gitwc; git-svn info file) > actual.info-file &&
83 test_cmp expected.info-file actual.info-file
86 test_expect_success 'info --url file' '
87 test "$(cd gitwc; git-svn info --url file)" = "$svnrepo/file"
90 test_expect_success 'info directory' "
91 (cd svnwc; svn info directory) > expected.info-directory &&
92 (cd gitwc; git-svn info directory) > actual.info-directory &&
93 test_cmp expected.info-directory actual.info-directory
96 test_expect_success 'info --url directory' '
97 test "$(cd gitwc; git-svn info --url directory)" = "$svnrepo/directory"
100 test_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 &&
103 test_cmp expected.info-symlink-file actual.info-symlink-file
106 test_expect_success 'info --url symlink-file' '
107 test "$(cd gitwc; git-svn info --url symlink-file)" \
108 = "$svnrepo/symlink-file"
111 test_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 &&
116 test_cmp expected.info-symlink-directory actual.info-symlink-directory
119 test_expect_success 'info --url symlink-directory' '
120 test "$(cd gitwc; git-svn info --url symlink-directory)" \
121 = "$svnrepo/symlink-directory"
124 test_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 &&
136 test_cmp expected.info-added-file actual.info-added-file
139 test_expect_success 'info --url added-file' '
140 test "$(cd gitwc; git-svn info --url added-file)" \
141 = "$svnrepo/added-file"
144 test_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 &&
158 test_cmp expected.info-added-directory actual.info-added-directory
161 test_expect_success 'info --url added-directory' '
162 test "$(cd gitwc; git-svn info --url added-directory)" \
163 = "$svnrepo/added-directory"
166 test_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 &&
180 test_cmp expected.info-added-symlink-file \
181 actual.info-added-symlink-file
184 test_expect_success 'info --url added-symlink-file' '
185 test "$(cd gitwc; git-svn info --url added-symlink-file)" \
186 = "$svnrepo/added-symlink-file"
189 test_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 &&
203 test_cmp expected.info-added-symlink-directory \
204 actual.info-added-symlink-directory
207 test_expect_success 'info --url added-symlink-directory' '
208 test "$(cd gitwc; git-svn info --url added-symlink-directory)" \
209 = "$svnrepo/added-symlink-directory"
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.
217 test_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 &&
230 test_cmp expected.info-deleted-file actual.info-deleted-file
233 test_expect_success 'info --url file (deleted)' '
234 test "$(cd gitwc; git-svn info --url file)" \
235 = "$svnrepo/file"
238 test_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 &&
251 test_cmp expected.info-deleted-directory actual.info-deleted-directory
254 test_expect_success 'info --url directory (deleted)' '
255 test "$(cd gitwc; git-svn info --url directory)" \
256 = "$svnrepo/directory"
259 test_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 &&
272 test_cmp expected.info-deleted-symlink-file \
273 actual.info-deleted-symlink-file
276 test_expect_success 'info --url symlink-file (deleted)' '
277 test "$(cd gitwc; git-svn info --url symlink-file)" \
278 = "$svnrepo/symlink-file"
281 test_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 &&
294 test_cmp expected.info-deleted-symlink-directory \
295 actual.info-deleted-symlink-directory
298 test_expect_success 'info --url symlink-directory (deleted)' '
299 test "$(cd gitwc; git-svn info --url symlink-directory)" \
300 = "$svnrepo/symlink-directory"
303 # NOTE: git does not have the concept of replaced objects,
304 # so we can't test for files in that state.
306 test_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 &&
312 test_cmp expected.info-unknown-file actual.info-unknown-file
315 test_expect_success 'info --url unknown-file' '
316 test -z "$(cd gitwc; git-svn info --url unknown-file \
317 2> ../actual.info--url-unknown-file)" &&
318 test_cmp expected.info-unknown-file actual.info--url-unknown-file
321 test_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 &&
329 test_cmp expected.info-unknown-directory actual.info-unknown-directory
332 test_expect_success 'info --url unknown-directory' '
333 test -z "$(cd gitwc; git-svn info --url unknown-directory \
334 2> ../actual.info--url-unknown-directory)" &&
335 test_cmp expected.info-unknown-directory \
336 actual.info--url-unknown-directory
339 test_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 &&
351 test_cmp expected.info-unknown-symlink-file \
352 actual.info-unknown-symlink-file
355 test_expect_success 'info --url unknown-symlink-file' '
356 test -z "$(cd gitwc; git-svn info --url unknown-symlink-file \
357 2> ../actual.info--url-unknown-symlink-file)" &&
358 test_cmp expected.info-unknown-symlink-file \
359 actual.info--url-unknown-symlink-file
362 test_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 &&
375 test_cmp expected.info-unknown-symlink-directory \
376 actual.info-unknown-symlink-directory
379 test_expect_success 'info --url unknown-symlink-directory' '
380 test -z "$(cd gitwc; git-svn info --url unknown-symlink-directory \
381 2> ../actual.info--url-unknown-symlink-directory)" &&
382 test_cmp expected.info-unknown-symlink-directory \
383 actual.info--url-unknown-symlink-directory
386 test_done