]>
Commit | Line | Data |
---|---|---|
c479ea36 NTND |
1 | #!/bin/sh |
2 | ||
3 | test_description='switch basic functionality' | |
4 | ||
5 | . ./test-lib.sh | |
6 | ||
7 | test_expect_success 'setup' ' | |
8 | test_commit first && | |
9 | git branch first-branch && | |
10 | test_commit second && | |
11 | test_commit third && | |
12 | git remote add origin nohost:/nopath && | |
13 | git update-ref refs/remotes/origin/foo first-branch | |
14 | ' | |
15 | ||
16 | test_expect_success 'switch branch no arguments' ' | |
17 | test_must_fail git switch | |
18 | ' | |
19 | ||
20 | test_expect_success 'switch branch' ' | |
21 | git switch first-branch && | |
22 | test_path_is_missing second.t | |
23 | ' | |
24 | ||
25 | test_expect_success 'switch and detach' ' | |
26 | test_when_finished git switch master && | |
27 | test_must_fail git switch master^{commit} && | |
28 | git switch --detach master^{commit} && | |
29 | test_must_fail git symbolic-ref HEAD | |
30 | ' | |
31 | ||
32 | test_expect_success 'switch and detach current branch' ' | |
33 | test_when_finished git switch master && | |
34 | git switch master && | |
35 | git switch --detach && | |
36 | test_must_fail git symbolic-ref HEAD | |
37 | ' | |
38 | ||
39 | test_expect_success 'switch and create branch' ' | |
40 | test_when_finished git switch master && | |
41 | git switch -c temp master^ && | |
42 | test_cmp_rev master^ refs/heads/temp && | |
43 | echo refs/heads/temp >expected-branch && | |
44 | git symbolic-ref HEAD >actual-branch && | |
45 | test_cmp expected-branch actual-branch | |
46 | ' | |
47 | ||
48 | test_expect_success 'force create branch from HEAD' ' | |
49 | test_when_finished git switch master && | |
50 | git switch --detach master && | |
51 | test_must_fail git switch -c temp && | |
52 | git switch -C temp && | |
53 | test_cmp_rev master refs/heads/temp && | |
54 | echo refs/heads/temp >expected-branch && | |
55 | git symbolic-ref HEAD >actual-branch && | |
56 | test_cmp expected-branch actual-branch | |
57 | ' | |
58 | ||
59 | test_expect_success 'new orphan branch from empty' ' | |
60 | test_when_finished git switch master && | |
61 | test_must_fail git switch --orphan new-orphan HEAD && | |
62 | git switch --orphan new-orphan && | |
63 | test_commit orphan && | |
64 | git cat-file commit refs/heads/new-orphan >commit && | |
65 | ! grep ^parent commit && | |
66 | git ls-files >tracked-files && | |
67 | echo orphan.t >expected && | |
68 | test_cmp expected tracked-files | |
69 | ' | |
70 | ||
8d3e33da | 71 | test_expect_success 'orphan branch works with --discard-changes' ' |
72 | test_when_finished git switch master && | |
73 | echo foo >foo.txt && | |
74 | git switch --discard-changes --orphan new-orphan2 && | |
75 | git ls-files >tracked-files && | |
76 | test_must_be_empty tracked-files | |
77 | ' | |
78 | ||
c479ea36 NTND |
79 | test_expect_success 'switching ignores file of same branch name' ' |
80 | test_when_finished git switch master && | |
81 | : >first-branch && | |
82 | git switch first-branch && | |
83 | echo refs/heads/first-branch >expected && | |
84 | git symbolic-ref HEAD >actual && | |
85 | test_cmp expected actual | |
86 | ' | |
87 | ||
88 | test_expect_success 'guess and create branch ' ' | |
89 | test_when_finished git switch master && | |
90 | test_must_fail git switch --no-guess foo && | |
91 | git switch foo && | |
92 | echo refs/heads/foo >expected && | |
93 | git symbolic-ref HEAD >actual && | |
94 | test_cmp expected actual | |
95 | ' | |
96 | ||
97 | test_expect_success 'not switching when something is in progress' ' | |
98 | test_when_finished rm -f .git/MERGE_HEAD && | |
99 | # fake a merge-in-progress | |
100 | cp .git/HEAD .git/MERGE_HEAD && | |
101 | test_must_fail git switch -d @^ | |
102 | ' | |
103 | ||
104 | test_done |