Sane use of test_expect_failure
[gitweb.git] / t / t9106-git-svn-commit-diff-clobber.sh
index 58698b3f29966593d1f7063b04e8d07322636572..f74ab1269e3fa79a34aa9f9a3a64df08728e6354 100755 (executable)
@@ -4,13 +4,6 @@
 test_description='git-svn commit-diff clobber'
 . ./lib-git-svn.sh
 
-if test -n "$GIT_SVN_NO_LIB" && test "$GIT_SVN_NO_LIB" -ne 0
-then
-       echo 'Skipping: commit-diff clobber needs SVN libraries'
-       test_done
-       exit 0
-fi
-
 test_expect_success 'initialize repo' "
        mkdir import &&
        cd import &&
@@ -25,16 +18,17 @@ test_expect_success 'commit change from svn side' "
        svn co $svnrepo t.svn &&
        cd t.svn &&
        echo second line from svn >> file &&
+       poke file &&
        svn commit -m 'second line from svn' &&
        cd .. &&
        rm -rf t.svn
        "
 
-test_expect_failure 'commit conflicting change from git' "
+test_expect_success 'commit conflicting change from git' "
        echo second line from git >> file &&
        git commit -a -m 'second line from git' &&
-       git-svn commit-diff -r1 HEAD~1 HEAD $svnrepo
-       " || true
+       git-svn commit-diff -r1 HEAD~1 HEAD $svnrepo
+"
 
 test_expect_success 'commit complementing change from git' "
        git reset --hard HEAD~1 &&
@@ -45,20 +39,21 @@ test_expect_success 'commit complementing change from git' "
        git-svn commit-diff -r2 HEAD~1 HEAD $svnrepo
        "
 
-test_expect_failure 'dcommit fails to commit because of conflict' "
+test_expect_success 'dcommit fails to commit because of conflict' "
        git-svn init $svnrepo &&
        git-svn fetch &&
        git reset --hard refs/remotes/git-svn &&
        svn co $svnrepo t.svn &&
        cd t.svn &&
        echo fourth line from svn >> file &&
+       poke file &&
        svn commit -m 'fourth line from svn' &&
        cd .. &&
        rm -rf t.svn &&
        echo 'fourth line from git' >> file &&
        git commit -a -m 'fourth line from git' &&
-       git-svn dcommit
-       " || true
+       git-svn dcommit
+       "
 
 test_expect_success 'dcommit does the svn equivalent of an index merge' "
        git reset --hard refs/remotes/git-svn &&
@@ -71,4 +66,34 @@ test_expect_success 'dcommit does the svn equivalent of an index merge' "
        git-svn dcommit
        "
 
+test_expect_success 'commit another change from svn side' "
+       svn co $svnrepo t.svn &&
+       cd t.svn &&
+               echo third line from svn >> file &&
+               poke file &&
+               svn commit -m 'third line from svn' &&
+       cd .. &&
+       rm -rf t.svn
+       "
+
+test_expect_success 'multiple dcommit from git-svn will not clobber svn' "
+       git reset --hard refs/remotes/git-svn &&
+       echo new file >> new-file &&
+       git update-index --add new-file &&
+       git commit -a -m 'new file' &&
+       echo clobber > file &&
+       git commit -a -m 'clobber' &&
+       ! git svn dcommit
+       "
+
+
+test_expect_success 'check that rebase really failed' 'test -d .dotest'
+
+test_expect_success 'resolve, continue the rebase and dcommit' "
+       echo clobber and I really mean it > file &&
+       git update-index file &&
+       git rebase --continue &&
+       git svn dcommit
+       "
+
 test_done