aboutsummaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-07-24 23:24:17 -0700
committerJunio C Hamano <gitster@pobox.com>2008-07-24 23:24:17 -0700
commit99ea66ec479b884a8b5aff3020cf6e6abb9aa09a (patch)
tree097719dccef82c5010956aa9865922782378716a /t
parent9944d1a0e4ce741b07248b95fff2f506b5f1729c (diff)
parent859fdabaede6733c98b1ca8df2fabce000522bf9 (diff)
downloadgit-99ea66ec479b884a8b5aff3020cf6e6abb9aa09a.tar.gz
git-99ea66ec479b884a8b5aff3020cf6e6abb9aa09a.tar.xz
Merge branch 'ph/checkout'
* ph/checkout: git-checkout: improve error messages, detect ambiguities. git-checkout: fix command line parsing.
Diffstat (limited to 't')
-rwxr-xr-xt/t2010-checkout-ambiguous.sh50
1 files changed, 50 insertions, 0 deletions
diff --git a/t/t2010-checkout-ambiguous.sh b/t/t2010-checkout-ambiguous.sh
new file mode 100755
index 000000000..7cc0a3582
--- /dev/null
+++ b/t/t2010-checkout-ambiguous.sh
@@ -0,0 +1,50 @@
+#!/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 'disambiguate checking out from a tree-ish' '
+ echo bye > world &&
+ git checkout world -- world &&
+ git diff --exit-code --quiet
+'
+
+test_done