Neither mercurial nor git allows pushing to a remote when it's a
non-fast-forward push. We should be able to detect theses errors and
report them properly.

As opposed to throwing an exception stack-trace.

Signed-off-by: Felipe Contreras <felipe.contre...@gmail.com>
---
 contrib/remote-helpers/test-hg.sh | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/contrib/remote-helpers/test-hg.sh 
b/contrib/remote-helpers/test-hg.sh
index 5e4f53f..06700a8 100755
--- a/contrib/remote-helpers/test-hg.sh
+++ b/contrib/remote-helpers/test-hg.sh
@@ -32,6 +32,12 @@ check_bookmark () {
        test_cmp expected actual
 }
 
+check_branch () {
+       echo $3 > expected &&
+       hg -R $1 log -r $2 --template '{desc}\n' > actual &&
+       test_cmp expected actual
+}
+
 setup () {
        (
        echo "[ui]"
@@ -252,4 +258,27 @@ test_expect_success 'remote new bookmark' '
        check_bookmark hgrepo feature-b feature-b
 '
 
+test_expect_failure 'remote push diverged' '
+       test_when_finished "rm -rf gitrepo*" &&
+
+       git clone "hg::hgrepo" gitrepo &&
+
+       (
+       cd hgrepo &&
+       hg checkout default &&
+       echo bump > content &&
+       hg commit -m bump
+       ) &&
+
+       (
+       cd gitrepo &&
+       echo diverge > content &&
+       git commit -a -m diverged &&
+       test_expect_code 1 git push 2> error &&
+       grep "^ ! \[rejected\] *master -> master (non-fast-forward)$" error
+       ) &&
+
+       check_branch hgrepo default bump
+'
+
 test_done
-- 
1.8.3.rc1.579.g184e698

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to