diff options
Diffstat (limited to 't/t2015-checkout-unborn.sh')
-rwxr-xr-x | t/t2015-checkout-unborn.sh | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/t/t2015-checkout-unborn.sh b/t/t2015-checkout-unborn.sh new file mode 100755 index 0000000000..37bdcedcc9 --- /dev/null +++ b/t/t2015-checkout-unborn.sh @@ -0,0 +1,60 @@ +#!/bin/sh + +test_description='checkout from unborn branch' +. ./test-lib.sh + +test_expect_success 'setup' ' + mkdir parent && + (cd parent && + git init && + echo content >file && + git add file && + git commit -m base + ) && + git fetch parent master:origin +' + +test_expect_success 'checkout from unborn preserves untracked files' ' + echo precious >expect && + echo precious >file && + test_must_fail git checkout -b new origin && + test_cmp expect file +' + +test_expect_success 'checkout from unborn preserves index contents' ' + echo precious >expect && + echo precious >file && + git add file && + test_must_fail git checkout -b new origin && + test_cmp expect file && + git show :file >file && + test_cmp expect file +' + +test_expect_success 'checkout from unborn merges identical index contents' ' + echo content >file && + git add file && + git checkout -b new origin +' + +test_expect_success 'checking out another branch from unborn state' ' + git checkout --orphan newroot && + git checkout -b anothername && + test_must_fail git show-ref --verify refs/heads/newroot && + git symbolic-ref HEAD >actual && + echo refs/heads/anothername >expect && + test_cmp expect actual +' + +test_expect_success 'checking out in a newly created repo' ' + test_create_repo empty && + ( + cd empty && + git symbolic-ref HEAD >expect && + test_must_fail git checkout && + git symbolic-ref HEAD >actual && + test_cmp expect actual + ) +' + +test_done |