X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=t%2Ft2020-checkout-detach.sh;h=2366f0f4141656666db9cdcd8975335df57b6a8f;hb=3b425656a469722d9c45b7c88e0e01a9cd8c0fd3;hp=00421453ba26327b929fa7b5133a3072fce2bb03;hpb=25197ebe7f813407b028a2c304ff8ee58da40a16;p=git.git diff --git a/t/t2020-checkout-detach.sh b/t/t2020-checkout-detach.sh index 00421453b..2366f0f41 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() { + test_i18ngrep "$ORPHAN_WARNING" "$1" +} +check_no_orphan_warning() { + test_i18ngrep ! "$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,50 @@ 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 +' + +test_expect_success 'checkout warns on orphan commits: output' ' + check_orphan_warning stderr +' + +test_expect_success 'checkout does not warn leaving ref tip' ' + reset && + git checkout --detach two && + git checkout master 2>stderr +' + +test_expect_success 'checkout does not warn leaving ref tip' ' + 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 +' + +test_expect_success 'checkout does not warn leaving reachable commit' ' + check_no_orphan_warning stderr +' + +cat >expect <<'EOF' +Your branch is behind 'master' by 1 commit, and can be fast-forwarded. +EOF +test_expect_success 'tracking count is accurate after orphan check' ' + reset && + git branch child master^ && + git config branch.child.remote . && + git config branch.child.merge refs/heads/master && + git checkout child^ && + git checkout child >stdout && + test_cmp expect stdout +' + test_done