summaryrefslogtreecommitdiff
path: root/t/t2020-checkout-detach.sh
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2011-03-20 09:04:16 (GMT)
committerJunio C Hamano <gitster@pobox.com>2011-03-20 20:32:44 (GMT)
commit493dd6ed5b46659d7e20aaef00f97e279ce1c4cb (patch)
tree63a0e865f31c578d76fcc9b12884100dae5d8c3d /t/t2020-checkout-detach.sh
parenta91df69cbb5ced7837525106ff57ff349180770b (diff)
downloadgit-493dd6ed5b46659d7e20aaef00f97e279ce1c4cb.zip
git-493dd6ed5b46659d7e20aaef00f97e279ce1c4cb.tar.gz
git-493dd6ed5b46659d7e20aaef00f97e279ce1c4cb.tar.bz2
checkout: add basic tests for detached-orphan warning
Commit 8e2dc6ac added a warning when we leave a detached HEAD whose commit is not reachable from any ref tip. Let's add a few basic tests to make sure it works. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t2020-checkout-detach.sh')
-rwxr-xr-xt/t2020-checkout-detach.sh34
1 files changed, 34 insertions, 0 deletions
diff --git a/t/t2020-checkout-detach.sh b/t/t2020-checkout-detach.sh
index 0042145..bfeb2a6 100755
--- a/t/t2020-checkout-detach.sh
+++ b/t/t2020-checkout-detach.sh
@@ -11,6 +11,14 @@ check_not_detached () {
git symbolic-ref -q HEAD >/dev/null
}
+ORPHAN_WARNING='you are leaving .* commit.*behind'
+check_orphan_warning() {
+ grep "$ORPHAN_WARNING" "$1"
+}
+check_no_orphan_warning() {
+ ! grep "$ORPHAN_WARNING" "$1"
+}
+
reset () {
git checkout master &&
check_not_detached
@@ -19,6 +27,8 @@ reset () {
test_expect_success 'setup' '
test_commit one &&
test_commit two &&
+ test_commit three && git tag -d three &&
+ test_commit four && git tag -d four &&
git branch branch &&
git tag tag
'
@@ -92,4 +102,28 @@ test_expect_success 'checkout --detach moves HEAD' '
git diff --exit-code two
'
+test_expect_success 'checkout warns on orphan commits' '
+ reset &&
+ git checkout --detach two &&
+ echo content >orphan &&
+ git add orphan &&
+ git commit -a -m orphan &&
+ git checkout master 2>stderr &&
+ check_orphan_warning stderr
+'
+
+test_expect_success 'checkout does not warn leaving ref tip' '
+ reset &&
+ git checkout --detach two &&
+ git checkout master 2>stderr &&
+ check_no_orphan_warning stderr
+'
+
+test_expect_success 'checkout does not warn leaving reachable commit' '
+ reset &&
+ git checkout --detach HEAD^ &&
+ git checkout master 2>stderr &&
+ check_no_orphan_warning stderr
+'
+
test_done