]>
Commit | Line | Data |
---|---|---|
e6fefa92 DK |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2007 David D. Kilzer | |
4 | ||
5 | test_description='git-svn info' | |
6 | ||
7 | . ./lib-git-svn.sh | |
8d08f2d8 JH |
8 | say 'skipping svn-info test (has a race undiagnosed yet)' |
9 | test_done | |
e6fefa92 DK |
10 | |
11 | ptouch() { | |
12 | perl -w -e ' | |
13 | use strict; | |
14 | die "ptouch requires exactly 2 arguments" if @ARGV != 2; | |
15 | die "$ARGV[0] does not exist" if ! -e $ARGV[0]; | |
16 | my @s = stat $ARGV[0]; | |
17 | utime $s[8], $s[9], $ARGV[1]; | |
18 | ' "$1" "$2" | |
19 | } | |
20 | ||
21 | test_expect_success 'setup repository and import' " | |
22 | mkdir info && | |
23 | cd info && | |
24 | echo FIRST > A && | |
25 | echo one > file && | |
26 | ln -s file symlink-file && | |
27 | mkdir directory && | |
28 | touch directory/.placeholder && | |
29 | ln -s directory symlink-directory && | |
30 | svn import -m 'initial' . $svnrepo && | |
31 | cd .. && | |
32 | mkdir gitwc && | |
33 | cd gitwc && | |
34 | git-svn init $svnrepo && | |
35 | git-svn fetch && | |
36 | cd .. && | |
37 | svn co $svnrepo svnwc && | |
38 | ptouch svnwc/file gitwc/file && | |
39 | ptouch svnwc/directory gitwc/directory && | |
40 | ptouch svnwc/symlink-file gitwc/symlink-file && | |
41 | ptouch svnwc/symlink-directory gitwc/symlink-directory | |
42 | " | |
43 | ||
44 | test_expect_success 'info' " | |
45 | (cd svnwc; svn info) > expected.info && | |
46 | (cd gitwc; git-svn info) > actual.info && | |
47 | git-diff expected.info actual.info | |
48 | " | |
49 | ||
8b014d71 DK |
50 | test_expect_success 'info --url' ' |
51 | test $(cd gitwc; git-svn info --url) = $svnrepo | |
52 | ' | |
53 | ||
e6fefa92 DK |
54 | test_expect_success 'info .' " |
55 | (cd svnwc; svn info .) > expected.info-dot && | |
56 | (cd gitwc; git-svn info .) > actual.info-dot && | |
57 | git-diff expected.info-dot actual.info-dot | |
58 | " | |
59 | ||
8b014d71 DK |
60 | test_expect_success 'info --url .' ' |
61 | test $(cd gitwc; git-svn info --url .) = $svnrepo | |
62 | ' | |
63 | ||
e6fefa92 DK |
64 | test_expect_success 'info file' " |
65 | (cd svnwc; svn info file) > expected.info-file && | |
66 | (cd gitwc; git-svn info file) > actual.info-file && | |
67 | git-diff expected.info-file actual.info-file | |
68 | " | |
69 | ||
8b014d71 DK |
70 | test_expect_success 'info --url file' ' |
71 | test $(cd gitwc; git-svn info --url file) = "$svnrepo/file" | |
72 | ' | |
73 | ||
e6fefa92 DK |
74 | test_expect_success 'info directory' " |
75 | (cd svnwc; svn info directory) > expected.info-directory && | |
76 | (cd gitwc; git-svn info directory) > actual.info-directory && | |
77 | git-diff expected.info-directory actual.info-directory | |
78 | " | |
79 | ||
8b014d71 DK |
80 | test_expect_success 'info --url directory' ' |
81 | test $(cd gitwc; git-svn info --url directory) = "$svnrepo/directory" | |
82 | ' | |
83 | ||
e6fefa92 DK |
84 | test_expect_success 'info symlink-file' " |
85 | (cd svnwc; svn info symlink-file) > expected.info-symlink-file && | |
86 | (cd gitwc; git-svn info symlink-file) > actual.info-symlink-file && | |
87 | git-diff expected.info-symlink-file actual.info-symlink-file | |
88 | " | |
89 | ||
8b014d71 DK |
90 | test_expect_success 'info --url symlink-file' ' |
91 | test $(cd gitwc; git-svn info --url symlink-file) \ | |
92 | = "$svnrepo/symlink-file" | |
93 | ' | |
94 | ||
e6fefa92 DK |
95 | test_expect_success 'info symlink-directory' " |
96 | (cd svnwc; svn info symlink-directory) \ | |
97 | > expected.info-symlink-directory && | |
98 | (cd gitwc; git-svn info symlink-directory) \ | |
99 | > actual.info-symlink-directory && | |
100 | git-diff expected.info-symlink-directory actual.info-symlink-directory | |
101 | " | |
102 | ||
8b014d71 DK |
103 | test_expect_success 'info --url symlink-directory' ' |
104 | test $(cd gitwc; git-svn info --url symlink-directory) \ | |
105 | = "$svnrepo/symlink-directory" | |
106 | ' | |
107 | ||
e6fefa92 DK |
108 | test_expect_success 'info added-file' " |
109 | echo two > gitwc/added-file && | |
110 | cd gitwc && | |
111 | git add added-file && | |
112 | cd .. && | |
113 | cp gitwc/added-file svnwc/added-file && | |
114 | ptouch gitwc/added-file svnwc/added-file && | |
115 | cd svnwc && | |
116 | svn add added-file > /dev/null && | |
117 | cd .. && | |
118 | (cd svnwc; svn info added-file) > expected.info-added-file && | |
119 | (cd gitwc; git-svn info added-file) > actual.info-added-file && | |
120 | git-diff expected.info-added-file actual.info-added-file | |
121 | " | |
122 | ||
8b014d71 DK |
123 | test_expect_success 'info --url added-file' ' |
124 | test $(cd gitwc; git-svn info --url added-file) \ | |
125 | = "$svnrepo/added-file" | |
126 | ' | |
127 | ||
e6fefa92 DK |
128 | test_expect_success 'info added-directory' " |
129 | mkdir gitwc/added-directory svnwc/added-directory && | |
130 | ptouch gitwc/added-directory svnwc/added-directory && | |
131 | touch gitwc/added-directory/.placeholder && | |
132 | cd svnwc && | |
133 | svn add added-directory > /dev/null && | |
134 | cd .. && | |
135 | cd gitwc && | |
136 | git add added-directory && | |
137 | cd .. && | |
138 | (cd svnwc; svn info added-directory) \ | |
139 | > expected.info-added-directory && | |
140 | (cd gitwc; git-svn info added-directory) \ | |
141 | > actual.info-added-directory && | |
142 | git-diff expected.info-added-directory actual.info-added-directory | |
143 | " | |
144 | ||
8b014d71 DK |
145 | test_expect_success 'info --url added-directory' ' |
146 | test $(cd gitwc; git-svn info --url added-directory) \ | |
147 | = "$svnrepo/added-directory" | |
148 | ' | |
149 | ||
e6fefa92 DK |
150 | test_expect_success 'info added-symlink-file' " |
151 | cd gitwc && | |
152 | ln -s added-file added-symlink-file && | |
153 | git add added-symlink-file && | |
154 | cd .. && | |
155 | cd svnwc && | |
156 | ln -s added-file added-symlink-file && | |
157 | svn add added-symlink-file > /dev/null && | |
158 | cd .. && | |
159 | ptouch gitwc/added-symlink-file svnwc/added-symlink-file && | |
160 | (cd svnwc; svn info added-symlink-file) \ | |
161 | > expected.info-added-symlink-file && | |
162 | (cd gitwc; git-svn info added-symlink-file) \ | |
163 | > actual.info-added-symlink-file && | |
164 | git-diff expected.info-added-symlink-file \ | |
165 | actual.info-added-symlink-file | |
166 | " | |
167 | ||
8b014d71 DK |
168 | test_expect_success 'info --url added-symlink-file' ' |
169 | test $(cd gitwc; git-svn info --url added-symlink-file) \ | |
170 | = "$svnrepo/added-symlink-file" | |
171 | ' | |
172 | ||
e6fefa92 DK |
173 | test_expect_success 'info added-symlink-directory' " |
174 | cd gitwc && | |
175 | ln -s added-directory added-symlink-directory && | |
176 | git add added-symlink-directory && | |
177 | cd .. && | |
178 | cd svnwc && | |
179 | ln -s added-directory added-symlink-directory && | |
180 | svn add added-symlink-directory > /dev/null && | |
181 | cd .. && | |
182 | ptouch gitwc/added-symlink-directory svnwc/added-symlink-directory && | |
183 | (cd svnwc; svn info added-symlink-directory) \ | |
184 | > expected.info-added-symlink-directory && | |
185 | (cd gitwc; git-svn info added-symlink-directory) \ | |
186 | > actual.info-added-symlink-directory && | |
187 | git-diff expected.info-added-symlink-directory \ | |
188 | actual.info-added-symlink-directory | |
189 | " | |
190 | ||
8b014d71 DK |
191 | test_expect_success 'info --url added-symlink-directory' ' |
192 | test $(cd gitwc; git-svn info --url added-symlink-directory) \ | |
193 | = "$svnrepo/added-symlink-directory" | |
194 | ' | |
195 | ||
e6fefa92 DK |
196 | # The next few tests replace the "Text Last Updated" value with a |
197 | # placeholder since git doesn't have a way to know the date that a | |
198 | # now-deleted file was last checked out locally. Internally it | |
199 | # simply reuses the Last Changed Date. | |
200 | ||
201 | test_expect_success 'info deleted-file' " | |
202 | cd gitwc && | |
203 | git rm -f file > /dev/null && | |
204 | cd .. && | |
205 | cd svnwc && | |
206 | svn rm --force file > /dev/null && | |
207 | cd .. && | |
208 | (cd svnwc; svn info file) | | |
209 | sed -e 's/^\(Text Last Updated:\).*/\1 TEXT-LAST-UPDATED-STRING/' \ | |
210 | > expected.info-deleted-file && | |
211 | (cd gitwc; git-svn info file) | | |
212 | sed -e 's/^\(Text Last Updated:\).*/\1 TEXT-LAST-UPDATED-STRING/' \ | |
213 | > actual.info-deleted-file && | |
214 | git-diff expected.info-deleted-file actual.info-deleted-file | |
215 | " | |
216 | ||
8b014d71 DK |
217 | test_expect_success 'info --url file (deleted)' ' |
218 | test $(cd gitwc; git-svn info --url file) \ | |
219 | = "$svnrepo/file" | |
220 | ' | |
221 | ||
e6fefa92 DK |
222 | test_expect_success 'info deleted-directory' " |
223 | cd gitwc && | |
224 | git rm -r -f directory > /dev/null && | |
225 | cd .. && | |
226 | cd svnwc && | |
227 | svn rm --force directory > /dev/null && | |
228 | cd .. && | |
229 | (cd svnwc; svn info directory) | | |
230 | sed -e 's/^\(Text Last Updated:\).*/\1 TEXT-LAST-UPDATED-STRING/' \ | |
231 | > expected.info-deleted-directory && | |
232 | (cd gitwc; git-svn info directory) | | |
233 | sed -e 's/^\(Text Last Updated:\).*/\1 TEXT-LAST-UPDATED-STRING/' \ | |
234 | > actual.info-deleted-directory && | |
235 | git-diff expected.info-deleted-directory actual.info-deleted-directory | |
236 | " | |
237 | ||
8b014d71 DK |
238 | test_expect_success 'info --url directory (deleted)' ' |
239 | test $(cd gitwc; git-svn info --url directory) \ | |
240 | = "$svnrepo/directory" | |
241 | ' | |
242 | ||
e6fefa92 DK |
243 | test_expect_success 'info deleted-symlink-file' " |
244 | cd gitwc && | |
245 | git rm -f symlink-file > /dev/null && | |
246 | cd .. && | |
247 | cd svnwc && | |
248 | svn rm --force symlink-file > /dev/null && | |
249 | cd .. && | |
250 | (cd svnwc; svn info symlink-file) | | |
251 | sed -e 's/^\(Text Last Updated:\).*/\1 TEXT-LAST-UPDATED-STRING/' \ | |
252 | > expected.info-deleted-symlink-file && | |
253 | (cd gitwc; git-svn info symlink-file) | | |
254 | sed -e 's/^\(Text Last Updated:\).*/\1 TEXT-LAST-UPDATED-STRING/' \ | |
255 | > actual.info-deleted-symlink-file && | |
256 | git-diff expected.info-deleted-symlink-file \ | |
257 | actual.info-deleted-symlink-file | |
258 | " | |
259 | ||
8b014d71 DK |
260 | test_expect_success 'info --url symlink-file (deleted)' ' |
261 | test $(cd gitwc; git-svn info --url symlink-file) \ | |
262 | = "$svnrepo/symlink-file" | |
263 | ' | |
264 | ||
e6fefa92 DK |
265 | test_expect_success 'info deleted-symlink-directory' " |
266 | cd gitwc && | |
267 | git rm -f symlink-directory > /dev/null && | |
268 | cd .. && | |
269 | cd svnwc && | |
270 | svn rm --force symlink-directory > /dev/null && | |
271 | cd .. && | |
272 | (cd svnwc; svn info symlink-directory) | | |
273 | sed -e 's/^\(Text Last Updated:\).*/\1 TEXT-LAST-UPDATED-STRING/' \ | |
274 | > expected.info-deleted-symlink-directory && | |
275 | (cd gitwc; git-svn info symlink-directory) | | |
276 | sed -e 's/^\(Text Last Updated:\).*/\1 TEXT-LAST-UPDATED-STRING/' \ | |
277 | > actual.info-deleted-symlink-directory && | |
278 | git-diff expected.info-deleted-symlink-directory \ | |
279 | actual.info-deleted-symlink-directory | |
280 | " | |
281 | ||
8b014d71 DK |
282 | test_expect_success 'info --url symlink-directory (deleted)' ' |
283 | test $(cd gitwc; git-svn info --url symlink-directory) \ | |
284 | = "$svnrepo/symlink-directory" | |
285 | ' | |
286 | ||
e6fefa92 DK |
287 | # NOTE: git does not have the concept of replaced objects, |
288 | # so we can't test for files in that state. | |
289 | ||
290 | test_expect_success 'info unknown-file' " | |
291 | echo two > gitwc/unknown-file && | |
292 | cp gitwc/unknown-file svnwc/unknown-file && | |
293 | ptouch gitwc/unknown-file svnwc/unknown-file && | |
294 | (cd svnwc; svn info unknown-file) 2> expected.info-unknown-file && | |
295 | (cd gitwc; git-svn info unknown-file) 2> actual.info-unknown-file && | |
296 | git-diff expected.info-unknown-file actual.info-unknown-file | |
297 | " | |
298 | ||
8b014d71 DK |
299 | test_expect_success 'info --url unknown-file' ' |
300 | test -z $(cd gitwc; git-svn info --url unknown-file \ | |
301 | 2> ../actual.info--url-unknown-file) && | |
302 | git-diff expected.info-unknown-file actual.info--url-unknown-file | |
303 | ' | |
304 | ||
e6fefa92 DK |
305 | test_expect_success 'info unknown-directory' " |
306 | mkdir gitwc/unknown-directory svnwc/unknown-directory && | |
307 | ptouch gitwc/unknown-directory svnwc/unknown-directory && | |
308 | touch gitwc/unknown-directory/.placeholder && | |
309 | (cd svnwc; svn info unknown-directory) \ | |
310 | 2> expected.info-unknown-directory && | |
311 | (cd gitwc; git-svn info unknown-directory) \ | |
312 | 2> actual.info-unknown-directory && | |
313 | git-diff expected.info-unknown-directory actual.info-unknown-directory | |
314 | " | |
315 | ||
8b014d71 DK |
316 | test_expect_success 'info --url unknown-directory' ' |
317 | test -z $(cd gitwc; git-svn info --url unknown-directory \ | |
318 | 2> ../actual.info--url-unknown-directory) && | |
319 | git-diff expected.info-unknown-directory \ | |
320 | actual.info--url-unknown-directory | |
321 | ' | |
322 | ||
e6fefa92 DK |
323 | test_expect_success 'info unknown-symlink-file' " |
324 | cd gitwc && | |
325 | ln -s unknown-file unknown-symlink-file && | |
326 | cd .. && | |
327 | cd svnwc && | |
328 | ln -s unknown-file unknown-symlink-file && | |
329 | cd .. && | |
330 | ptouch gitwc/unknown-symlink-file svnwc/unknown-symlink-file && | |
331 | (cd svnwc; svn info unknown-symlink-file) \ | |
332 | 2> expected.info-unknown-symlink-file && | |
333 | (cd gitwc; git-svn info unknown-symlink-file) \ | |
334 | 2> actual.info-unknown-symlink-file && | |
335 | git-diff expected.info-unknown-symlink-file \ | |
336 | actual.info-unknown-symlink-file | |
337 | " | |
338 | ||
8b014d71 DK |
339 | test_expect_success 'info --url unknown-symlink-file' ' |
340 | test -z $(cd gitwc; git-svn info --url unknown-symlink-file \ | |
341 | 2> ../actual.info--url-unknown-symlink-file) && | |
342 | git-diff expected.info-unknown-symlink-file \ | |
343 | actual.info--url-unknown-symlink-file | |
344 | ' | |
345 | ||
e6fefa92 DK |
346 | test_expect_success 'info unknown-symlink-directory' " |
347 | cd gitwc && | |
348 | ln -s unknown-directory unknown-symlink-directory && | |
349 | cd .. && | |
350 | cd svnwc && | |
351 | ln -s unknown-directory unknown-symlink-directory && | |
352 | cd .. && | |
353 | ptouch gitwc/unknown-symlink-directory \ | |
354 | svnwc/unknown-symlink-directory && | |
355 | (cd svnwc; svn info unknown-symlink-directory) \ | |
356 | 2> expected.info-unknown-symlink-directory && | |
357 | (cd gitwc; git-svn info unknown-symlink-directory) \ | |
358 | 2> actual.info-unknown-symlink-directory && | |
359 | git-diff expected.info-unknown-symlink-directory \ | |
360 | actual.info-unknown-symlink-directory | |
361 | " | |
362 | ||
8b014d71 DK |
363 | test_expect_success 'info --url unknown-symlink-directory' ' |
364 | test -z $(cd gitwc; git-svn info --url unknown-symlink-directory \ | |
365 | 2> ../actual.info--url-unknown-symlink-directory) && | |
366 | git-diff expected.info-unknown-symlink-directory \ | |
367 | actual.info--url-unknown-symlink-directory | |
368 | ' | |
369 | ||
e6fefa92 | 370 | test_done |