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