Merge branch 'ef/fast-export'
[git/jnareb-git.git] / t / t4202-log.sh
blobb98619035c58d1b5c617c6e9998e7ae07ab3f27f
1 #!/bin/sh
3 test_description='git log'
5 . ./test-lib.sh
7 test_expect_success setup '
9 echo one >one &&
10 git add one &&
11 test_tick &&
12 git commit -m initial &&
14 echo ichi >one &&
15 git add one &&
16 test_tick &&
17 git commit -m second &&
19 git mv one ichi &&
20 test_tick &&
21 git commit -m third &&
23 cp ichi ein &&
24 git add ein &&
25 test_tick &&
26 git commit -m fourth &&
28 mkdir a &&
29 echo ni >a/two &&
30 git add a/two &&
31 test_tick &&
32 git commit -m fifth &&
34 git rm a/two &&
35 test_tick &&
36 git commit -m sixth
40 printf "sixth\nfifth\nfourth\nthird\nsecond\ninitial" > expect
41 test_expect_success 'pretty' '
43 git log --pretty="format:%s" > actual &&
44 test_cmp expect actual
47 printf "sixth\nfifth\nfourth\nthird\nsecond\ninitial\n" > expect
48 test_expect_success 'pretty (tformat)' '
50 git log --pretty="tformat:%s" > actual &&
51 test_cmp expect actual
54 test_expect_success 'pretty (shortcut)' '
56 git log --pretty="%s" > actual &&
57 test_cmp expect actual
60 test_expect_success 'format' '
62 git log --format="%s" > actual &&
63 test_cmp expect actual
66 cat > expect << EOF
67 804a787 sixth
68 394ef78 fifth
69 5d31159 fourth
70 2fbe8c0 third
71 f7dab8e second
72 3a2fdcb initial
73 EOF
74 test_expect_success 'oneline' '
76 git log --oneline > actual &&
77 test_cmp expect actual
80 test_expect_success 'diff-filter=A' '
82 actual=$(git log --pretty="format:%s" --diff-filter=A HEAD) &&
83 expect=$(echo fifth ; echo fourth ; echo third ; echo initial) &&
84 test "$actual" = "$expect" || {
85 echo Oops
86 echo "Actual: $actual"
87 false
92 test_expect_success 'diff-filter=M' '
94 actual=$(git log --pretty="format:%s" --diff-filter=M HEAD) &&
95 expect=$(echo second) &&
96 test "$actual" = "$expect" || {
97 echo Oops
98 echo "Actual: $actual"
99 false
104 test_expect_success 'diff-filter=D' '
106 actual=$(git log --pretty="format:%s" --diff-filter=D HEAD) &&
107 expect=$(echo sixth ; echo third) &&
108 test "$actual" = "$expect" || {
109 echo Oops
110 echo "Actual: $actual"
111 false
116 test_expect_success 'diff-filter=R' '
118 actual=$(git log -M --pretty="format:%s" --diff-filter=R HEAD) &&
119 expect=$(echo third) &&
120 test "$actual" = "$expect" || {
121 echo Oops
122 echo "Actual: $actual"
123 false
128 test_expect_success 'diff-filter=C' '
130 actual=$(git log -C -C --pretty="format:%s" --diff-filter=C HEAD) &&
131 expect=$(echo fourth) &&
132 test "$actual" = "$expect" || {
133 echo Oops
134 echo "Actual: $actual"
135 false
140 test_expect_success 'git log --follow' '
142 actual=$(git log --follow --pretty="format:%s" ichi) &&
143 expect=$(echo third ; echo second ; echo initial) &&
144 test "$actual" = "$expect" || {
145 echo Oops
146 echo "Actual: $actual"
147 false
152 test_expect_success 'setup case sensitivity tests' '
153 echo case >one &&
154 test_tick &&
155 git add one
156 git commit -a -m Second
159 test_expect_success 'log --grep' '
160 echo second >expect &&
161 git log -1 --pretty="tformat:%s" --grep=sec >actual &&
162 test_cmp expect actual
165 test_expect_success 'log -i --grep' '
166 echo Second >expect &&
167 git log -1 --pretty="tformat:%s" -i --grep=sec >actual &&
168 test_cmp expect actual
171 test_expect_success 'log --grep -i' '
172 echo Second >expect &&
173 git log -1 --pretty="tformat:%s" --grep=sec -i >actual &&
174 test_cmp expect actual
177 cat > expect <<EOF
178 * Second
179 * sixth
180 * fifth
181 * fourth
182 * third
183 * second
184 * initial
187 test_expect_success 'simple log --graph' '
188 git log --graph --pretty=tformat:%s >actual &&
189 test_cmp expect actual
192 test_expect_success 'set up merge history' '
193 git checkout -b side HEAD~4 &&
194 test_commit side-1 1 1 &&
195 test_commit side-2 2 2 &&
196 git checkout master &&
197 git merge side
200 cat > expect <<\EOF
201 * Merge branch 'side'
203 | * side-2
204 | * side-1
205 * | Second
206 * | sixth
207 * | fifth
208 * | fourth
210 * third
211 * second
212 * initial
215 test_expect_success 'log --graph with merge' '
216 git log --graph --date-order --pretty=tformat:%s |
217 sed "s/ *$//" >actual &&
218 test_cmp expect actual
221 cat > expect <<\EOF
222 * commit master
223 |\ Merge: A B
224 | | Author: A U Thor <author@example.com>
226 | | Merge branch 'side'
228 | * commit side
229 | | Author: A U Thor <author@example.com>
231 | | side-2
233 | * commit tags/side-1
234 | | Author: A U Thor <author@example.com>
236 | | side-1
238 * | commit master~1
239 | | Author: A U Thor <author@example.com>
241 | | Second
243 * | commit master~2
244 | | Author: A U Thor <author@example.com>
246 | | sixth
248 * | commit master~3
249 | | Author: A U Thor <author@example.com>
251 | | fifth
253 * | commit master~4
254 |/ Author: A U Thor <author@example.com>
256 | fourth
258 * commit tags/side-1~1
259 | Author: A U Thor <author@example.com>
261 | third
263 * commit tags/side-1~2
264 | Author: A U Thor <author@example.com>
266 | second
268 * commit tags/side-1~3
269 Author: A U Thor <author@example.com>
271 initial
274 test_expect_success 'log --graph with full output' '
275 git log --graph --date-order --pretty=short |
276 git name-rev --name-only --stdin |
277 sed "s/Merge:.*/Merge: A B/;s/ *$//" >actual &&
278 test_cmp expect actual
281 test_expect_success 'set up more tangled history' '
282 git checkout -b tangle HEAD~6 &&
283 test_commit tangle-a tangle-a a &&
284 git merge master~3 &&
285 git merge side~1 &&
286 git checkout master &&
287 git merge tangle
290 cat > expect <<\EOF
291 * Merge branch 'tangle'
293 | * Merge branch 'side' (early part) into tangle
294 | |\
295 | * \ Merge branch 'master' (early part) into tangle
296 | |\ \
297 | * | | tangle-a
298 * | | | Merge branch 'side'
299 |\ \ \ \
300 | * | | | side-2
301 | | | |/
302 | | |/|
303 | |/| |
304 | * | | side-1
305 * | | | Second
306 * | | | sixth
307 | | |/
308 | |/|
309 |/| |
310 * | | fifth
311 * | | fourth
312 |/ /
313 * | third
315 * second
316 * initial
319 test_expect_success 'log --graph with merge' '
320 git log --graph --date-order --pretty=tformat:%s |
321 sed "s/ *$//" >actual &&
322 test_cmp expect actual
325 test_done