#!/bin/sh

test_description='git remote group handling'
. ./test-lib.sh

mark() {
	echo "$1" >mark
}

update_repo() {
	(cd $1 &&
	echo content >>file &&
	git add file &&
	git commit -F ../mark)
}

update_repos() {
	update_repo one $1 &&
	update_repo two $1
}

repo_fetched() {
	if test "`git log -1 --pretty=format:%s $1 --`" = "`cat mark`"; then
		echo >&2 "repo was fetched: $1"
		return 0
	fi
	echo >&2 "repo was not fetched: $1"
	return 1
}

test_expect_success 'setup' '
	mkdir one && (cd one && git init) &&
	mkdir two && (cd two && git init) &&
	git remote add -m master one one &&
	git remote add -m master two two
'

test_expect_success 'no group updates all' '
	mark update-all &&
	update_repos &&
	git remote update &&
	repo_fetched one &&
	repo_fetched two
'

test_expect_success 'nonexistant group produces error' '
	mark nonexistant &&
	update_repos &&
	test_must_fail git remote update nonexistant &&
	! repo_fetched one &&
	! repo_fetched two
'

test_expect_success 'updating group updates all members' '
	mark group-all &&
	update_repos &&
	git config --add remotes.all one &&
	git config --add remotes.all two &&
	git remote update all &&
	repo_fetched one &&
	repo_fetched two
'

test_expect_success 'updating group does not update non-members' '
	mark group-some &&
	update_repos &&
	git config --add remotes.some one &&
	git remote update some &&
	repo_fetched one &&
	! repo_fetched two
'

test_expect_success 'updating remote name updates that remote' '
	mark remote-name &&
	update_repos &&
	git remote update one &&
	repo_fetched one &&
	! repo_fetched two
'

test_done
