#!/bin/sh
#
# Copyright (c) 2010 Sverre Rabbelier
#

test_description='Test python remote-helper framework'

. ./test-lib.sh

if ! test_have_prereq PYTHON ; then
	skip_all='skipping python remote-helper tests, python not available'
	test_done
fi

"$PYTHON_PATH" -c '
import sys
if sys.hexversion < 0x02040000:
    sys.exit(1)
' || {
	skip_all='skipping python remote-helper tests, python version < 2.4'
	test_done
}

compare_refs() {
	git --git-dir="$1/.git" rev-parse --verify $2 >expect &&
	git --git-dir="$3/.git" rev-parse --verify $4 >actual &&
	test_cmp expect actual
}

test_expect_success 'setup repository' '
	git init --bare server/.git &&
	git clone server public &&
	(cd public &&
	 echo content >file &&
	 git add file &&
	 git commit -m one &&
	 git push origin master)
'

test_expect_success 'cloning from local repo' '
	git clone "testpy::${PWD}/server" localclone &&
	test_cmp public/file localclone/file
'

test_expect_success 'cloning from remote repo' '
	git clone "testpy::file://${PWD}/server" clone &&
	test_cmp public/file clone/file
'

test_expect_success 'create new commit on remote' '
	(cd public &&
	 echo content >>file &&
	 git commit -a -m two &&
	 git push)
'

test_expect_success 'pulling from local repo' '
	(cd localclone && git pull) &&
	test_cmp public/file localclone/file
'

test_expect_success 'pulling from remote remote' '
	(cd clone && git pull) &&
	test_cmp public/file clone/file
'

test_expect_success 'pushing to local repo' '
	(cd localclone &&
	echo content >>file &&
	git commit -a -m three &&
	git push) &&
	compare_refs localclone HEAD server HEAD
'

# Generally, skip this test.  It demonstrates a now-fixed race in
# git-remote-testpy, but is too slow to leave in for general use.
: test_expect_success 'racily pushing to local repo' '
	test_when_finished "rm -rf server2 localclone2" &&
	cp -R server server2 &&
	git clone "testpy::${PWD}/server2" localclone2 &&
	(cd localclone2 &&
	echo content >>file &&
	git commit -a -m three &&
	GIT_REMOTE_TESTGIT_SLEEPY=2 git push) &&
	compare_refs localclone2 HEAD server2 HEAD
'

test_expect_success 'synch with changes from localclone' '
	(cd clone &&
	 git pull)
'

test_expect_success 'pushing remote local repo' '
	(cd clone &&
	echo content >>file &&
	git commit -a -m four &&
	git push) &&
	compare_refs clone HEAD server HEAD
'

test_expect_success 'fetch new branch' '
	(cd public &&
	 git checkout -b new &&
	 echo content >>file &&
	 git commit -a -m five &&
	 git push origin new
	) &&
	(cd localclone &&
	 git fetch origin new
	) &&
	compare_refs public HEAD localclone FETCH_HEAD
'

test_expect_success 'fetch multiple branches' '
	(cd localclone &&
	 git fetch
	) &&
	compare_refs server master localclone refs/remotes/origin/master &&
	compare_refs server new localclone refs/remotes/origin/new
'

test_expect_success 'push when remote has extra refs' '
	(cd clone &&
	 echo content >>file &&
	 git commit -a -m six &&
	 git push
	) &&
	compare_refs clone master server master
'

test_expect_success 'push new branch by name' '
	(cd clone &&
	 git checkout -b new-name  &&
	 echo content >>file &&
	 git commit -a -m seven &&
	 git push origin new-name
	) &&
	compare_refs clone HEAD server refs/heads/new-name
'

test_expect_failure 'push new branch with old:new refspec' '
	(cd clone &&
	 git push origin new-name:new-refspec
	) &&
	compare_refs clone HEAD server refs/heads/new-refspec
'

test_expect_success 'proper failure checks for fetching' '
	(GIT_REMOTE_TESTGIT_FAILURE=1 &&
	export GIT_REMOTE_TESTGIT_FAILURE &&
	cd localclone &&
	test_must_fail git fetch 2>&1 | \
		grep "Error while running fast-import"
	)
'

# We sleep to give fast-export a chance to catch the SIGPIPE
test_expect_failure 'proper failure checks for pushing' '
	(GIT_REMOTE_TESTGIT_FAILURE=1 &&
	export GIT_REMOTE_TESTGIT_FAILURE &&
	GIT_REMOTE_TESTGIT_SLEEPY=1 &&
	export GIT_REMOTE_TESTGIT_SLEEPY &&
	cd localclone &&
	test_must_fail git push --all 2>&1 | \
		grep "Error while running fast-export"
	)
'

test_done
