]>
Commit | Line | Data |
---|---|---|
8028184e WP |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2010, Will Palmer | |
4 | # | |
5 | ||
6 | test_description='Test pretty formats' | |
7 | . ./test-lib.sh | |
8 | ||
9 | test_expect_success 'set up basic repos' ' | |
10 | >foo && | |
11 | >bar && | |
12 | git add foo && | |
13 | test_tick && | |
14 | git commit -m initial && | |
15 | git add bar && | |
16 | test_tick && | |
17 | git commit -m "add bar" | |
18 | ' | |
19 | ||
20 | test_expect_success 'alias builtin format' ' | |
21 | git log --pretty=oneline >expected && | |
22 | git config pretty.test-alias oneline && | |
23 | git log --pretty=test-alias >actual && | |
24 | test_cmp expected actual | |
25 | ' | |
26 | ||
27 | test_expect_success 'alias masking builtin format' ' | |
28 | git log --pretty=oneline >expected && | |
29 | git config pretty.oneline "%H" && | |
30 | git log --pretty=oneline >actual && | |
31 | test_cmp expected actual | |
32 | ' | |
33 | ||
34 | test_expect_success 'alias user-defined format' ' | |
35 | git log --pretty="format:%h" >expected && | |
36 | git config pretty.test-alias "format:%h" && | |
37 | git log --pretty=test-alias >actual && | |
38 | test_cmp expected actual | |
39 | ' | |
40 | ||
41 | test_expect_success 'alias user-defined tformat' ' | |
42 | git log --pretty="tformat:%h" >expected && | |
43 | git config pretty.test-alias "tformat:%h" && | |
44 | git log --pretty=test-alias >actual && | |
45 | test_cmp expected actual | |
46 | ' | |
47 | ||
7be8b3ba | 48 | test_expect_success 'alias non-existent format' ' |
8028184e WP |
49 | git config pretty.test-alias format-that-will-never-exist && |
50 | test_must_fail git log --pretty=test-alias | |
51 | ' | |
52 | ||
53 | test_expect_success 'alias of an alias' ' | |
54 | git log --pretty="tformat:%h" >expected && | |
55 | git config pretty.test-foo "tformat:%h" && | |
56 | git config pretty.test-bar test-foo && | |
57 | git log --pretty=test-bar >actual && test_cmp expected actual | |
58 | ' | |
59 | ||
60 | test_expect_success 'alias masking an alias' ' | |
61 | git log --pretty=format:"Two %H" >expected && | |
62 | git config pretty.duplicate "format:One %H" && | |
63 | git config --add pretty.duplicate "format:Two %H" && | |
64 | git log --pretty=duplicate >actual && | |
65 | test_cmp expected actual | |
66 | ' | |
67 | ||
68 | test_expect_success 'alias loop' ' | |
69 | git config pretty.test-foo test-bar && | |
70 | git config pretty.test-bar test-foo && | |
71 | test_must_fail git log --pretty=test-foo | |
72 | ' | |
73 | ||
3e065308 JK |
74 | test_expect_success 'NUL separation' ' |
75 | printf "add bar\0initial" >expected && | |
76 | git log -z --pretty="format:%s" >actual && | |
77 | test_cmp expected actual | |
78 | ' | |
79 | ||
80 | test_expect_success 'NUL termination' ' | |
81 | printf "add bar\0initial\0" >expected && | |
82 | git log -z --pretty="tformat:%s" >actual && | |
83 | test_cmp expected actual | |
84 | ' | |
85 | ||
fafd3829 JH |
86 | test_expect_success 'NUL separation with --stat' ' |
87 | stat0_part=$(git diff --stat HEAD^ HEAD) && | |
74faaa16 | 88 | stat1_part=$(git diff-tree --no-commit-id --stat --root HEAD^) && |
fafd3829 JH |
89 | printf "add bar\n$stat0_part\n\0initial\n$stat1_part\n" >expected && |
90 | git log -z --stat --pretty="format:%s" >actual && | |
b354f11b | 91 | test_i18ncmp expected actual |
fafd3829 JH |
92 | ' |
93 | ||
94 | test_expect_failure 'NUL termination with --stat' ' | |
95 | stat0_part=$(git diff --stat HEAD^ HEAD) && | |
74faaa16 | 96 | stat1_part=$(git diff-tree --no-commit-id --stat --root HEAD^) && |
fafd3829 JH |
97 | printf "add bar\n$stat0_part\n\0initial\n$stat1_part\n\0" >expected && |
98 | git log -z --stat --pretty="tformat:%s" >actual && | |
b354f11b | 99 | test_i18ncmp expected actual |
fafd3829 JH |
100 | ' |
101 | ||
a5752342 NTND |
102 | test_expect_success 'setup more commits' ' |
103 | test_commit "message one" one one message-one && | |
104 | test_commit "message two" two two message-two | |
105 | ' | |
106 | ||
107 | test_expect_success 'left alignment formatting' ' | |
108 | git log --pretty="format:%<(40)%s" >actual && | |
109 | # complete the incomplete line at the end | |
110 | echo >>actual && | |
111 | qz_to_tab_space <<\EOF >expected && | |
112 | message two Z | |
113 | message one Z | |
114 | add bar Z | |
115 | initial Z | |
116 | EOF | |
117 | test_cmp expected actual | |
118 | ' | |
119 | ||
120 | test_expect_success 'left alignment formatting at the nth column' ' | |
121 | git log --pretty="format:%h %<|(40)%s" >actual && | |
122 | # complete the incomplete line at the end | |
123 | echo >>actual && | |
124 | qz_to_tab_space <<\EOF >expected && | |
125 | fa33ab1 message two Z | |
126 | 7cd6c63 message one Z | |
127 | 1711bf9 add bar Z | |
128 | af20c06 initial Z | |
129 | EOF | |
130 | test_cmp expected actual | |
131 | ' | |
132 | ||
133 | test_expect_success 'left alignment formatting with no padding' ' | |
134 | git log --pretty="format:%<(1)%s" >actual && | |
135 | # complete the incomplete line at the end | |
136 | echo >>actual && | |
137 | cat <<\EOF >expected && | |
138 | message two | |
139 | message one | |
140 | add bar | |
141 | initial | |
142 | EOF | |
143 | test_cmp expected actual | |
144 | ' | |
145 | ||
a7f01c6b NTND |
146 | test_expect_success 'left alignment formatting with trunc' ' |
147 | git log --pretty="format:%<(10,trunc)%s" >actual && | |
148 | # complete the incomplete line at the end | |
149 | echo >>actual && | |
150 | qz_to_tab_space <<\EOF >expected && | |
151 | message .. | |
152 | message .. | |
153 | add bar Z | |
154 | initial Z | |
155 | EOF | |
156 | test_cmp expected actual | |
157 | ' | |
158 | ||
159 | test_expect_success 'left alignment formatting with ltrunc' ' | |
160 | git log --pretty="format:%<(10,ltrunc)%s" >actual && | |
161 | # complete the incomplete line at the end | |
162 | echo >>actual && | |
163 | qz_to_tab_space <<\EOF >expected && | |
164 | ..sage two | |
165 | ..sage one | |
166 | add bar Z | |
167 | initial Z | |
168 | EOF | |
169 | test_cmp expected actual | |
170 | ' | |
171 | ||
172 | test_expect_success 'left alignment formatting with mtrunc' ' | |
173 | git log --pretty="format:%<(10,mtrunc)%s" >actual && | |
174 | # complete the incomplete line at the end | |
175 | echo >>actual && | |
176 | qz_to_tab_space <<\EOF >expected && | |
177 | mess.. two | |
178 | mess.. one | |
179 | add bar Z | |
180 | initial Z | |
181 | EOF | |
182 | test_cmp expected actual | |
183 | ' | |
184 | ||
a5752342 NTND |
185 | test_expect_success 'right alignment formatting' ' |
186 | git log --pretty="format:%>(40)%s" >actual && | |
187 | # complete the incomplete line at the end | |
188 | echo >>actual && | |
189 | qz_to_tab_space <<\EOF >expected && | |
190 | Z message two | |
191 | Z message one | |
192 | Z add bar | |
193 | Z initial | |
194 | EOF | |
195 | test_cmp expected actual | |
196 | ' | |
197 | ||
198 | test_expect_success 'right alignment formatting at the nth column' ' | |
199 | git log --pretty="format:%h %>|(40)%s" >actual && | |
200 | # complete the incomplete line at the end | |
201 | echo >>actual && | |
202 | qz_to_tab_space <<\EOF >expected && | |
203 | fa33ab1 message two | |
204 | 7cd6c63 message one | |
205 | 1711bf9 add bar | |
206 | af20c06 initial | |
207 | EOF | |
208 | test_cmp expected actual | |
209 | ' | |
210 | ||
211 | test_expect_success 'right alignment formatting with no padding' ' | |
212 | git log --pretty="format:%>(1)%s" >actual && | |
213 | # complete the incomplete line at the end | |
214 | echo >>actual && | |
215 | cat <<\EOF >expected && | |
216 | message two | |
217 | message one | |
218 | add bar | |
219 | initial | |
220 | EOF | |
221 | test_cmp expected actual | |
222 | ' | |
223 | ||
224 | test_expect_success 'center alignment formatting' ' | |
225 | git log --pretty="format:%><(40)%s" >actual && | |
226 | # complete the incomplete line at the end | |
227 | echo >>actual && | |
228 | qz_to_tab_space <<\EOF >expected && | |
229 | Z message two Z | |
230 | Z message one Z | |
231 | Z add bar Z | |
232 | Z initial Z | |
233 | EOF | |
234 | test_cmp expected actual | |
235 | ' | |
236 | ||
237 | test_expect_success 'center alignment formatting at the nth column' ' | |
238 | git log --pretty="format:%h %><|(40)%s" >actual && | |
239 | # complete the incomplete line at the end | |
240 | echo >>actual && | |
241 | qz_to_tab_space <<\EOF >expected && | |
242 | fa33ab1 message two Z | |
243 | 7cd6c63 message one Z | |
244 | 1711bf9 add bar Z | |
245 | af20c06 initial Z | |
246 | EOF | |
247 | test_cmp expected actual | |
248 | ' | |
249 | ||
250 | test_expect_success 'center alignment formatting with no padding' ' | |
251 | git log --pretty="format:%><(1)%s" >actual && | |
252 | # complete the incomplete line at the end | |
253 | echo >>actual && | |
254 | cat <<\EOF >expected && | |
255 | message two | |
256 | message one | |
257 | add bar | |
258 | initial | |
259 | EOF | |
260 | test_cmp expected actual | |
261 | ' | |
262 | ||
1640632b NTND |
263 | test_expect_success 'left/right alignment formatting with stealing' ' |
264 | git commit --amend -m short --author "long long long <long@me.com>" && | |
265 | git log --pretty="format:%<(10,trunc)%s%>>(10,ltrunc)% an" >actual && | |
266 | # complete the incomplete line at the end | |
267 | echo >>actual && | |
268 | cat <<\EOF >expected && | |
269 | short long long long | |
270 | message .. A U Thor | |
271 | add bar A U Thor | |
272 | initial A U Thor | |
273 | EOF | |
274 | test_cmp expected actual | |
275 | ' | |
276 | ||
8028184e | 277 | test_done |