3 # Copyright (c) 2012 Felipe Contreras
6 test_description='Test remote-bzr'
8 test -z "$TEST_DIRECTORY" && TEST_DIRECTORY="$PWD/.."
9 . "$TEST_DIRECTORY"/test-lib.sh
11 if ! test_have_prereq PYTHON; then
12 skip_all='skipping remote-bzr tests; python not available'
16 if ! "$PYTHON_PATH" -c 'import bzrlib'; then
17 skip_all='skipping remote-bzr tests; bzr not available'
23 git --git-dir=$1/.git log --format='%s' -1 $2 > actual
24 test_cmp expected actual
27 bzr whoami "A U Thor <author@example.com>"
29 test_expect_success 'cloning' '
38 git clone "bzr::bzrrepo" gitrepo &&
39 check gitrepo HEAD one
42 test_expect_success 'pulling' '
49 (cd gitrepo && git pull) &&
51 check gitrepo HEAD two
54 test_expect_success 'pushing' '
57 echo three > content &&
58 git commit -a -m three &&
62 echo three > expected &&
63 cat bzrrepo/content > actual &&
64 test_cmp expected actual
67 test_expect_success 'roundtrip' '
71 git log --format="%s" -1 origin/master > actual
73 echo three > expected &&
74 test_cmp expected actual &&
76 (cd gitrepo && git push && git pull) &&
80 echo four > content &&
84 (cd gitrepo && git pull && git push) &&
86 check gitrepo HEAD four &&
90 echo five > content &&
91 git commit -a -m five &&
95 (cd bzrrepo && bzr revert) &&
97 echo five > expected &&
98 cat bzrrepo/content > actual &&
99 test_cmp expected actual
103 100644 blob 54f9d6da5c91d556e6b54340b1327573073030af content
104 100755 blob 68769579c3eaadbe555379b9c3538e6628bae1eb executable
105 120000 blob 6b584e8ece562ebffc15d38808cd6b98fc3d97ea link
108 test_expect_success 'special modes' '
111 echo exec > executable
112 chmod +x executable &&
114 bzr commit -m exec &&
117 bzr commit -m link &&
126 git ls-tree HEAD > ../actual
129 test_cmp expected actual &&
133 git cat-file -p HEAD:link > ../actual
136 printf content > expected &&
137 test_cmp expected actual
141 100644 blob 54f9d6da5c91d556e6b54340b1327573073030af content
142 100755 blob 68769579c3eaadbe555379b9c3538e6628bae1eb executable
143 120000 blob 6b584e8ece562ebffc15d38808cd6b98fc3d97ea link
144 040000 tree 35c0caa46693cef62247ac89a680f0c5ce32b37b movedir-new
147 test_expect_success 'moving directory' '
151 echo one > movedir/one &&
152 echo two > movedir/two &&
154 bzr commit -m movedir &&
155 bzr mv movedir movedir-new &&
156 bzr commit -m movedir-new
162 git ls-tree HEAD > ../actual
165 test_cmp expected actual
168 test_expect_success 'different authors' '
171 echo john >> content &&
173 --author "Jane Rey <jrey@example.com>" \
174 --author "John Doe <jdoe@example.com>"
180 git show --format="%an <%ae>, %cn <%ce>" --quiet > ../actual
183 echo "Jane Rey <jrey@example.com>, A U Thor <author@example.com>" > expected &&
184 test_cmp expected actual
187 # cleanup previous stuff
188 rm -rf bzrrepo gitrepo
190 test_expect_success 'fetch utf-8 filenames' '
191 test_when_finished "rm -rf bzrrepo gitrepo && LC_ALL=C" &&
200 echo test >> "ærø" &&
202 echo test >> "ø~?" &&
204 bzr commit -m add-utf-8 &&
205 echo test >> "ærø" &&
206 bzr commit -m test-utf-8 &&
208 bzr mv "ærø" "ø~?" &&
209 bzr commit -m bzr-mv-utf-8
213 git clone "bzr::bzrrepo" gitrepo &&
215 git -c core.quotepath=false ls-files > ../actual
217 echo "ø~?" > expected &&
218 test_cmp expected actual
221 test_expect_success 'push utf-8 filenames' '
222 test_when_finished "rm -rf bzrrepo gitrepo && LC_ALL=C" &&
224 mkdir -p tmp && cd tmp &&
233 echo one >> content &&
239 git clone "bzr::bzrrepo" gitrepo &&
242 echo test >> "ærø" &&
244 git commit -m utf-8 &&
249 (cd bzrrepo && bzr ls > ../actual) &&
250 printf "content\nærø\n" > expected &&
251 test_cmp expected actual
254 test_expect_success 'pushing a merge' '
255 test_when_finished "rm -rf bzrrepo gitrepo" &&
260 echo one > content &&
265 git clone "bzr::bzrrepo" gitrepo &&
269 echo two > content &&
275 echo three > content &&
276 git commit -a -m three &&
278 git merge origin/master || true &&
279 echo three > content &&
280 git commit -a --no-edit &&
284 echo three > expected &&
285 cat bzrrepo/content > actual &&
286 test_cmp expected actual
295 test_expect_success 'proper bzr repo' '
296 test_when_finished "rm -rf bzrrepo gitrepo" &&
298 bzr init-repo bzrrepo &&
301 bzr init bzrrepo/trunk &&
303 echo one >> content &&
309 bzr branch bzrrepo/trunk bzrrepo/branch &&
311 echo two >> content &&
316 git clone "bzr::bzrrepo" gitrepo &&
318 git for-each-ref --format "%(refname:short)" refs/remotes/origin > ../actual
321 test_cmp expected actual
324 test_expect_success 'strip' '
325 test_when_finished "rm -rf bzrrepo gitrepo" &&
331 echo one >> content &&
335 echo two >> content &&
339 git clone "bzr::bzrrepo" gitrepo &&
343 bzr uncommit --force &&
345 echo three >> content &&
346 bzr commit -m three &&
348 echo four >> content &&
349 bzr commit -m four &&
350 bzr log --line | sed -e "s/^[0-9][0-9]*: //" > ../expected
356 git log --format="%an %ad %s" --date=short origin/master > ../actual
359 test_cmp expected actual
362 test_expect_success 'export utf-8 authors' '
363 test_when_finished "rm -rf bzrrepo gitrepo && LC_ALL=C && unset GIT_COMMITTER_NAME" &&
368 GIT_COMMITTER_NAME="Grégoire"
369 export GIT_COMMITTER_NAME
376 echo greg >> content &&
379 git remote add bzr "bzr::../bzrrepo" &&
385 bzr log | grep "^committer: " > ../actual
388 echo "committer: Grégoire <committer@example.com>" > expected &&
389 test_cmp expected actual