Add an option not to use link(src, dest) && unlink(src) when that is unreliable
[git/spearce.git] / t / t2012-checkout-last.sh
blob87b30a268c66848726baec5676e73b8db686806d
1 #!/bin/sh
3 test_description='checkout can switch to last branch'
5 . ./test-lib.sh
7 test_expect_success 'setup' '
8 echo hello >world &&
9 git add world &&
10 git commit -m initial &&
11 git branch other &&
12 echo "hello again" >>world &&
13 git add world &&
14 git commit -m second
17 test_expect_success '"checkout -" does not work initially' '
18 test_must_fail git checkout -
21 test_expect_success 'first branch switch' '
22 git checkout other
25 test_expect_success '"checkout -" switches back' '
26 git checkout - &&
27 test "z$(git symbolic-ref HEAD)" = "zrefs/heads/master"
30 test_expect_success '"checkout -" switches forth' '
31 git checkout - &&
32 test "z$(git symbolic-ref HEAD)" = "zrefs/heads/other"
35 test_expect_success 'detach HEAD' '
36 git checkout $(git rev-parse HEAD)
39 test_expect_success '"checkout -" attaches again' '
40 git checkout - &&
41 test "z$(git symbolic-ref HEAD)" = "zrefs/heads/other"
44 test_expect_success '"checkout -" detaches again' '
45 git checkout - &&
46 test "z$(git rev-parse HEAD)" = "z$(git rev-parse other)" &&
47 test_must_fail git symbolic-ref HEAD
50 test_expect_success 'more switches' '
51 for i in 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
53 git checkout -b branch$i
54 done
57 more_switches () {
58 for i in 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
60 git checkout branch$i
61 done
64 test_expect_success 'switch to the last' '
65 more_switches &&
66 git checkout @{-1} &&
67 test "z$(git symbolic-ref HEAD)" = "zrefs/heads/branch2"
70 test_expect_success 'switch to second from the last' '
71 more_switches &&
72 git checkout @{-2} &&
73 test "z$(git symbolic-ref HEAD)" = "zrefs/heads/branch3"
76 test_expect_success 'switch to third from the last' '
77 more_switches &&
78 git checkout @{-3} &&
79 test "z$(git symbolic-ref HEAD)" = "zrefs/heads/branch4"
82 test_expect_success 'switch to fourth from the last' '
83 more_switches &&
84 git checkout @{-4} &&
85 test "z$(git symbolic-ref HEAD)" = "zrefs/heads/branch5"
88 test_expect_success 'switch to twelfth from the last' '
89 more_switches &&
90 git checkout @{-12} &&
91 test "z$(git symbolic-ref HEAD)" = "zrefs/heads/branch13"
94 test_done