#!/bin/sh

test_description='git remote group handling'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME

TEST_PASSES_SANITIZE_LEAK=true
. ./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 main one one &&
	git remote add -m main 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 'nonexistent group produces error' '
	mark nonexistent &&
	update_repos &&
	test_must_fail git remote update nonexistent &&
	! repo_fetched one &&
	! repo_fetched two
'

test_expect_success 'updating group updates all members (remote update)' '
	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 updates all members (fetch)' '
	mark fetch-group-all &&
	update_repos &&
	git fetch all &&
	repo_fetched one &&
	repo_fetched two
'

test_expect_success 'updating group does not update non-members (remote update)' '
	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 group does not update non-members (fetch)' '
	mark fetch-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_expect_success 'updating group in parallel with a duplicate remote does not fail (fetch)' '
	mark fetch-group-duplicate &&
	update_repo one &&
	git config --add remotes.duplicate one &&
	git config --add remotes.duplicate one &&
	git -c fetch.parallel=2 remote update duplicate &&
	repo_fetched one
'

test_done
