]>
Commit | Line | Data |
---|---|---|
77b71edf FC |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2012 Felipe Contreras | |
4 | # | |
5 | ||
6 | test_description='Test remote-bzr' | |
7 | ||
8 | . ./test-lib.sh | |
9 | ||
10 | if ! test_have_prereq PYTHON; then | |
11 | skip_all='skipping remote-bzr tests; python not available' | |
12 | test_done | |
13 | fi | |
14 | ||
15 | if ! "$PYTHON_PATH" -c 'import bzrlib'; then | |
16 | skip_all='skipping remote-bzr tests; bzr not available' | |
17 | test_done | |
18 | fi | |
19 | ||
77b71edf FC |
20 | check () { |
21 | (cd $1 && | |
22 | git log --format='%s' -1 && | |
23 | git symbolic-ref HEAD) > actual && | |
24 | (echo $2 && | |
25 | echo "refs/heads/$3") > expected && | |
26 | test_cmp expected actual | |
27 | } | |
28 | ||
29 | bzr whoami "A U Thor <author@example.com>" | |
30 | ||
31 | test_expect_success 'cloning' ' | |
32 | (bzr init bzrrepo && | |
33 | cd bzrrepo && | |
34 | echo one > content && | |
35 | bzr add content && | |
36 | bzr commit -m one | |
37 | ) && | |
38 | ||
39 | git clone "bzr::$PWD/bzrrepo" gitrepo && | |
40 | check gitrepo one master | |
41 | ' | |
42 | ||
43 | test_expect_success 'pulling' ' | |
44 | (cd bzrrepo && | |
45 | echo two > content && | |
46 | bzr commit -m two | |
47 | ) && | |
48 | ||
49 | (cd gitrepo && git pull) && | |
50 | ||
51 | check gitrepo two master | |
52 | ' | |
53 | ||
54 | test_expect_success 'pushing' ' | |
55 | (cd gitrepo && | |
56 | echo three > content && | |
57 | git commit -a -m three && | |
58 | git push | |
59 | ) && | |
60 | ||
61 | echo three > expected && | |
62 | cat bzrrepo/content > actual && | |
63 | test_cmp expected actual | |
64 | ' | |
65 | ||
66 | test_expect_success 'roundtrip' ' | |
67 | (cd gitrepo && | |
68 | git pull && | |
69 | git log --format="%s" -1 origin/master > actual) && | |
70 | echo three > expected && | |
71 | test_cmp expected actual && | |
72 | ||
73 | (cd gitrepo && git push && git pull) && | |
74 | ||
75 | (cd bzrrepo && | |
76 | echo four > content && | |
77 | bzr commit -m four | |
78 | ) && | |
79 | ||
80 | (cd gitrepo && git pull && git push) && | |
81 | ||
82 | check gitrepo four master && | |
83 | ||
84 | (cd gitrepo && | |
85 | echo five > content && | |
86 | git commit -a -m five && | |
87 | git push && git pull | |
88 | ) && | |
89 | ||
90 | (cd bzrrepo && bzr revert) && | |
91 | ||
92 | echo five > expected && | |
93 | cat bzrrepo/content > actual && | |
94 | test_cmp expected actual | |
95 | ' | |
96 | ||
bdeeb809 FC |
97 | cat > expected <<EOF |
98 | 100644 blob 54f9d6da5c91d556e6b54340b1327573073030af content | |
99 | 100755 blob 68769579c3eaadbe555379b9c3538e6628bae1eb executable | |
100 | 120000 blob 6b584e8ece562ebffc15d38808cd6b98fc3d97ea link | |
101 | EOF | |
102 | ||
103 | test_expect_success 'special modes' ' | |
104 | (cd bzrrepo && | |
105 | echo exec > executable | |
106 | chmod +x executable && | |
107 | bzr add executable | |
108 | bzr commit -m exec && | |
109 | ln -s content link | |
110 | bzr add link | |
111 | bzr commit -m link && | |
112 | mkdir dir && | |
113 | bzr add dir && | |
114 | bzr commit -m dir) && | |
115 | ||
116 | (cd gitrepo && | |
117 | git pull | |
118 | git ls-tree HEAD > ../actual) && | |
119 | ||
120 | test_cmp expected actual && | |
121 | ||
122 | (cd gitrepo && | |
123 | git cat-file -p HEAD:link > ../actual) && | |
124 | ||
afeb5259 | 125 | printf content > expected && |
bdeeb809 FC |
126 | test_cmp expected actual |
127 | ' | |
128 | ||
82447e33 CS |
129 | cat > expected <<EOF |
130 | 100644 blob 54f9d6da5c91d556e6b54340b1327573073030af content | |
131 | 100755 blob 68769579c3eaadbe555379b9c3538e6628bae1eb executable | |
132 | 120000 blob 6b584e8ece562ebffc15d38808cd6b98fc3d97ea link | |
133 | 040000 tree 35c0caa46693cef62247ac89a680f0c5ce32b37b movedir-new | |
134 | EOF | |
135 | ||
136 | test_expect_success 'moving directory' ' | |
137 | (cd bzrrepo && | |
138 | mkdir movedir && | |
139 | echo one > movedir/one && | |
140 | echo two > movedir/two && | |
141 | bzr add movedir && | |
142 | bzr commit -m movedir && | |
143 | bzr mv movedir movedir-new && | |
144 | bzr commit -m movedir-new) && | |
145 | ||
146 | (cd gitrepo && | |
147 | git pull && | |
148 | git ls-tree HEAD > ../actual) && | |
149 | ||
150 | test_cmp expected actual | |
151 | ' | |
152 | ||
9d9d698c DE |
153 | test_expect_success 'different authors' ' |
154 | (cd bzrrepo && | |
155 | echo john >> content && | |
156 | bzr commit -m john \ | |
157 | --author "Jane Rey <jrey@example.com>" \ | |
158 | --author "John Doe <jdoe@example.com>") && | |
159 | ||
160 | (cd gitrepo && | |
161 | git pull && | |
162 | git show --format="%an <%ae>, %cn <%ce>" --quiet > ../actual) && | |
163 | ||
164 | echo "Jane Rey <jrey@example.com>, A U Thor <author@example.com>" > expected && | |
165 | test_cmp expected actual | |
166 | ' | |
167 | ||
5445b24e TP |
168 | test_expect_success 'fetch utf-8 filenames' ' |
169 | mkdir -p tmp && cd tmp && | |
170 | test_when_finished "cd .. && rm -rf tmp && LC_ALL=C" && | |
171 | ||
924f6c3d TB |
172 | LC_ALL=en_US.UTF-8 |
173 | export LC_ALL | |
5445b24e TP |
174 | ( |
175 | bzr init bzrrepo && | |
176 | cd bzrrepo && | |
177 | ||
924f6c3d TB |
178 | echo test >> "ærø" && |
179 | bzr add "ærø" && | |
180 | echo test >> "ø~?" && | |
181 | bzr add "ø~?" && | |
182 | bzr commit -m add-utf-8 && | |
183 | echo test >> "ærø" && | |
184 | bzr commit -m test-utf-8 && | |
185 | bzr rm "ø~?" && | |
186 | bzr mv "ærø" "ø~?" && | |
187 | bzr commit -m bzr-mv-utf-8 | |
5445b24e TP |
188 | ) && |
189 | ||
190 | ( | |
191 | git clone "bzr::$PWD/bzrrepo" gitrepo && | |
192 | cd gitrepo && | |
924f6c3d | 193 | git -c core.quotepath=false ls-files > ../actual |
5445b24e | 194 | ) && |
924f6c3d | 195 | echo "ø~?" > expected && |
5445b24e TP |
196 | test_cmp expected actual |
197 | ' | |
198 | ||
6ff8d4e7 FC |
199 | test_expect_success 'push utf-8 filenames' ' |
200 | mkdir -p tmp && cd tmp && | |
201 | test_when_finished "cd .. && rm -rf tmp && LC_ALL=C" && | |
202 | ||
924f6c3d TB |
203 | LC_ALL=en_US.UTF-8 |
204 | export LC_ALL | |
6ff8d4e7 FC |
205 | |
206 | ( | |
207 | bzr init bzrrepo && | |
208 | cd bzrrepo && | |
209 | ||
210 | echo one >> content && | |
211 | bzr add content && | |
212 | bzr commit -m one | |
213 | ) && | |
214 | ||
215 | ( | |
216 | git clone "bzr::$PWD/bzrrepo" gitrepo && | |
217 | cd gitrepo && | |
218 | ||
924f6c3d TB |
219 | echo test >> "ærø" && |
220 | git add "ærø" && | |
6ff8d4e7 FC |
221 | git commit -m utf-8 && |
222 | ||
223 | git push | |
224 | ) && | |
225 | ||
226 | (cd bzrrepo && bzr ls > ../actual) && | |
924f6c3d | 227 | printf "content\nærø\n" > expected && |
6ff8d4e7 FC |
228 | test_cmp expected actual |
229 | ' | |
230 | ||
f38dfc4c FC |
231 | test_expect_success 'pushing a merge' ' |
232 | mkdir -p tmp && cd tmp && | |
233 | test_when_finished "cd .. && rm -rf tmp" && | |
234 | ||
235 | ( | |
236 | bzr init bzrrepo && | |
237 | cd bzrrepo && | |
238 | echo one > content && | |
239 | bzr add content && | |
240 | bzr commit -m one | |
241 | ) && | |
242 | ||
243 | git clone "bzr::$PWD/bzrrepo" gitrepo && | |
244 | ||
245 | ( | |
246 | cd bzrrepo && | |
247 | echo two > content && | |
248 | bzr commit -m two | |
249 | ) && | |
250 | ||
251 | ( | |
252 | cd gitrepo && | |
253 | echo three > content && | |
254 | git commit -a -m three && | |
255 | git fetch && | |
256 | git merge origin/master || true && | |
257 | echo three > content && | |
258 | git commit -a --no-edit && | |
259 | git push | |
260 | ) && | |
261 | ||
262 | echo three > expected && | |
263 | cat bzrrepo/content > actual && | |
264 | test_cmp expected actual | |
265 | ' | |
266 | ||
95b0c608 FC |
267 | cat > expected <<EOF |
268 | origin/HEAD | |
269 | origin/branch | |
270 | origin/trunk | |
271 | EOF | |
272 | ||
273 | test_expect_success 'proper bzr repo' ' | |
274 | mkdir -p tmp && cd tmp && | |
275 | test_when_finished "cd .. && rm -rf tmp" && | |
276 | ||
277 | bzr init-repo bzrrepo && | |
278 | ||
279 | bzr init bzrrepo/trunk && | |
280 | ( | |
281 | cd bzrrepo/trunk && | |
282 | echo one >> content && | |
283 | bzr add content && | |
284 | bzr commit -m one | |
285 | ) && | |
286 | ||
287 | bzr branch bzrrepo/trunk bzrrepo/branch && | |
288 | ( | |
289 | cd bzrrepo/branch && | |
290 | echo two >> content && | |
291 | bzr commit -m one | |
292 | ) && | |
293 | ||
294 | git clone "bzr::$PWD/bzrrepo" gitrepo && | |
295 | ( | |
296 | cd gitrepo && | |
297 | git for-each-ref --format "%(refname:short)" refs/remotes/origin > ../actual | |
298 | ) && | |
299 | ||
300 | test_cmp ../expected actual | |
301 | ' | |
302 | ||
435f39a3 FC |
303 | test_expect_success 'strip' ' |
304 | # Do not imitate this style; always chdir inside a subshell instead | |
305 | mkdir -p tmp && cd tmp && | |
306 | test_when_finished "cd .. && rm -rf tmp" && | |
307 | ||
308 | ( | |
309 | bzr init bzrrepo && | |
310 | cd bzrrepo && | |
311 | ||
312 | echo one >> content && | |
313 | bzr add content && | |
314 | bzr commit -m one && | |
315 | ||
316 | echo two >> content && | |
317 | bzr commit -m two | |
318 | ) && | |
319 | ||
320 | git clone "bzr::$PWD/bzrrepo" gitrepo && | |
321 | ||
322 | ( | |
323 | cd bzrrepo && | |
324 | bzr uncommit --force && | |
325 | ||
326 | echo three >> content && | |
327 | bzr commit -m three && | |
328 | ||
329 | echo four >> content && | |
330 | bzr commit -m four && | |
8d97506e | 331 | bzr log --line | sed -e "s/^[0-9][0-9]*: //" > ../expected |
435f39a3 FC |
332 | ) && |
333 | ||
334 | (cd gitrepo && | |
335 | git fetch && | |
336 | git log --format="%an %ad %s" --date=short origin/master > ../actual) && | |
337 | ||
338 | test_cmp expected actual | |
339 | ' | |
340 | ||
77b71edf | 341 | test_done |