Add tests for git log --pretty, --format and --oneline.
[git/git.git] / t / t4202-log.sh
1 #!/bin/sh
2
3 test_description='git log'
4
5 . ./test-lib.sh
6
7 test_expect_success setup '
8
9 echo one >one &&
10 git add one &&
11 test_tick &&
12 git commit -m initial &&
13
14 echo ichi >one &&
15 git add one &&
16 test_tick &&
17 git commit -m second &&
18
19 git mv one ichi &&
20 test_tick &&
21 git commit -m third &&
22
23 cp ichi ein &&
24 git add ein &&
25 test_tick &&
26 git commit -m fourth &&
27
28 mkdir a &&
29 echo ni >a/two &&
30 git add a/two &&
31 test_tick &&
32 git commit -m fifth &&
33
34 git rm a/two &&
35 test_tick &&
36 git commit -m sixth
37
38 '
39
40 printf "sixth\nfifth\nfourth\nthird\nsecond\ninitial" > expect
41 test_expect_success 'pretty' '
42
43 git log --pretty="format:%s" > actual &&
44 test_cmp expect actual
45 '
46
47 printf "sixth\nfifth\nfourth\nthird\nsecond\ninitial\n" > expect
48 test_expect_success 'pretty (tformat)' '
49
50 git log --pretty="tformat:%s" > actual &&
51 test_cmp expect actual
52 '
53
54 test_expect_success 'pretty (shortcut)' '
55
56 git log --pretty="%s" > actual &&
57 test_cmp expect actual
58 '
59
60 test_expect_success 'format' '
61
62 git log --format="%s" > actual &&
63 test_cmp expect actual
64 '
65
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' '
75
76 git log --oneline > actual &&
77 test_cmp expect actual
78 '
79
80 test_expect_success 'diff-filter=A' '
81
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
88 }
89
90 '
91
92 test_expect_success 'diff-filter=M' '
93
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
100 }
101
102 '
103
104 test_expect_success 'diff-filter=D' '
105
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
112 }
113
114 '
115
116 test_expect_success 'diff-filter=R' '
117
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
124 }
125
126 '
127
128 test_expect_success 'diff-filter=C' '
129
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
136 }
137
138 '
139
140 test_expect_success 'git log --follow' '
141
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
148 }
149
150 '
151
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
157 '
158
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
163 '
164
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
169 '
170
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
175 '
176
177 test_done
178