1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-11-15 05:33:04 +01:00
git/contrib/remote-helpers/test-bzr.sh

342 lines
6.5 KiB
Bash
Raw Normal View History

#!/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 <author@example.com>"
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 <<EOF
100644 blob 54f9d6da5c91d556e6b54340b1327573073030af content
100755 blob 68769579c3eaadbe555379b9c3538e6628bae1eb executable
120000 blob 6b584e8ece562ebffc15d38808cd6b98fc3d97ea link
EOF
test_expect_success 'special modes' '
(cd bzrrepo &&
echo exec > 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 <<EOF
100644 blob 54f9d6da5c91d556e6b54340b1327573073030af content
100755 blob 68769579c3eaadbe555379b9c3538e6628bae1eb executable
120000 blob 6b584e8ece562ebffc15d38808cd6b98fc3d97ea link
040000 tree 35c0caa46693cef62247ac89a680f0c5ce32b37b movedir-new
EOF
test_expect_success 'moving directory' '
(cd bzrrepo &&
mkdir movedir &&
echo one > 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 <jrey@example.com>" \
--author "John Doe <jdoe@example.com>") &&
(cd gitrepo &&
git pull &&
git show --format="%an <%ae>, %cn <%ce>" --quiet > ../actual) &&
echo "Jane Rey <jrey@example.com>, A U Thor <author@example.com>" > 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 <<EOF
origin/HEAD
origin/branch
origin/trunk
EOF
test_expect_success 'proper bzr repo' '
mkdir -p tmp && cd tmp &&
test_when_finished "cd .. && rm -rf tmp" &&
bzr init-repo bzrrepo &&
bzr init bzrrepo/trunk &&
(
cd bzrrepo/trunk &&
echo one >> 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