#!/bin/sh # # Copyright (c) 2012 Felipe Contreras # test_description='Test remote-bzr' . ./test-lib.sh if ! test_have_prereq PYTHON; then skip_all='skipping remote-bzr tests; python not available' test_done fi if ! python -c 'import bzrlib'; then skip_all='skipping remote-bzr tests; bzr not available' test_done fi check () { ( cd $1 && git log --format='%s' -1 && git symbolic-ref HEAD ) > actual && ( echo $2 && echo "refs/heads/$3" ) > expected && test_cmp expected actual } bzr whoami "A U Thor " test_expect_success 'cloning' ' ( bzr init bzrrepo && cd bzrrepo && echo one > content && bzr add content && bzr commit -m one ) && git clone "bzr::$PWD/bzrrepo" gitrepo && check gitrepo one master ' test_expect_success 'pulling' ' ( cd bzrrepo && echo two > content && bzr commit -m two ) && (cd gitrepo && git pull) && check gitrepo two master ' test_expect_success 'pushing' ' ( cd gitrepo && echo three > content && git commit -a -m three && git push ) && echo three > expected && cat bzrrepo/content > actual && test_cmp expected actual ' test_expect_success 'roundtrip' ' ( cd gitrepo && git pull && git log --format="%s" -1 origin/master > actual ) && echo three > expected && test_cmp expected actual && (cd gitrepo && git push && git pull) && ( cd bzrrepo && echo four > content && bzr commit -m four ) && (cd gitrepo && git pull && git push) && check gitrepo four master && ( cd gitrepo && echo five > content && git commit -a -m five && git push && git pull ) && (cd bzrrepo && bzr revert) && echo five > expected && cat bzrrepo/content > actual && test_cmp expected actual ' cat > expected < executable chmod +x executable && bzr add executable bzr commit -m exec && ln -s content link bzr add link bzr commit -m link && mkdir dir && bzr add dir && bzr commit -m dir ) && ( cd gitrepo && git pull git ls-tree HEAD > ../actual ) && test_cmp expected actual && ( cd gitrepo && git cat-file -p HEAD:link > ../actual ) && printf content > expected && test_cmp expected actual ' cat > expected < movedir/one && echo two > movedir/two && bzr add movedir && bzr commit -m movedir && bzr mv movedir movedir-new && bzr commit -m movedir-new ) && ( cd gitrepo && git pull && git ls-tree HEAD > ../actual ) && test_cmp expected actual ' test_expect_success 'different authors' ' ( cd bzrrepo && echo john >> content && bzr commit -m john \ --author "Jane Rey " \ --author "John Doe " ) && ( cd gitrepo && git pull && git show --format="%an <%ae>, %cn <%ce>" --quiet > ../actual ) && echo "Jane Rey , A U Thor " > expected && test_cmp expected actual ' test_expect_success 'fetch utf-8 filenames' ' mkdir -p tmp && cd tmp && test_when_finished "cd .. && rm -rf tmp && LC_ALL=C" && LC_ALL=en_US.UTF-8 export LC_ALL ( bzr init bzrrepo && cd bzrrepo && echo test >> "ærø" && bzr add "ærø" && echo test >> "ø~?" && bzr add "ø~?" && bzr commit -m add-utf-8 && echo test >> "ærø" && bzr commit -m test-utf-8 && bzr rm "ø~?" && bzr mv "ærø" "ø~?" && bzr commit -m bzr-mv-utf-8 ) && ( git clone "bzr::$PWD/bzrrepo" gitrepo && cd gitrepo && git -c core.quotepath=false ls-files > ../actual ) && echo "ø~?" > expected && test_cmp expected actual ' test_expect_success 'push utf-8 filenames' ' mkdir -p tmp && cd tmp && test_when_finished "cd .. && rm -rf tmp && LC_ALL=C" && LC_ALL=en_US.UTF-8 export LC_ALL ( bzr init bzrrepo && cd bzrrepo && echo one >> content && bzr add content && bzr commit -m one ) && ( git clone "bzr::$PWD/bzrrepo" gitrepo && cd gitrepo && echo test >> "ærø" && git add "ærø" && git commit -m utf-8 && git push ) && (cd bzrrepo && bzr ls > ../actual) && printf "content\nærø\n" > expected && test_cmp expected actual ' test_expect_success 'pushing a merge' ' mkdir -p tmp && cd tmp && test_when_finished "cd .. && rm -rf tmp" && ( bzr init bzrrepo && cd bzrrepo && echo one > content && bzr add content && bzr commit -m one ) && git clone "bzr::$PWD/bzrrepo" gitrepo && ( cd bzrrepo && echo two > content && bzr commit -m two ) && ( cd gitrepo && echo three > content && git commit -a -m three && git fetch && git merge origin/master || true && echo three > content && git commit -a --no-edit && git push ) && echo three > expected && cat bzrrepo/content > actual && test_cmp expected actual ' cat > expected <> content && bzr add content && bzr commit -m one ) && ( bzr branch bzrrepo/trunk bzrrepo/branch && cd bzrrepo/branch && echo two >> content && bzr commit -m one ) && ( git clone "bzr::$PWD/bzrrepo" gitrepo && cd gitrepo && git for-each-ref --format "%(refname:short)" refs/remotes/origin > ../actual ) && test_cmp ../expected actual ' test_expect_success 'strip' ' # Do not imitate this style; always chdir inside a subshell instead mkdir -p tmp && cd tmp && test_when_finished "cd .. && rm -rf tmp" && ( bzr init bzrrepo && cd bzrrepo && echo one >> content && bzr add content && bzr commit -m one && echo two >> content && bzr commit -m two ) && git clone "bzr::$PWD/bzrrepo" gitrepo && ( cd bzrrepo && bzr uncommit --force && echo three >> content && bzr commit -m three && echo four >> content && bzr commit -m four && bzr log --line | sed -e "s/^[0-9][0-9]*: //" > ../expected ) && ( cd gitrepo && git fetch && git log --format="%an %ad %s" --date=short origin/master > ../actual ) && test_cmp expected actual ' test_done