]>
Commit | Line | Data |
---|---|---|
ce567d18 JS |
1 | #!/bin/sh |
2 | ||
4f5ce122 | 3 | test_description='test show-branch' |
ce567d18 JS |
4 | |
5 | . ./test-lib.sh | |
6 | ||
f2463490 HWN |
7 | # arbitrary reference time: 2009-08-30 19:20:00 |
8 | GIT_TEST_DATE_NOW=1251660000; export GIT_TEST_DATE_NOW | |
9 | ||
bcfc82bd RJ |
10 | test_expect_success 'error descriptions on empty repository' ' |
11 | current=$(git branch --show-current) && | |
12 | cat >expect <<-EOF && | |
13 | error: No commit on branch '\''$current'\'' yet. | |
14 | EOF | |
15 | test_must_fail git branch --edit-description 2>actual && | |
16 | test_cmp expect actual && | |
17 | test_must_fail git branch --edit-description $current 2>actual && | |
18 | test_cmp expect actual | |
19 | ' | |
20 | ||
21 | test_expect_success 'fatal descriptions on empty repository' ' | |
22 | current=$(git branch --show-current) && | |
23 | cat >expect <<-EOF && | |
24 | fatal: No commit on branch '\''$current'\'' yet. | |
25 | EOF | |
26 | test_must_fail git branch --set-upstream-to=non-existent 2>actual && | |
27 | test_cmp expect actual && | |
28 | test_must_fail git branch -c new-branch 2>actual && | |
29 | test_cmp expect actual | |
30 | ' | |
31 | ||
ce567d18 | 32 | test_expect_success 'setup' ' |
9b6e74a9 ÆAB |
33 | test_commit initial && |
34 | for i in $(test_seq 1 10) | |
ce567d18 | 35 | do |
9b6e74a9 | 36 | git checkout -b branch$i initial && |
db5875aa | 37 | test_commit --no-tag branch$i || return 1 |
9b6e74a9 ÆAB |
38 | done && |
39 | git for-each-ref \ | |
40 | --sort=version:refname \ | |
41 | --format="%(refname:strip=2)" \ | |
42 | "refs/heads/branch*" >branches.sorted && | |
43 | sed "s/^> //" >expect <<-\EOF | |
44 | > ! [branch1] branch1 | |
45 | > ! [branch2] branch2 | |
46 | > ! [branch3] branch3 | |
47 | > ! [branch4] branch4 | |
48 | > ! [branch5] branch5 | |
49 | > ! [branch6] branch6 | |
50 | > ! [branch7] branch7 | |
51 | > ! [branch8] branch8 | |
52 | > ! [branch9] branch9 | |
53 | > * [branch10] branch10 | |
54 | > ---------- | |
55 | > * [branch10] branch10 | |
56 | > + [branch9] branch9 | |
57 | > + [branch8] branch8 | |
58 | > + [branch7] branch7 | |
59 | > + [branch6] branch6 | |
60 | > + [branch5] branch5 | |
61 | > + [branch4] branch4 | |
62 | > + [branch3] branch3 | |
63 | > + [branch2] branch2 | |
64 | > + [branch1] branch1 | |
65 | > +++++++++* [branch10^] initial | |
66 | EOF | |
ce567d18 JS |
67 | ' |
68 | ||
e358f3c3 | 69 | test_expect_success 'show-branch with more than 8 branches' ' |
9b6e74a9 ÆAB |
70 | git show-branch $(cat branches.sorted) >actual && |
71 | test_cmp expect actual | |
ce567d18 JS |
72 | ' |
73 | ||
3af1cae4 | 74 | test_expect_success 'show-branch with showbranch.default' ' |
9b6e74a9 ÆAB |
75 | for branch in $(cat branches.sorted) |
76 | do | |
db5875aa | 77 | test_config showbranch.default $branch --add || return 1 |
3af1cae4 | 78 | done && |
9b6e74a9 ÆAB |
79 | git show-branch >actual && |
80 | test_cmp expect actual | |
3af1cae4 JH |
81 | ' |
82 | ||
4465690c ÆAB |
83 | test_expect_success 'show-branch --color output' ' |
84 | sed "s/^> //" >expect <<-\EOF && | |
85 | > <RED>!<RESET> [branch1] branch1 | |
86 | > <GREEN>!<RESET> [branch2] branch2 | |
87 | > <YELLOW>!<RESET> [branch3] branch3 | |
88 | > <BLUE>!<RESET> [branch4] branch4 | |
89 | > <MAGENTA>!<RESET> [branch5] branch5 | |
90 | > <CYAN>!<RESET> [branch6] branch6 | |
91 | > <BOLD;RED>!<RESET> [branch7] branch7 | |
92 | > <BOLD;GREEN>!<RESET> [branch8] branch8 | |
93 | > <BOLD;YELLOW>!<RESET> [branch9] branch9 | |
94 | > <BOLD;BLUE>*<RESET> [branch10] branch10 | |
95 | > ---------- | |
96 | > <BOLD;BLUE>*<RESET> [branch10] branch10 | |
97 | > <BOLD;YELLOW>+<RESET> [branch9] branch9 | |
98 | > <BOLD;GREEN>+<RESET> [branch8] branch8 | |
99 | > <BOLD;RED>+<RESET> [branch7] branch7 | |
100 | > <CYAN>+<RESET> [branch6] branch6 | |
101 | > <MAGENTA>+<RESET> [branch5] branch5 | |
102 | > <BLUE>+<RESET> [branch4] branch4 | |
103 | > <YELLOW>+<RESET> [branch3] branch3 | |
104 | > <GREEN>+<RESET> [branch2] branch2 | |
105 | > <RED>+<RESET> [branch1] branch1 | |
106 | > <RED>+<RESET><GREEN>+<RESET><YELLOW>+<RESET><BLUE>+<RESET><MAGENTA>+<RESET><CYAN>+<RESET><BOLD;RED>+<RESET><BOLD;GREEN>+<RESET><BOLD;YELLOW>+<RESET><BOLD;BLUE>*<RESET> [branch10^] initial | |
107 | EOF | |
108 | git show-branch --color=always $(cat branches.sorted) >actual.raw && | |
109 | test_decode_color <actual.raw >actual && | |
110 | test_cmp expect actual | |
111 | ' | |
112 | ||
d65aea37 ÆAB |
113 | test_expect_success 'show branch --remotes' ' |
114 | cat >expect.err <<-\EOF && | |
115 | No revs to be shown. | |
116 | EOF | |
117 | git show-branch -r 2>actual.err >actual.out && | |
118 | test_cmp expect.err actual.err && | |
119 | test_must_be_empty actual.out | |
120 | ' | |
121 | ||
122 | test_expect_success 'setup show branch --list' ' | |
123 | sed "s/^> //" >expect <<-\EOF | |
124 | > [branch1] branch1 | |
125 | > [branch2] branch2 | |
126 | > [branch3] branch3 | |
127 | > [branch4] branch4 | |
128 | > [branch5] branch5 | |
129 | > [branch6] branch6 | |
130 | > [branch7] branch7 | |
131 | > [branch8] branch8 | |
132 | > [branch9] branch9 | |
133 | > * [branch10] branch10 | |
134 | EOF | |
135 | ' | |
136 | ||
137 | test_expect_success 'show branch --list' ' | |
138 | git show-branch --list $(cat branches.sorted) >actual && | |
139 | test_cmp expect actual | |
140 | ' | |
141 | ||
142 | test_expect_success 'show branch --list has no --color output' ' | |
143 | git show-branch --color=always --list $(cat branches.sorted) >actual && | |
144 | test_cmp expect actual | |
145 | ' | |
146 | ||
147 | test_expect_success 'show branch --merge-base with one argument' ' | |
148 | for branch in $(cat branches.sorted) | |
149 | do | |
150 | git rev-parse $branch >expect && | |
151 | git show-branch --merge-base $branch >actual && | |
db5875aa | 152 | test_cmp expect actual || return 1 |
d65aea37 ÆAB |
153 | done |
154 | ' | |
155 | ||
156 | test_expect_success 'show branch --merge-base with two arguments' ' | |
157 | for branch in $(cat branches.sorted) | |
158 | do | |
159 | git rev-parse initial >expect && | |
160 | git show-branch --merge-base initial $branch >actual && | |
db5875aa | 161 | test_cmp expect actual || return 1 |
d65aea37 ÆAB |
162 | done |
163 | ' | |
164 | ||
165 | test_expect_success 'show branch --merge-base with N arguments' ' | |
166 | git rev-parse initial >expect && | |
167 | git show-branch --merge-base $(cat branches.sorted) >actual && | |
168 | test_cmp expect actual && | |
169 | ||
170 | git merge-base $(cat branches.sorted) >actual && | |
171 | test_cmp expect actual | |
172 | ' | |
173 | ||
f2463490 HWN |
174 | test_expect_success 'show branch --reflog=2' ' |
175 | sed "s/^> //" >expect <<-\EOF && | |
176 | > ! [refs/heads/branch10@{0}] (4 years, 5 months ago) commit: branch10 | |
177 | > ! [refs/heads/branch10@{1}] (4 years, 5 months ago) commit: branch10 | |
178 | > -- | |
179 | > + [refs/heads/branch10@{0}] branch10 | |
180 | > ++ [refs/heads/branch10@{1}] initial | |
181 | EOF | |
182 | git show-branch --reflog=2 >actual && | |
183 | test_cmp actual expect | |
184 | ' | |
185 | ||
41c64ae0 JH |
186 | # incompatible options |
187 | while read combo | |
188 | do | |
189 | test_expect_success "show-branch $combo (should fail)" ' | |
190 | test_must_fail git show-branch $combo 2>error && | |
191 | grep -e "cannot be used together" -e "usage:" error | |
192 | ' | |
193 | done <<\EOF | |
194 | --all --reflog | |
195 | --merge-base --reflog | |
196 | --list --merge-base | |
197 | --reflog --current | |
198 | EOF | |
199 | ||
bcfc82bd RJ |
200 | test_expect_success 'error descriptions on non-existent branch' ' |
201 | cat >expect <<-EOF && | |
202 | error: No branch named '\''non-existent'\'.' | |
203 | EOF | |
204 | test_must_fail git branch --edit-description non-existent 2>actual && | |
205 | test_cmp expect actual | |
206 | ' | |
207 | ||
208 | test_expect_success 'fatal descriptions on non-existent branch' ' | |
209 | cat >expect <<-EOF && | |
210 | fatal: branch '\''non-existent'\'' does not exist | |
211 | EOF | |
212 | test_must_fail git branch --set-upstream-to=non-existent non-existent 2>actual && | |
213 | test_cmp expect actual && | |
214 | ||
215 | cat >expect <<-EOF && | |
216 | fatal: No branch named '\''non-existent'\''. | |
217 | EOF | |
218 | test_must_fail git branch -c non-existent new-branch 2>actual && | |
219 | test_cmp expect actual && | |
220 | test_must_fail git branch -m non-existent new-branch 2>actual && | |
221 | test_cmp expect actual | |
222 | ' | |
223 | ||
7a6ccdfb RJ |
224 | test_expect_success 'error descriptions on orphan branch' ' |
225 | test_when_finished git worktree remove -f wt && | |
226 | git worktree add wt --detach && | |
227 | git -C wt checkout --orphan orphan-branch && | |
228 | test_branch_op_in_wt() { | |
229 | test_orphan_error() { | |
230 | test_must_fail git $* 2>actual && | |
231 | test_i18ngrep "No commit on branch .orphan-branch. yet.$" actual | |
232 | } && | |
233 | test_orphan_error -C wt branch $1 $2 && # implicit branch | |
234 | test_orphan_error -C wt branch $1 orphan-branch $2 && # explicit branch | |
235 | test_orphan_error branch $1 orphan-branch $2 # different worktree | |
236 | } && | |
237 | test_branch_op_in_wt --edit-description && | |
238 | test_branch_op_in_wt --set-upstream-to=ne && | |
239 | test_branch_op_in_wt -c new-branch | |
240 | ' | |
241 | ||
ce567d18 | 242 | test_done |