You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.5 KiB
65 lines
1.5 KiB
#!/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 |
|
' |
|
|
|
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 |
|
' |
|
|
|
test_expect_success 'disambiguate checking out from a tree-ish' ' |
|
echo bye > world && |
|
git checkout world -- world && |
|
git diff --exit-code --quiet |
|
' |
|
|
|
test_expect_success 'accurate error message with more than one ref' ' |
|
test_must_fail git checkout HEAD master -- 2>actual && |
|
test_i18ngrep 2 actual && |
|
test_i18ngrep "one reference expected, 2 given" actual |
|
' |
|
|
|
test_done
|
|
|