#!/bin/sh

test_description='interpreting exotic branch name arguments

Branch name arguments are usually names which are taken to be inside of
refs/heads/, but we interpret some magic syntax like @{-1}, @{upstream}, etc.
This script aims to check the behavior of those corner cases.
'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME

TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh

expect_branch() {
	git log -1 --format=%s "$1" >actual &&
	echo "$2" >expect &&
	test_cmp expect actual
}

expect_deleted() {
	test_must_fail git rev-parse --verify "$1"
}

test_expect_success 'set up repo' '
	test_commit one &&
	test_commit two &&
	git remote add origin foo.git
'

test_expect_success 'update branch via @{-1}' '
	git branch previous one &&

	git checkout previous &&
	git checkout main &&

	git branch -f @{-1} two &&
	expect_branch previous two
'

test_expect_success 'update branch via local @{upstream}' '
	git branch local one &&
	git branch --set-upstream-to=local &&

	git branch -f @{upstream} two &&
	expect_branch local two
'

test_expect_success 'disallow updating branch via remote @{upstream}' '
	git update-ref refs/remotes/origin/remote one &&
	git branch --set-upstream-to=origin/remote &&

	test_must_fail git branch -f @{upstream} two
'

test_expect_success 'create branch with pseudo-qualified name' '
	git branch refs/heads/qualified two &&
	expect_branch refs/heads/refs/heads/qualified two
'

test_expect_success 'force-copy a branch to itself via @{-1} is no-op' '
	git branch -t copiable main &&
	git checkout copiable &&
	git checkout - &&
	git branch -C @{-1} copiable &&
	git config --get-all branch.copiable.merge >actual &&
	echo refs/heads/main >expect &&
	test_cmp expect actual
'

test_expect_success 'delete branch via @{-1}' '
	git branch previous-del &&

	git checkout previous-del &&
	git checkout main &&

	git branch -D @{-1} &&
	expect_deleted previous-del
'

test_expect_success 'delete branch via local @{upstream}' '
	git branch local-del &&
	git branch --set-upstream-to=local-del &&

	git branch -D @{upstream} &&
	expect_deleted local-del
'

test_expect_success 'delete branch via remote @{upstream}' '
	git update-ref refs/remotes/origin/remote-del two &&
	git branch --set-upstream-to=origin/remote-del &&

	git branch -r -D @{upstream} &&
	expect_deleted origin/remote-del
'

# Note that we create two oddly named local branches here. We want to make
# sure that we do not accidentally delete either of them, even if
# shorten_unambiguous_ref() tweaks the name to avoid ambiguity.
test_expect_success 'delete @{upstream} expansion matches -r option' '
	git update-ref refs/remotes/origin/remote-del two &&
	git branch --set-upstream-to=origin/remote-del &&
	git update-ref refs/heads/origin/remote-del two &&
	git update-ref refs/heads/remotes/origin/remote-del two &&

	test_must_fail git branch -D @{upstream} &&
	expect_branch refs/heads/origin/remote-del two &&
	expect_branch refs/heads/remotes/origin/remote-del two
'

test_expect_success 'disallow deleting remote branch via @{-1}' '
	git update-ref refs/remotes/origin/previous one &&

	git checkout -b origin/previous two &&
	git checkout main &&

	test_must_fail git branch -r -D @{-1} &&
	expect_branch refs/remotes/origin/previous one &&
	expect_branch refs/heads/origin/previous two
'

# The thing we are testing here is that "@" is the real branch refs/heads/@,
# and not refs/heads/HEAD. These tests should not imply that refs/heads/@ is a
# sane thing, but it _is_ technically allowed for now. If we disallow it, these
# can be switched to test_must_fail.
test_expect_success 'create branch named "@"' '
	git branch -f @ one &&
	expect_branch refs/heads/@ one
'

test_expect_success 'delete branch named "@"' '
	git update-ref refs/heads/@ two &&
	git branch -D @ &&
	expect_deleted refs/heads/@
'

test_expect_success 'checkout does not treat remote @{upstream} as a branch' '
	git update-ref refs/remotes/origin/checkout one &&
	git branch --set-upstream-to=origin/checkout &&
	git update-ref refs/heads/origin/checkout two &&
	git update-ref refs/heads/remotes/origin/checkout two &&

	git checkout @{upstream} &&
	expect_branch HEAD one
'

test_expect_success 'edit-description via @{-1}' '
	git checkout -b desc-branch &&
	git checkout -b non-desc-branch &&
	write_script editor <<-\EOF &&
		echo "Branch description" >"$1"
	EOF
	EDITOR=./editor git branch --edit-description @{-1} &&
	test_must_fail git config branch.non-desc-branch.description &&
	git config branch.desc-branch.description >actual &&
	printf "Branch description\n\n" >expect &&
	test_cmp expect actual
'

test_expect_success 'modify branch upstream via "@{-1}" and "@{-1}@{upstream}"' '
	git checkout -b upstream-branch &&
	git checkout -b upstream-other -t upstream-branch &&
	git branch --set-upstream-to upstream-other @{-1} &&
	git config branch.upstream-branch.merge >actual &&
	echo "refs/heads/upstream-other" >expect &&
	test_cmp expect actual &&
	git branch --unset-upstream @{-1}@{upstream} &&
	test_must_fail git config branch.upstream-other.merge
'

test_done
