Merge branch 'jk/two-way-merge-corner-case-fix' into maint
[gitweb.git] / contrib / remote-helpers / test-bzr.sh
index 4ab73ec4e558df528f89f7263fb9c4c7e5fda025..5c5025178370813aabec64c8bfbd7ac59c6186a5 100755 (executable)
@@ -7,26 +7,21 @@ test_description='Test remote-bzr'
 
 . ./test-lib.sh
 
-if ! test_have_prereq PYTHON; then
+if ! test_have_prereq PYTHON
+then
        skip_all='skipping remote-bzr tests; python not available'
        test_done
 fi
 
-if ! python -c 'import bzrlib'; then
+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 &&
+       echo $3 >expected &&
+       git --git-dir=$1/.git log --format='%s' -1 $2 >actual
        test_cmp expected actual
 }
 
@@ -36,37 +31,37 @@ test_expect_success 'cloning' '
        (
        bzr init bzrrepo &&
        cd bzrrepo &&
-       echo one > content &&
+       echo one >content &&
        bzr add content &&
        bzr commit -m one
        ) &&
 
-       git clone "bzr::$PWD/bzrrepo" gitrepo &&
-       check gitrepo one master
+       git clone "bzr::bzrrepo" gitrepo &&
+       check gitrepo HEAD one
 '
 
 test_expect_success 'pulling' '
        (
        cd bzrrepo &&
-       echo two > content &&
+       echo two >content &&
        bzr commit -m two
        ) &&
 
        (cd gitrepo && git pull) &&
 
-       check gitrepo two master
+       check gitrepo HEAD two
 '
 
 test_expect_success 'pushing' '
        (
        cd gitrepo &&
-       echo three > content &&
+       echo three >content &&
        git commit -a -m three &&
        git push
        ) &&
 
-       echo three > expected &&
-       cat bzrrepo/content > actual &&
+       echo three >expected &&
+       cat bzrrepo/content >actual &&
        test_cmp expected actual
 '
 
@@ -74,38 +69,38 @@ test_expect_success 'roundtrip' '
        (
        cd gitrepo &&
        git pull &&
-       git log --format="%s" -1 origin/master > actual
+       git log --format="%s" -1 origin/master >actual
        ) &&
-       echo three > expected &&
+       echo three >expected &&
        test_cmp expected actual &&
 
        (cd gitrepo && git push && git pull) &&
 
        (
        cd bzrrepo &&
-       echo four > content &&
+       echo four >content &&
        bzr commit -m four
        ) &&
 
        (cd gitrepo && git pull && git push) &&
 
-       check gitrepo four master &&
+       check gitrepo HEAD four &&
 
        (
        cd gitrepo &&
-       echo five > content &&
+       echo five >content &&
        git commit -a -m five &&
        git push && git pull
        ) &&
 
        (cd bzrrepo && bzr revert) &&
 
-       echo five > expected &&
-       cat bzrrepo/content > actual &&
+       echo five >expected &&
+       cat bzrrepo/content >actual &&
        test_cmp expected actual
 '
 
-cat > expected <<EOF
+cat >expected <<\EOF
 100644 blob 54f9d6da5c91d556e6b54340b1327573073030af   content
 100755 blob 68769579c3eaadbe555379b9c3538e6628bae1eb   executable
 120000 blob 6b584e8ece562ebffc15d38808cd6b98fc3d97ea   link
@@ -114,7 +109,7 @@ EOF
 test_expect_success 'special modes' '
        (
        cd bzrrepo &&
-       echo exec > executable
+       echo exec >executable
        chmod +x executable &&
        bzr add executable
        bzr commit -m exec &&
@@ -129,21 +124,21 @@ test_expect_success 'special modes' '
        (
        cd gitrepo &&
        git pull
-       git ls-tree HEAD > ../actual
+       git ls-tree HEAD >../actual
        ) &&
 
        test_cmp expected actual &&
 
        (
        cd gitrepo &&
-       git cat-file -p HEAD:link > ../actual
+       git cat-file -p HEAD:link >../actual
        ) &&
 
-       printf content > expected &&
+       printf content >expected &&
        test_cmp expected actual
 '
 
-cat > expected <<EOF
+cat >expected <<\EOF
 100644 blob 54f9d6da5c91d556e6b54340b1327573073030af   content
 100755 blob 68769579c3eaadbe555379b9c3538e6628bae1eb   executable
 120000 blob 6b584e8ece562ebffc15d38808cd6b98fc3d97ea   link
@@ -154,8 +149,8 @@ test_expect_success 'moving directory' '
        (
        cd bzrrepo &&
        mkdir movedir &&
-       echo one > movedir/one &&
-       echo two > movedir/two &&
+       echo one >movedir/one &&
+       echo two >movedir/two &&
        bzr add movedir &&
        bzr commit -m movedir &&
        bzr mv movedir movedir-new &&
@@ -165,7 +160,7 @@ test_expect_success 'moving directory' '
        (
        cd gitrepo &&
        git pull &&
-       git ls-tree HEAD > ../actual
+       git ls-tree HEAD >../actual
        ) &&
 
        test_cmp expected actual
@@ -174,7 +169,7 @@ test_expect_success 'moving directory' '
 test_expect_success 'different authors' '
        (
        cd bzrrepo &&
-       echo john >> content &&
+       echo john >>content &&
        bzr commit -m john \
          --author "Jane Rey <jrey@example.com>" \
          --author "John Doe <jdoe@example.com>"
@@ -183,16 +178,18 @@ test_expect_success 'different authors' '
        (
        cd gitrepo &&
        git pull &&
-       git show --format="%an <%ae>, %cn <%ce>" --quiet > ../actual
+       git show --format="%an <%ae>, %cn <%ce>" --quiet >../actual
        ) &&
 
-       echo "Jane Rey <jrey@example.com>, A U Thor <author@example.com>" > expected &&
+       echo "Jane Rey <jrey@example.com>, A U Thor <author@example.com>" >expected &&
        test_cmp expected actual
 '
 
+# cleanup previous stuff
+rm -rf bzrrepo gitrepo
+
 test_expect_success 'fetch utf-8 filenames' '
-       mkdir -p tmp && cd tmp &&
-       test_when_finished "cd .. && rm -rf tmp && LC_ALL=C" &&
+       test_when_finished "rm -rf bzrrepo gitrepo && LC_ALL=C" &&
 
        LC_ALL=en_US.UTF-8
        export LC_ALL
@@ -201,12 +198,12 @@ test_expect_success 'fetch utf-8 filenames' '
        bzr init bzrrepo &&
        cd bzrrepo &&
 
-       echo test >> "ærø" &&
+       echo test >>"ærø" &&
        bzr add "ærø" &&
-       echo test >> "ø~?" &&
+       echo test >>"ø~?" &&
        bzr add "ø~?" &&
        bzr commit -m add-utf-8 &&
-       echo test >> "ærø" &&
+       echo test >>"ærø" &&
        bzr commit -m test-utf-8 &&
        bzr rm "ø~?" &&
        bzr mv "ærø" "ø~?" &&
@@ -214,17 +211,18 @@ test_expect_success 'fetch utf-8 filenames' '
        ) &&
 
        (
-       git clone "bzr::$PWD/bzrrepo" gitrepo &&
+       git clone "bzr::bzrrepo" gitrepo &&
        cd gitrepo &&
-       git -c core.quotepath=false ls-files > ../actual
+       git -c core.quotepath=false ls-files >../actual
        ) &&
-       echo "ø~?" > expected &&
+       echo "ø~?" >expected &&
        test_cmp expected actual
 '
 
 test_expect_success 'push utf-8 filenames' '
+       test_when_finished "rm -rf bzrrepo gitrepo && LC_ALL=C" &&
+
        mkdir -p tmp && cd tmp &&
-       test_when_finished "cd .. && rm -rf tmp && LC_ALL=C" &&
 
        LC_ALL=en_US.UTF-8
        export LC_ALL
@@ -233,79 +231,77 @@ test_expect_success 'push utf-8 filenames' '
        bzr init bzrrepo &&
        cd bzrrepo &&
 
-       echo one >> content &&
+       echo one >>content &&
        bzr add content &&
        bzr commit -m one
        ) &&
 
        (
-       git clone "bzr::$PWD/bzrrepo" gitrepo &&
+       git clone "bzr::bzrrepo" gitrepo &&
        cd gitrepo &&
 
-       echo test >> "ærø" &&
+       echo test >>"ærø" &&
        git add "ærø" &&
        git commit -m utf-8 &&
 
        git push
        ) &&
 
-       (cd bzrrepo && bzr ls > ../actual) &&
-       printf "content\nærø\n" > expected &&
+       (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" &&
+       test_when_finished "rm -rf bzrrepo gitrepo" &&
 
        (
        bzr init bzrrepo &&
        cd bzrrepo &&
-       echo one > content &&
+       echo one >content &&
        bzr add content &&
        bzr commit -m one
        ) &&
 
-       git clone "bzr::$PWD/bzrrepo" gitrepo &&
+       git clone "bzr::bzrrepo" gitrepo &&
 
        (
        cd bzrrepo &&
-       echo two > content &&
+       echo two >content &&
        bzr commit -m two
        ) &&
 
        (
        cd gitrepo &&
-       echo three > content &&
+       echo three >content &&
        git commit -a -m three &&
        git fetch &&
        git merge origin/master || true &&
-       echo three > content &&
+       echo three >content &&
        git commit -a --no-edit &&
        git push
        ) &&
 
-       echo three > expected &&
-       cat bzrrepo/content > actual &&
+       echo three >expected &&
+       cat bzrrepo/content >actual &&
        test_cmp expected actual
 '
 
-cat > expected <<EOF
+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" &&
+       test_when_finished "rm -rf bzrrepo gitrepo" &&
 
        bzr init-repo bzrrepo &&
 
        (
        bzr init bzrrepo/trunk &&
        cd bzrrepo/trunk &&
-       echo one >> content &&
+       echo one >>content &&
        bzr add content &&
        bzr commit -m one
        ) &&
@@ -313,56 +309,84 @@ test_expect_success 'proper bzr repo' '
        (
        bzr branch bzrrepo/trunk bzrrepo/branch &&
        cd bzrrepo/branch &&
-       echo two >> content &&
+       echo two >>content &&
        bzr commit -m one
        ) &&
 
        (
-       git clone "bzr::$PWD/bzrrepo" gitrepo &&
+       git clone "bzr::bzrrepo" gitrepo &&
        cd gitrepo &&
-       git for-each-ref --format "%(refname:short)" refs/remotes/origin > ../actual
+       git for-each-ref --format "%(refname:short)" refs/remotes/origin >../actual
        ) &&
 
-       test_cmp ../expected 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" &&
+       test_when_finished "rm -rf bzrrepo gitrepo" &&
 
        (
        bzr init bzrrepo &&
        cd bzrrepo &&
 
-       echo one >> content &&
+       echo one >>content &&
        bzr add content &&
        bzr commit -m one &&
 
-       echo two >> content &&
+       echo two >>content &&
        bzr commit -m two
        ) &&
 
-       git clone "bzr::$PWD/bzrrepo" gitrepo &&
+       git clone "bzr::bzrrepo" gitrepo &&
 
        (
        cd bzrrepo &&
        bzr uncommit --force &&
 
-       echo three >> content &&
+       echo three >>content &&
        bzr commit -m three &&
 
-       echo four >> content &&
+       echo four >>content &&
        bzr commit -m four &&
-       bzr log --line | sed -e "s/^[0-9][0-9]*: //" > ../expected
+       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
+       git log --format="%an %ad %s" --date=short origin/master >../actual
+       ) &&
+
+       test_cmp expected actual
+'
+
+test_expect_success 'export utf-8 authors' '
+       test_when_finished "rm -rf bzrrepo gitrepo && LC_ALL=C && unset GIT_COMMITTER_NAME" &&
+
+       LC_ALL=en_US.UTF-8
+       export LC_ALL
+
+       GIT_COMMITTER_NAME="Grégoire"
+       export GIT_COMMITTER_NAME
+
+       bzr init bzrrepo &&
+
+       (
+       git init gitrepo &&
+       cd gitrepo &&
+       echo greg >>content &&
+       git add content &&
+       git commit -m one &&
+       git remote add bzr "bzr::../bzrrepo" &&
+       git push bzr
+       ) &&
+
+       (
+       cd bzrrepo &&
+       bzr log | grep "^committer: " >../actual
        ) &&
 
+       echo "committer: Grégoire <committer@example.com>" >expected &&
        test_cmp expected actual
 '