@ -24,6 +24,7 @@ test_branch_upstream () {
@@ -24,6 +24,7 @@ test_branch_upstream () {
}
test_expect_success 'setup' '
test_commit my_master &&
git init repo_a &&
(
cd repo_a &&
@ -58,7 +59,7 @@ test_expect_success 'checkout of non-existing branch fails' '
@@ -58,7 +59,7 @@ test_expect_success 'checkout of non-existing branch fails' '
test_branch master
'
test_expect_success 'checkout of branch from multiple remotes fails' '
test_expect_success 'checkout of branch from multiple remotes fails #1' '
git checkout -B master &&
test_might_fail git branch -D foo &&
@ -96,4 +97,71 @@ test_expect_success '--no-guess suppresses branch auto-vivification' '
@@ -96,4 +97,71 @@ test_expect_success '--no-guess suppresses branch auto-vivification' '
test_branch master
'
test_expect_success 'setup more remotes with unconventional refspecs' '
git checkout -B master &&
git init repo_c &&
(
cd repo_c &&
test_commit c_master &&
git checkout -b bar &&
test_commit c_bar
git checkout -b spam &&
test_commit c_spam
) &&
git init repo_d &&
(
cd repo_d &&
test_commit d_master &&
git checkout -b baz &&
test_commit f_baz
git checkout -b eggs &&
test_commit c_eggs
) &&
git remote add repo_c repo_c &&
git config remote.repo_c.fetch \
"+refs/heads/*:refs/remotes/extra_dir/repo_c/extra_dir/*" &&
git remote add repo_d repo_d &&
git config remote.repo_d.fetch \
"+refs/heads/*:refs/repo_d/*" &&
git fetch --all
'
test_expect_failure 'checkout of branch from multiple remotes fails #2' '
git checkout -B master &&
test_might_fail git branch -D bar &&
test_must_fail git checkout bar &&
test_must_fail git rev-parse --verify refs/heads/bar &&
test_branch master
'
test_expect_failure 'checkout of branch from multiple remotes fails #3' '
git checkout -B master &&
test_might_fail git branch -D baz &&
test_must_fail git checkout baz &&
test_must_fail git rev-parse --verify refs/heads/baz &&
test_branch master
'
test_expect_failure 'checkout of branch from a single remote succeeds #3' '
git checkout -B master &&
test_might_fail git branch -D spam &&
git checkout spam &&
test_branch spam &&
test_cmp_rev refs/remotes/extra_dir/repo_c/extra_dir/spam HEAD &&
test_branch_upstream spam repo_c spam
'
test_expect_failure 'checkout of branch from a single remote succeeds #4' '
git checkout -B master &&
test_might_fail git branch -D eggs &&
git checkout eggs &&
test_branch eggs &&
test_cmp_rev refs/repo_d/eggs HEAD &&
test_branch_upstream eggs repo_d eggs
'
test_done