diff options
Diffstat (limited to 'contrib/git-svn/t')
-rw-r--r-- | contrib/git-svn/t/lib-git-svn.sh | 4 | ||||
-rw-r--r-- | contrib/git-svn/t/t0000-contrib-git-svn.sh | 143 | ||||
-rw-r--r-- | contrib/git-svn/t/t0001-contrib-git-svn-props.sh | 86 |
3 files changed, 139 insertions, 94 deletions
diff --git a/contrib/git-svn/t/lib-git-svn.sh b/contrib/git-svn/t/lib-git-svn.sh index a98e9d164..2843258fc 100644 --- a/contrib/git-svn/t/lib-git-svn.sh +++ b/contrib/git-svn/t/lib-git-svn.sh @@ -10,8 +10,8 @@ fi . ./test-lib.sh GIT_DIR=$PWD/.git -GIT_SVN_DIR=$GIT_DIR/git-svn -SVN_TREE=$GIT_SVN_DIR/tree +GIT_SVN_DIR=$GIT_DIR/svn/git-svn +SVN_TREE=$GIT_SVN_DIR/svn-tree svnadmin >/dev/null 2>&1 if test $? != 1 diff --git a/contrib/git-svn/t/t0000-contrib-git-svn.sh b/contrib/git-svn/t/t0000-contrib-git-svn.sh index 8b3a0d902..443d51836 100644 --- a/contrib/git-svn/t/t0000-contrib-git-svn.sh +++ b/contrib/git-svn/t/t0000-contrib-git-svn.sh @@ -4,13 +4,17 @@ # test_description='git-svn tests' +GIT_SVN_LC_ALL=$LC_ALL . ./lib-git-svn.sh mkdir import cd import echo foo > foo -ln -s foo foo.link +if test -z "$NO_SYMLINK" +then + ln -s foo foo.link +fi mkdir -p dir/a/b/c/d/e echo 'deep dir' > dir/a/b/c/d/e/file mkdir -p bar @@ -30,9 +34,10 @@ test_expect_success \ 'import an SVN revision into git' \ 'git-svn fetch' +test_expect_success "checkout from svn" "svn co $svnrepo $SVN_TREE" name='try a deep --rmdir with a commit' -git checkout -b mybranch remotes/git-svn +git checkout -f -b mybranch remotes/git-svn mv dir/a/b/c/d/e/file dir/file cp dir/file file git update-index --add --remove dir/a/b/c/d/e/file dir/file file @@ -40,6 +45,7 @@ git commit -m "$name" test_expect_success "$name" \ "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch && + svn up $SVN_TREE && test -d $SVN_TREE/dir && test ! -d $SVN_TREE/dir/a" @@ -51,14 +57,14 @@ git update-index --remove dir/file git update-index --add dir/file/file git commit -m "$name" -test_expect_code 1 "$name" \ +test_expect_failure "$name" \ 'git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch' \ || true name='detect node change from directory to file #1' rm -rf dir $GIT_DIR/index -git checkout -b mybranch2 remotes/git-svn +git checkout -f -b mybranch2 remotes/git-svn mv bar/zzz zzz rm -rf bar mv zzz bar @@ -66,14 +72,14 @@ git update-index --remove -- bar/zzz git update-index --add -- bar git commit -m "$name" -test_expect_code 1 "$name" \ +test_expect_failure "$name" \ 'git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch2' \ || true name='detect node change from file to directory #2' rm -f $GIT_DIR/index -git checkout -b mybranch3 remotes/git-svn +git checkout -f -b mybranch3 remotes/git-svn rm bar/zzz git-update-index --remove bar/zzz mkdir bar/zzz @@ -81,14 +87,14 @@ echo yyy > bar/zzz/yyy git-update-index --add bar/zzz/yyy git commit -m "$name" -test_expect_code 1 "$name" \ +test_expect_failure "$name" \ 'git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch3' \ || true name='detect node change from directory to file #2' rm -f $GIT_DIR/index -git checkout -b mybranch4 remotes/git-svn +git checkout -f -b mybranch4 remotes/git-svn rm -rf dir git update-index --remove -- dir/file touch dir @@ -96,20 +102,21 @@ echo asdf > dir git update-index --add -- dir git commit -m "$name" -test_expect_code 1 "$name" \ +test_expect_failure "$name" \ 'git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch4' \ || true name='remove executable bit from a file' rm -f $GIT_DIR/index -git checkout -b mybranch5 remotes/git-svn +git checkout -f -b mybranch5 remotes/git-svn chmod -x exec.sh git update-index exec.sh git commit -m "$name" test_expect_success "$name" \ "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && + svn up $SVN_TREE && test ! -x $SVN_TREE/exec.sh" @@ -120,49 +127,64 @@ git commit -m "$name" test_expect_success "$name" \ "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && + svn up $SVN_TREE && test -x $SVN_TREE/exec.sh" -name='executable file becomes a symlink to bar/zzz (file)' -rm exec.sh -ln -s bar/zzz exec.sh -git update-index exec.sh -git commit -m "$name" - -test_expect_success "$name" \ - "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && - test -L $SVN_TREE/exec.sh" - - - -name='new symlink is added to a file that was also just made executable' -chmod +x bar/zzz -ln -s bar/zzz exec-2.sh -git update-index --add bar/zzz exec-2.sh -git commit -m "$name" - -test_expect_success "$name" \ - "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && - test -x $SVN_TREE/bar/zzz && - test -L $SVN_TREE/exec-2.sh" - - - -name='modify a symlink to become a file' -git help > help || true -rm exec-2.sh -cp help exec-2.sh -git update-index exec-2.sh -git commit -m "$name" - -test_expect_success "$name" \ - "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && - test -f $SVN_TREE/exec-2.sh && - test ! -L $SVN_TREE/exec-2.sh && - diff -u help $SVN_TREE/exec-2.sh" - - +if test -z "$NO_SYMLINK" +then + name='executable file becomes a symlink to bar/zzz (file)' + rm exec.sh + ln -s bar/zzz exec.sh + git update-index exec.sh + git commit -m "$name" + + test_expect_success "$name" \ + "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && + svn up $SVN_TREE && + test -L $SVN_TREE/exec.sh" + + name='new symlink is added to a file that was also just made executable' + chmod +x bar/zzz + ln -s bar/zzz exec-2.sh + git update-index --add bar/zzz exec-2.sh + git commit -m "$name" + + test_expect_success "$name" \ + "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && + svn up $SVN_TREE && + test -x $SVN_TREE/bar/zzz && + test -L $SVN_TREE/exec-2.sh" + + name='modify a symlink to become a file' + git help > help || true + rm exec-2.sh + cp help exec-2.sh + git update-index exec-2.sh + git commit -m "$name" + + test_expect_success "$name" \ + "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && + svn up $SVN_TREE && + test -f $SVN_TREE/exec-2.sh && + test ! -L $SVN_TREE/exec-2.sh && + diff -u help $SVN_TREE/exec-2.sh" +fi + + +if test -n "$GIT_SVN_LC_ALL" && echo $GIT_SVN_LC_ALL | grep -q '\.UTF-8$' +then + name="commit with UTF-8 message: locale: $GIT_SVN_LC_ALL" + echo '# hello' >> exec-2.sh + git update-index exec-2.sh + git commit -m 'éï∏' + export LC_ALL="$GIT_SVN_LC_ALL" + test_expect_success "$name" "git-svn commit HEAD" + unset LC_ALL +else + echo "UTF-8 locale not set, test skipped ($GIT_SVN_LC_ALL)" +fi name='test fetch functionality (svn => git) with alternate GIT_SVN_ID' GIT_SVN_ID=alt @@ -173,5 +195,28 @@ test_expect_success "$name" \ git-rev-list --pretty=raw remotes/alt | grep ^tree | uniq > b && diff -u a b" +if test -n "$NO_SYMLINK" +then + test_done + exit 0 +fi + +name='check imported tree checksums expected tree checksums' +rm -f expected +if test -n "$GIT_SVN_LC_ALL" && echo $GIT_SVN_LC_ALL | grep -q '\.UTF-8$' +then + echo tree f735671b89a7eb30cab1d8597de35bd4271ab813 > expected +fi +cat >> expected <<\EOF +tree 4b9af72bb861eaed053854ec502cf7df72618f0f +tree 031b8d557afc6fea52894eaebb45bec52f1ba6d1 +tree 0b094cbff17168f24c302e297f55bfac65eb8bd3 +tree d667270a1f7b109f5eb3aaea21ede14b56bfdd6e +tree 56a30b966619b863674f5978696f4a3594f2fca9 +tree d667270a1f7b109f5eb3aaea21ede14b56bfdd6e +tree 8f51f74cf0163afc9ad68a4b1537288c4558b5a4 +EOF +test_expect_success "$name" "diff -u a expected" + test_done diff --git a/contrib/git-svn/t/t0001-contrib-git-svn-props.sh b/contrib/git-svn/t/t0001-contrib-git-svn-props.sh index 23a5a2a22..54e0ed735 100644 --- a/contrib/git-svn/t/t0001-contrib-git-svn-props.sh +++ b/contrib/git-svn/t/t0001-contrib-git-svn-props.sh @@ -52,49 +52,49 @@ EOF cd .. rm -rf import -svn co "$svnrepo" test_wc +test_expect_success 'checkout working copy from svn' "svn co $svnrepo test_wc" +test_expect_success 'setup some commits to svn' \ + 'cd test_wc && + echo Greetings >> kw.c && + svn commit -m "Not yet an Id" && + svn up && + echo Hello world >> kw.c && + svn commit -m "Modified file, but still not yet an Id" && + svn up && + svn propset svn:keywords Id kw.c && + svn commit -m "Propset Id" && + svn up && + cd ..' + +test_expect_success 'initialize git-svn' "git-svn init $svnrepo" +test_expect_success 'fetch revisions from svn' 'git-svn fetch' -cd test_wc - echo 'Greetings' >> kw.c - svn commit -m 'Not yet an $Id$' - svn up - - echo 'Hello world' >> kw.c - svn commit -m 'Modified file, but still not yet an $Id$' - svn up - - svn propset svn:keywords Id kw.c - svn commit -m 'Propset $Id$' - svn up -cd .. - -git-svn init "$svnrepo" -git-svn fetch - -git checkout -b mybranch remotes/git-svn -echo 'Hi again' >> kw.c name='test svn:keywords ignoring' - -git commit -a -m "$name" -git-svn commit remotes/git-svn..mybranch -git pull . remotes/git-svn +test_expect_success "$name" \ + 'git checkout -b mybranch remotes/git-svn && + echo Hi again >> kw.c && + git commit -a -m "test keywoards ignoring" && + git-svn commit remotes/git-svn..mybranch && + git pull . remotes/git-svn' expect='/* $Id$ */' got="`sed -ne 2p kw.c`" test_expect_success 'raw $Id$ found in kw.c' "test '$expect' = '$got'" -cd test_wc - svn propset svn:eol-style CR empty - svn propset svn:eol-style CR crlf - svn propset svn:eol-style CR ne_crlf - svn commit -m 'propset CR on crlf files' - svn up -cd .. +test_expect_success "propset CR on crlf files" \ + 'cd test_wc && + svn propset svn:eol-style CR empty && + svn propset svn:eol-style CR crlf && + svn propset svn:eol-style CR ne_crlf && + svn commit -m "propset CR on crlf files" && + svn up && + cd ..' -git-svn fetch -git pull . remotes/git-svn +test_expect_success 'fetch and pull latest from svn and checkout a new wc' \ + "git-svn fetch && + git pull . remotes/git-svn && + svn co $svnrepo new_wc" -svn co "$svnrepo" new_wc for i in crlf ne_crlf lf ne_lf cr ne_cr empty_cr empty_lf empty empty_crlf do test_expect_success "Comparing $i" "cmp $i new_wc/$i" @@ -106,16 +106,16 @@ cd test_wc printf '$Id$\rHello\rWorld' > ne_cr a_cr=`printf '$Id$\r\nHello\r\nWorld\r\n' | git-hash-object --stdin` a_ne_cr=`printf '$Id$\r\nHello\r\nWorld' | git-hash-object --stdin` - svn propset svn:eol-style CRLF cr - svn propset svn:eol-style CRLF ne_cr - svn propset svn:keywords Id cr - svn propset svn:keywords Id ne_cr - svn commit -m 'propset CRLF on cr files' - svn up + test_expect_success 'Set CRLF on cr files' \ + 'svn propset svn:eol-style CRLF cr && + svn propset svn:eol-style CRLF ne_cr && + svn propset svn:keywords Id cr && + svn propset svn:keywords Id ne_cr && + svn commit -m "propset CRLF on cr files" && + svn up' cd .. - -git-svn fetch -git pull . remotes/git-svn +test_expect_success 'fetch and pull latest from svn' \ + 'git-svn fetch && git pull . remotes/git-svn' b_cr="`git-hash-object cr`" b_ne_cr="`git-hash-object ne_cr`" |