3 # Copyright (c) 2007 David D. Kilzer
5 test_description
='git-svn info'
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'`
15 say
"skipping svn-info test (SVN version: $v not supported)"
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);
32 utime $atime, $mtime, $git_file;
34 ' "`svn info $2 | grep '^Text Last Updated:'`" "$1"
37 test_expect_success
'setup repository and import' '
42 ln -s file symlink-file &&
44 touch directory/.placeholder &&
45 ln -s directory symlink-directory &&
46 svn import -m "initial" . "$svnrepo" &&
48 svn co "$svnrepo" svnwc &&
52 svn commit -m "change outside directory" &&
57 git-svn init "$svnrepo" &&
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
66 test_expect_success
'info' "
67 (cd svnwc; svn info) > expected.info &&
68 (cd gitwc; git-svn info) > actual.info &&
69 test_cmp expected.info actual.info
72 test_expect_success
'info --url' '
73 test "$(cd gitwc; git-svn info --url)" = "$svnrepo"
76 test_expect_success
'info .' "
77 (cd svnwc; svn info .) > expected.info-dot &&
78 (cd gitwc; git-svn info .) > actual.info-dot &&
79 test_cmp expected.info-dot actual.info-dot
82 test_expect_success
'info --url .' '
83 test "$(cd gitwc; git-svn info --url .)" = "$svnrepo"
86 test_expect_success
'info file' "
87 (cd svnwc; svn info file) > expected.info-file &&
88 (cd gitwc; git-svn info file) > actual.info-file &&
89 test_cmp expected.info-file actual.info-file
92 test_expect_success
'info --url file' '
93 test "$(cd gitwc; git-svn info --url file)" = "$svnrepo/file"
96 test_expect_success
'info directory' "
97 (cd svnwc; svn info directory) > expected.info-directory &&
98 (cd gitwc; git-svn info directory) > actual.info-directory &&
99 test_cmp expected.info-directory actual.info-directory
102 test_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
108 test_expect_success
'info --url directory' '
109 test "$(cd gitwc; git-svn info --url directory)" = "$svnrepo/directory"
112 test_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 &&
115 test_cmp expected.info-symlink-file actual.info-symlink-file
118 test_expect_success
'info --url symlink-file' '
119 test "$(cd gitwc; git-svn info --url symlink-file)" \
120 = "$svnrepo/symlink-file"
123 test_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 &&
128 test_cmp expected.info-symlink-directory actual.info-symlink-directory
131 test_expect_success
'info --url symlink-directory' '
132 test "$(cd gitwc; git-svn info --url symlink-directory)" \
133 = "$svnrepo/symlink-directory"
136 test_expect_success
'info added-file' "
137 echo two > gitwc/added-file &&
139 git add added-file &&
141 cp gitwc/added-file svnwc/added-file &&
142 ptouch gitwc/added-file svnwc/added-file &&
144 svn add added-file > /dev/null &&
146 (cd svnwc; svn info added-file) > expected.info-added-file &&
147 (cd gitwc; git-svn info added-file) > actual.info-added-file &&
148 test_cmp expected.info-added-file actual.info-added-file
151 test_expect_success
'info --url added-file' '
152 test "$(cd gitwc; git-svn info --url added-file)" \
153 = "$svnrepo/added-file"
156 test_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 &&
161 svn add added-directory > /dev/null &&
164 git add added-directory &&
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 &&
170 test_cmp expected.info-added-directory actual.info-added-directory
173 test_expect_success
'info --url added-directory' '
174 test "$(cd gitwc; git-svn info --url added-directory)" \
175 = "$svnrepo/added-directory"
178 test_expect_success
'info added-symlink-file' "
180 ln -s added-file added-symlink-file &&
181 git add added-symlink-file &&
184 ln -s added-file added-symlink-file &&
185 svn add added-symlink-file > /dev/null &&
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 &&
192 test_cmp expected.info-added-symlink-file \
193 actual.info-added-symlink-file
196 test_expect_success
'info --url added-symlink-file' '
197 test "$(cd gitwc; git-svn info --url added-symlink-file)" \
198 = "$svnrepo/added-symlink-file"
201 test_expect_success
'info added-symlink-directory' "
203 ln -s added-directory added-symlink-directory &&
204 git add added-symlink-directory &&
207 ln -s added-directory added-symlink-directory &&
208 svn add added-symlink-directory > /dev/null &&
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 &&
215 test_cmp expected.info-added-symlink-directory \
216 actual.info-added-symlink-directory
219 test_expect_success
'info --url added-symlink-directory' '
220 test "$(cd gitwc; git-svn info --url added-symlink-directory)" \
221 = "$svnrepo/added-symlink-directory"
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.
229 test_expect_success
'info deleted-file' "
231 git rm -f file > /dev/null &&
234 svn rm --force file > /dev/null &&
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 &&
242 test_cmp expected.info-deleted-file actual.info-deleted-file
245 test_expect_success
'info --url file (deleted)' '
246 test "$(cd gitwc; git-svn info --url file)" \
250 test_expect_success
'info deleted-directory' "
252 git rm -r -f directory > /dev/null &&
255 svn rm --force directory > /dev/null &&
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 &&
263 test_cmp expected.info-deleted-directory actual.info-deleted-directory
266 test_expect_success
'info --url directory (deleted)' '
267 test "$(cd gitwc; git-svn info --url directory)" \
268 = "$svnrepo/directory"
271 test_expect_success
'info deleted-symlink-file' "
273 git rm -f symlink-file > /dev/null &&
276 svn rm --force symlink-file > /dev/null &&
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 &&
284 test_cmp expected.info-deleted-symlink-file \
285 actual.info-deleted-symlink-file
288 test_expect_success
'info --url symlink-file (deleted)' '
289 test "$(cd gitwc; git-svn info --url symlink-file)" \
290 = "$svnrepo/symlink-file"
293 test_expect_success
'info deleted-symlink-directory' "
295 git rm -f symlink-directory > /dev/null &&
298 svn rm --force symlink-directory > /dev/null &&
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 &&
306 test_cmp expected.info-deleted-symlink-directory \
307 actual.info-deleted-symlink-directory
310 test_expect_success
'info --url symlink-directory (deleted)' '
311 test "$(cd gitwc; git-svn info --url symlink-directory)" \
312 = "$svnrepo/symlink-directory"
315 # NOTE: git does not have the concept of replaced objects,
316 # so we can't test for files in that state.
318 test_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 &&
324 test_cmp expected.info-unknown-file actual.info-unknown-file
327 test_expect_success
'info --url unknown-file' '
328 test -z "$(cd gitwc; git-svn info --url unknown-file \
329 2> ../actual.info--url-unknown-file)" &&
330 test_cmp expected.info-unknown-file actual.info--url-unknown-file
333 test_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 &&
341 test_cmp expected.info-unknown-directory actual.info-unknown-directory
344 test_expect_success
'info --url unknown-directory' '
345 test -z "$(cd gitwc; git-svn info --url unknown-directory \
346 2> ../actual.info--url-unknown-directory)" &&
347 test_cmp expected.info-unknown-directory \
348 actual.info--url-unknown-directory
351 test_expect_success
'info unknown-symlink-file' "
353 ln -s unknown-file unknown-symlink-file &&
356 ln -s unknown-file unknown-symlink-file &&
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 &&
363 test_cmp expected.info-unknown-symlink-file \
364 actual.info-unknown-symlink-file
367 test_expect_success
'info --url unknown-symlink-file' '
368 test -z "$(cd gitwc; git-svn info --url unknown-symlink-file \
369 2> ../actual.info--url-unknown-symlink-file)" &&
370 test_cmp expected.info-unknown-symlink-file \
371 actual.info--url-unknown-symlink-file
374 test_expect_success
'info unknown-symlink-directory' "
376 ln -s unknown-directory unknown-symlink-directory &&
379 ln -s unknown-directory unknown-symlink-directory &&
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 &&
387 test_cmp expected.info-unknown-symlink-directory \
388 actual.info-unknown-symlink-directory
391 test_expect_success
'info --url unknown-symlink-directory' '
392 test -z "$(cd gitwc; git-svn info --url unknown-symlink-directory \
393 2> ../actual.info--url-unknown-symlink-directory)" &&
394 test_cmp expected.info-unknown-symlink-directory \
395 actual.info--url-unknown-symlink-directory