#!/bin/sh
#
# Copyright (c) 2006 Eric Wong
#

test_description='git-svn basic tests'
GIT_SVN_LC_ALL=${LC_ALL:-$LANG}

case "$GIT_SVN_LC_ALL" in
*.UTF-8)
	have_utf8=t
	;;
*)
	have_utf8=
	;;
esac

. ./lib-git-svn.sh

say 'define NO_SVN_TESTS to skip git-svn tests'

test_expect_success \
    'initialize git-svn' '
	mkdir import &&
	cd import &&
	echo foo > foo &&
	ln -s foo foo.link
	mkdir -p dir/a/b/c/d/e &&
	echo "deep dir" > dir/a/b/c/d/e/file &&
	mkdir bar &&
	echo "zzz" > bar/zzz &&
	echo "#!/bin/sh" > exec.sh &&
	chmod +x exec.sh &&
	svn import -m "import for git-svn" . "$svnrepo" >/dev/null &&
	cd .. &&
	rm -rf import &&
	git-svn init "$svnrepo"'

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'
test_expect_success "$name" '
	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 &&
	git commit -m "$name" &&
	git-svn set-tree --find-copies-harder --rmdir \
		remotes/git-svn..mybranch &&
	svn up "$SVN_TREE" &&
	test -d "$SVN_TREE"/dir && test ! -d "$SVN_TREE"/dir/a'


name='detect node change from file to directory #1'
test_expect_success "$name" "
	mkdir dir/new_file &&
	mv dir/file dir/new_file/file &&
	mv dir/new_file dir/file &&
	git update-index --remove dir/file &&
	git update-index --add dir/file/file &&
	git commit -m '$name' &&
	! git-svn set-tree --find-copies-harder --rmdir \
		remotes/git-svn..mybranch" || true


name='detect node change from directory to file #1'
test_expect_success "$name" '
	rm -rf dir "$GIT_DIR"/index &&
	git checkout -f -b mybranch2 remotes/git-svn &&
	mv bar/zzz zzz &&
	rm -rf bar &&
	mv zzz bar &&
	git update-index --remove -- bar/zzz &&
	git update-index --add -- bar &&
	git commit -m "$name" &&
	! git-svn set-tree --find-copies-harder --rmdir \
		remotes/git-svn..mybranch2' || true


name='detect node change from file to directory #2'
test_expect_success "$name" '
	rm -f "$GIT_DIR"/index &&
	git checkout -f -b mybranch3 remotes/git-svn &&
	rm bar/zzz &&
	git update-index --remove bar/zzz &&
	mkdir bar/zzz &&
	echo yyy > bar/zzz/yyy &&
	git update-index --add bar/zzz/yyy &&
	git commit -m "$name" &&
	! git-svn set-tree --find-copies-harder --rmdir \
		remotes/git-svn..mybranch3' || true


name='detect node change from directory to file #2'
test_expect_success "$name" '
	rm -f "$GIT_DIR"/index &&
	git checkout -f -b mybranch4 remotes/git-svn &&
	rm -rf dir &&
	git update-index --remove -- dir/file &&
	touch dir &&
	echo asdf > dir &&
	git update-index --add -- dir &&
	git commit -m "$name" &&
	! git-svn set-tree --find-copies-harder --rmdir \
		remotes/git-svn..mybranch4' || true


name='remove executable bit from a file'
test_expect_success "$name" '
	rm -f "$GIT_DIR"/index &&
	git checkout -f -b mybranch5 remotes/git-svn &&
	chmod -x exec.sh &&
	git update-index exec.sh &&
	git commit -m "$name" &&
	git-svn set-tree --find-copies-harder --rmdir \
		remotes/git-svn..mybranch5 &&
	svn up "$SVN_TREE" &&
	test ! -x "$SVN_TREE"/exec.sh'


name='add executable bit back file'
test_expect_success "$name" '
	chmod +x exec.sh &&
	git update-index exec.sh &&
	git commit -m "$name" &&
	git-svn set-tree --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)'
test_expect_success "$name" '
	rm exec.sh &&
	ln -s bar/zzz exec.sh &&
	git update-index exec.sh &&
	git commit -m "$name" &&
	git-svn set-tree --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'

test_expect_success "$name" '
	chmod +x bar/zzz &&
	ln -s bar/zzz exec-2.sh &&
	git update-index --add bar/zzz exec-2.sh &&
	git commit -m "$name" &&
	git-svn set-tree --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'
test_expect_success "$name" '
	echo git help > help || true &&
	rm exec-2.sh &&
	cp help exec-2.sh &&
	git update-index exec-2.sh &&
	git commit -m "$name" &&
	git-svn set-tree --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 &&
	test_cmp help "$SVN_TREE"/exec-2.sh'

if test "$have_utf8" = t
then
	name="commit with UTF-8 message: locale: $GIT_SVN_LC_ALL"
	LC_ALL="$GIT_SVN_LC_ALL"
	export LC_ALL
	test_expect_success "$name" "
		echo '# hello' >> exec-2.sh &&
		git update-index exec-2.sh &&
		git commit -m 'éï∏' &&
		git-svn set-tree HEAD"
	unset LC_ALL
else
	say "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
export GIT_SVN_ID
test_expect_success "$name" \
    'git-svn init "$svnrepo" && git-svn fetch &&
     git rev-list --pretty=raw remotes/git-svn | grep ^tree | uniq > a &&
     git rev-list --pretty=raw remotes/alt | grep ^tree | uniq > b &&
     test_cmp a b'

name='check imported tree checksums expected tree checksums'
rm -f expected
if test "$have_utf8" = t
then
	echo tree bf522353586b1b883488f2bc73dab0d9f774b9a9 > expected
fi
cat >> expected <<\EOF
tree 83654bb36f019ae4fe77a0171f81075972087624
tree 031b8d557afc6fea52894eaebb45bec52f1ba6d1
tree 0b094cbff17168f24c302e297f55bfac65eb8bd3
tree d667270a1f7b109f5eb3aaea21ede14b56bfdd6e
tree 56a30b966619b863674f5978696f4a3594f2fca9
tree d667270a1f7b109f5eb3aaea21ede14b56bfdd6e
tree 8f51f74cf0163afc9ad68a4b1537288c4558b5a4
EOF

test_expect_success "$name" "test_cmp a expected"

test_expect_success 'exit if remote refs are ambigious' "
        git config --add svn-remote.svn.fetch \
                              bar:refs/remotes/git-svn &&
	! git-svn migrate
"

test_expect_success 'exit if init-ing a would clobber a URL' '
        svnadmin create "${PWD}/svnrepo2" &&
        svn mkdir -m "mkdir bar" "${svnrepo}2/bar" &&
        git config --unset svn-remote.svn.fetch \
                                "^bar:refs/remotes/git-svn$" &&
	! git-svn init "${svnrepo}2/bar"
        '

test_expect_success \
  'init allows us to connect to another directory in the same repo' '
        git-svn init --minimize-url -i bar "$svnrepo/bar" &&
        git config --get svn-remote.svn.fetch \
                              "^bar:refs/remotes/bar$" &&
        git config --get svn-remote.svn.fetch \
                              "^:refs/remotes/git-svn$"
        '

test_expect_success 'able to dcommit to a subdirectory' "
	git-svn fetch -i bar &&
	git checkout -b my-bar refs/remotes/bar &&
	echo abc > d &&
	git update-index --add d &&
	git commit -m '/bar/d should be in the log' &&
	git-svn dcommit -i bar &&
	test -z \"\`git diff refs/heads/my-bar refs/remotes/bar\`\" &&
	mkdir newdir &&
	echo new > newdir/dir &&
	git update-index --add newdir/dir &&
	git commit -m 'add a new directory' &&
	git-svn dcommit -i bar &&
	test -z \"\`git diff refs/heads/my-bar refs/remotes/bar\`\" &&
	echo foo >> newdir/dir &&
	git update-index newdir/dir &&
	git commit -m 'modify a file in new directory' &&
	git-svn dcommit -i bar &&
	test -z \"\`git diff refs/heads/my-bar refs/remotes/bar\`\"
	"

test_expect_success 'able to set-tree to a subdirectory' "
	echo cba > d &&
	git update-index d &&
	git commit -m 'update /bar/d' &&
	git-svn set-tree -i bar HEAD &&
	test -z \"\`git diff refs/heads/my-bar refs/remotes/bar\`\"
	"

test_done
