Merge branch 'bg/rebase-off-of-previous-branch'
[git/mingw.git] / contrib / remote-helpers / test-bzr.sh
blob4f379c2ab499f2ca5556f844cbdcacb98fffa13c
1 #!/bin/sh
3 # Copyright (c) 2012 Felipe Contreras
6 test_description='Test remote-bzr'
8 test -n "$TEST_DIRECTORY" || TEST_DIRECTORY=${0%/*}/../../t
9 . "$TEST_DIRECTORY"/test-lib.sh
11 if ! test_have_prereq PYTHON
12 then
13 skip_all='skipping remote-bzr tests; python not available'
14 test_done
17 if ! python -c 'import bzrlib'
18 then
19 skip_all='skipping remote-bzr tests; bzr not available'
20 test_done
23 check () {
24 echo $3 >expected &&
25 git --git-dir=$1/.git log --format='%s' -1 $2 >actual
26 test_cmp expected actual
29 bzr whoami "A U Thor <author@example.com>"
31 test_expect_success 'cloning' '
33 bzr init bzrrepo &&
34 cd bzrrepo &&
35 echo one >content &&
36 bzr add content &&
37 bzr commit -m one
38 ) &&
40 git clone "bzr::bzrrepo" gitrepo &&
41 check gitrepo HEAD one
44 test_expect_success 'pulling' '
46 cd bzrrepo &&
47 echo two >content &&
48 bzr commit -m two
49 ) &&
51 (cd gitrepo && git pull) &&
53 check gitrepo HEAD two
56 test_expect_success 'pushing' '
58 cd gitrepo &&
59 echo three >content &&
60 git commit -a -m three &&
61 git push
62 ) &&
64 echo three >expected &&
65 cat bzrrepo/content >actual &&
66 test_cmp expected actual
69 test_expect_success 'forced pushing' '
71 cd gitrepo &&
72 echo three-new >content &&
73 git commit -a --amend -m three-new &&
74 git push -f
75 ) &&
78 cd bzrrepo &&
79 # the forced update overwrites the bzr branch but not the bzr
80 # working directory (it tries to merge instead)
81 bzr revert
82 ) &&
84 echo three-new >expected &&
85 cat bzrrepo/content >actual &&
86 test_cmp expected actual
89 test_expect_success 'roundtrip' '
91 cd gitrepo &&
92 git pull &&
93 git log --format="%s" -1 origin/master >actual
94 ) &&
95 echo three-new >expected &&
96 test_cmp expected actual &&
98 (cd gitrepo && git push && git pull) &&
101 cd bzrrepo &&
102 echo four >content &&
103 bzr commit -m four
104 ) &&
106 (cd gitrepo && git pull && git push) &&
108 check gitrepo HEAD four &&
111 cd gitrepo &&
112 echo five >content &&
113 git commit -a -m five &&
114 git push && git pull
115 ) &&
117 (cd bzrrepo && bzr revert) &&
119 echo five >expected &&
120 cat bzrrepo/content >actual &&
121 test_cmp expected actual
124 cat >expected <<\EOF
125 100644 blob 54f9d6da5c91d556e6b54340b1327573073030af content
126 100755 blob 68769579c3eaadbe555379b9c3538e6628bae1eb executable
127 120000 blob 6b584e8ece562ebffc15d38808cd6b98fc3d97ea link
130 test_expect_success 'special modes' '
132 cd bzrrepo &&
133 echo exec >executable
134 chmod +x executable &&
135 bzr add executable
136 bzr commit -m exec &&
137 ln -s content link
138 bzr add link
139 bzr commit -m link &&
140 mkdir dir &&
141 bzr add dir &&
142 bzr commit -m dir
143 ) &&
146 cd gitrepo &&
147 git pull
148 git ls-tree HEAD >../actual
149 ) &&
151 test_cmp expected actual &&
154 cd gitrepo &&
155 git cat-file -p HEAD:link >../actual
156 ) &&
158 printf content >expected &&
159 test_cmp expected actual
162 cat >expected <<\EOF
163 100644 blob 54f9d6da5c91d556e6b54340b1327573073030af content
164 100755 blob 68769579c3eaadbe555379b9c3538e6628bae1eb executable
165 120000 blob 6b584e8ece562ebffc15d38808cd6b98fc3d97ea link
166 040000 tree 35c0caa46693cef62247ac89a680f0c5ce32b37b movedir-new
169 test_expect_success 'moving directory' '
171 cd bzrrepo &&
172 mkdir movedir &&
173 echo one >movedir/one &&
174 echo two >movedir/two &&
175 bzr add movedir &&
176 bzr commit -m movedir &&
177 bzr mv movedir movedir-new &&
178 bzr commit -m movedir-new
179 ) &&
182 cd gitrepo &&
183 git pull &&
184 git ls-tree HEAD >../actual
185 ) &&
187 test_cmp expected actual
190 test_expect_success 'different authors' '
192 cd bzrrepo &&
193 echo john >>content &&
194 bzr commit -m john \
195 --author "Jane Rey <jrey@example.com>" \
196 --author "John Doe <jdoe@example.com>"
197 ) &&
200 cd gitrepo &&
201 git pull &&
202 git show --format="%an <%ae>, %cn <%ce>" --quiet >../actual
203 ) &&
205 echo "Jane Rey <jrey@example.com>, A U Thor <author@example.com>" >expected &&
206 test_cmp expected actual
209 # cleanup previous stuff
210 rm -rf bzrrepo gitrepo
212 test_expect_success 'fetch utf-8 filenames' '
213 test_when_finished "rm -rf bzrrepo gitrepo && LC_ALL=C" &&
215 LC_ALL=en_US.UTF-8
216 export LC_ALL
219 bzr init bzrrepo &&
220 cd bzrrepo &&
222 echo test >>"ærø" &&
223 bzr add "ærø" &&
224 echo test >>"ø~?" &&
225 bzr add "ø~?" &&
226 bzr commit -m add-utf-8 &&
227 echo test >>"ærø" &&
228 bzr commit -m test-utf-8 &&
229 bzr rm "ø~?" &&
230 bzr mv "ærø" "ø~?" &&
231 bzr commit -m bzr-mv-utf-8
232 ) &&
235 git clone "bzr::bzrrepo" gitrepo &&
236 cd gitrepo &&
237 git -c core.quotepath=false ls-files >../actual
238 ) &&
239 echo "ø~?" >expected &&
240 test_cmp expected actual
243 test_expect_success 'push utf-8 filenames' '
244 test_when_finished "rm -rf bzrrepo gitrepo && LC_ALL=C" &&
246 mkdir -p tmp && cd tmp &&
248 LC_ALL=en_US.UTF-8
249 export LC_ALL
252 bzr init bzrrepo &&
253 cd bzrrepo &&
255 echo one >>content &&
256 bzr add content &&
257 bzr commit -m one
258 ) &&
261 git clone "bzr::bzrrepo" gitrepo &&
262 cd gitrepo &&
264 echo test >>"ærø" &&
265 git add "ærø" &&
266 git commit -m utf-8 &&
268 git push
269 ) &&
271 (cd bzrrepo && bzr ls >../actual) &&
272 printf "content\nærø\n" >expected &&
273 test_cmp expected actual
276 test_expect_success 'pushing a merge' '
277 test_when_finished "rm -rf bzrrepo gitrepo" &&
280 bzr init bzrrepo &&
281 cd bzrrepo &&
282 echo one >content &&
283 bzr add content &&
284 bzr commit -m one
285 ) &&
287 git clone "bzr::bzrrepo" gitrepo &&
290 cd bzrrepo &&
291 echo two >content &&
292 bzr commit -m two
293 ) &&
296 cd gitrepo &&
297 echo three >content &&
298 git commit -a -m three &&
299 git fetch &&
300 git merge origin/master || true &&
301 echo three >content &&
302 git commit -a --no-edit &&
303 git push
304 ) &&
306 echo three >expected &&
307 cat bzrrepo/content >actual &&
308 test_cmp expected actual
311 cat >expected <<\EOF
312 origin/HEAD
313 origin/branch
314 origin/trunk
317 test_expect_success 'proper bzr repo' '
318 test_when_finished "rm -rf bzrrepo gitrepo" &&
320 bzr init-repo bzrrepo &&
323 bzr init bzrrepo/trunk &&
324 cd bzrrepo/trunk &&
325 echo one >>content &&
326 bzr add content &&
327 bzr commit -m one
328 ) &&
331 bzr branch bzrrepo/trunk bzrrepo/branch &&
332 cd bzrrepo/branch &&
333 echo two >>content &&
334 bzr commit -m one
335 ) &&
338 git clone "bzr::bzrrepo" gitrepo &&
339 cd gitrepo &&
340 git for-each-ref --format "%(refname:short)" refs/remotes/origin >../actual
341 ) &&
343 test_cmp expected actual
346 test_expect_success 'strip' '
347 test_when_finished "rm -rf bzrrepo gitrepo" &&
350 bzr init bzrrepo &&
351 cd bzrrepo &&
353 echo one >>content &&
354 bzr add content &&
355 bzr commit -m one &&
357 echo two >>content &&
358 bzr commit -m two
359 ) &&
361 git clone "bzr::bzrrepo" gitrepo &&
364 cd bzrrepo &&
365 bzr uncommit --force &&
367 echo three >>content &&
368 bzr commit -m three &&
370 echo four >>content &&
371 bzr commit -m four &&
372 bzr log --line | sed -e "s/^[0-9][0-9]*: //" >../expected
373 ) &&
376 cd gitrepo &&
377 git fetch &&
378 git log --format="%an %ad %s" --date=short origin/master >../actual
379 ) &&
381 test_cmp expected actual
384 test_expect_success 'export utf-8 authors' '
385 test_when_finished "rm -rf bzrrepo gitrepo && LC_ALL=C && unset GIT_COMMITTER_NAME" &&
387 LC_ALL=en_US.UTF-8
388 export LC_ALL
390 GIT_COMMITTER_NAME="Grégoire"
391 export GIT_COMMITTER_NAME
393 bzr init bzrrepo &&
396 git init gitrepo &&
397 cd gitrepo &&
398 echo greg >>content &&
399 git add content &&
400 git commit -m one &&
401 git remote add bzr "bzr::../bzrrepo" &&
402 git push bzr master
403 ) &&
406 cd bzrrepo &&
407 bzr log | grep "^committer: " >../actual
408 ) &&
410 echo "committer: Grégoire <committer@example.com>" >expected &&
411 test_cmp expected actual
414 test_done