git/t/t9106-git-svn-commit-diff-clobber.sh
Bryan Donlan f69e836fab Fix tests breaking when checkout path contains shell metacharacters
This fixes the remainder of the issues where the test script itself is at
fault for failing when the git checkout path contains whitespace or other
shell metacharacters.

The majority of git svn tests used the idiom

  test_expect_success "title" "test script using $svnrepo"

These were changed to have the test script in single-quotes:

  test_expect_success "title" 'test script using "$svnrepo"'

which unfortunately makes the patch appear larger than it really is.

One consequence of this change is that in the verbose test output the
value of $svnrepo (and in some cases other variables, too) is no
longer expanded, i.e. previously we saw

  * expecting success:
	test script using /path/to/git/t/trash/svnrepo

but now it is:

  * expecting success:
	test script using "$svnrepo"

Signed-off-by: Bryan Donlan <bdonlan@fushizen.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-05-05 14:37:02 -07:00

100 lines
2.5 KiB
Bash
Executable file

#!/bin/sh
#
# Copyright (c) 2006 Eric Wong
test_description='git-svn commit-diff clobber'
. ./lib-git-svn.sh
test_expect_success 'initialize repo' '
mkdir import &&
cd import &&
echo initial > file &&
svn import -m "initial" . "$svnrepo" &&
cd .. &&
echo initial > file &&
git update-index --add file &&
git commit -a -m "initial"
'
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_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"
'
test_expect_success 'commit complementing change from git' '
git reset --hard HEAD~1 &&
echo second line from svn >> file &&
git commit -a -m "second line from svn" &&
echo third line from git >> file &&
git commit -a -m "third line from git" &&
git-svn commit-diff -r2 HEAD~1 HEAD "$svnrepo"
'
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
'
test_expect_success 'dcommit does the svn equivalent of an index merge' "
git reset --hard refs/remotes/git-svn &&
echo 'index merge' > file2 &&
git update-index --add file2 &&
git commit -a -m 'index merge' &&
echo 'more changes' >> file2 &&
git update-index file2 &&
git commit -a -m 'more changes' &&
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