#!/bin/sh
#
# Copyright (c) 2019 Denton Liu
#

test_description='Test submodules set-branch subcommand

This test verifies that the set-branch subcommand of git-submodule is working
as expected.
'

TEST_PASSES_SANITIZE_LEAK=true
TEST_NO_CREATE_REPO=1

GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME

. ./test-lib.sh

test_expect_success 'setup' '
	git config --global protocol.file.allow always
'

test_expect_success 'submodule config cache setup' '
	mkdir submodule &&
	(cd submodule &&
		git init &&
		echo a >a &&
		git add . &&
		git commit -ma &&
		git checkout -b topic &&
		echo b >a &&
		git add . &&
		git commit -mb &&
		git checkout main
	) &&
	mkdir super &&
	(cd super &&
		git init &&
		git submodule add ../submodule &&
		git submodule add --name thename ../submodule thepath &&
		git commit -m "add submodules"
	)
'

test_expect_success 'ensure submodule branch is unset' '
	(cd super &&
		test_cmp_config "" -f .gitmodules --default "" submodule.submodule.branch
	)
'

test_expect_success 'test submodule set-branch --branch' '
	(cd super &&
		git submodule set-branch --branch topic submodule &&
		test_cmp_config topic -f .gitmodules submodule.submodule.branch &&
		git submodule update --remote &&
		cat <<-\EOF >expect &&
		b
		EOF
		git -C submodule show -s --pretty=%s >actual &&
		test_cmp expect actual
	)
'

test_expect_success 'test submodule set-branch --default' '
	(cd super &&
		git submodule set-branch --default submodule &&
		test_cmp_config "" -f .gitmodules --default "" submodule.submodule.branch &&
		git submodule update --remote &&
		cat <<-\EOF >expect &&
		a
		EOF
		git -C submodule show -s --pretty=%s >actual &&
		test_cmp expect actual
	)
'

test_expect_success 'test submodule set-branch -b' '
	(cd super &&
		git submodule set-branch -b topic submodule &&
		test_cmp_config topic -f .gitmodules submodule.submodule.branch &&
		git submodule update --remote &&
		cat <<-\EOF >expect &&
		b
		EOF
		git -C submodule show -s --pretty=%s >actual &&
		test_cmp expect actual
	)
'

test_expect_success 'test submodule set-branch -d' '
	(cd super &&
		git submodule set-branch -d submodule &&
		test_cmp_config "" -f .gitmodules --default "" submodule.submodule.branch &&
		git submodule update --remote &&
		cat <<-\EOF >expect &&
		a
		EOF
		git -C submodule show -s --pretty=%s >actual &&
		test_cmp expect actual
	)
'

test_expect_success 'test submodule set-branch --branch with named submodule' '
	(cd super &&
		git submodule set-branch --branch topic thepath &&
		test_cmp_config topic -f .gitmodules submodule.thename.branch &&
		test_cmp_config "" -f .gitmodules --default "" submodule.thepath.branch &&
		git submodule update --remote &&
		cat <<-\EOF >expect &&
		b
		EOF
		git -C thepath show -s --pretty=%s >actual &&
		test_cmp expect actual
	)
'

test_expect_success 'test submodule set-branch --default with named submodule' '
	(cd super &&
		git submodule set-branch --default thepath &&
		test_cmp_config "" -f .gitmodules --default "" submodule.thename.branch &&
		git submodule update --remote &&
		cat <<-\EOF >expect &&
		a
		EOF
		git -C thepath show -s --pretty=%s >actual &&
		test_cmp expect actual
	)
'

test_done
