2008-07-23 18:15:33 +08:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
test_description='checkout and pathspecs/refspecs ambiguities'
|
|
|
|
|
|
|
|
. ./test-lib.sh
|
|
|
|
|
|
|
|
test_expect_success 'setup' '
|
|
|
|
echo hello >world &&
|
|
|
|
echo hello >all &&
|
|
|
|
git add all world &&
|
|
|
|
git commit -m initial &&
|
|
|
|
git branch world
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'reference must be a tree' '
|
|
|
|
test_must_fail git checkout $(git hash-object ./all) --
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'branch switching' '
|
|
|
|
test "refs/heads/master" = "$(git symbolic-ref HEAD)" &&
|
|
|
|
git checkout world -- &&
|
|
|
|
test "refs/heads/world" = "$(git symbolic-ref HEAD)"
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'checkout world from the index' '
|
|
|
|
echo bye > world &&
|
|
|
|
git checkout -- world &&
|
|
|
|
git diff --exit-code --quiet
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'non ambiguous call' '
|
|
|
|
git checkout all
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'allow the most common case' '
|
|
|
|
git checkout world &&
|
|
|
|
test "refs/heads/world" = "$(git symbolic-ref HEAD)"
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'check ambiguity' '
|
|
|
|
test_must_fail git checkout world all
|
|
|
|
'
|
|
|
|
|
2016-09-07 19:19:41 +08:00
|
|
|
test_expect_success 'check ambiguity in subdir' '
|
|
|
|
mkdir sub &&
|
|
|
|
# not ambiguous because sub/world does not exist
|
|
|
|
git -C sub checkout world ../all &&
|
|
|
|
echo hello >sub/world &&
|
|
|
|
# ambiguous because sub/world does exist
|
|
|
|
test_must_fail git -C sub checkout world ../all
|
|
|
|
'
|
|
|
|
|
2008-07-23 18:15:33 +08:00
|
|
|
test_expect_success 'disambiguate checking out from a tree-ish' '
|
|
|
|
echo bye > world &&
|
|
|
|
git checkout world -- world &&
|
|
|
|
git diff --exit-code --quiet
|
|
|
|
'
|
|
|
|
|
2013-10-18 17:25:58 +08:00
|
|
|
test_expect_success 'accurate error message with more than one ref' '
|
|
|
|
test_must_fail git checkout HEAD master -- 2>actual &&
|
2016-06-18 04:21:07 +08:00
|
|
|
test_i18ngrep 2 actual &&
|
2013-10-18 17:25:58 +08:00
|
|
|
test_i18ngrep "one reference expected, 2 given" actual
|
|
|
|
'
|
|
|
|
|
2008-07-23 18:15:33 +08:00
|
|
|
test_done
|