]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/sh | |
2 | ||
3 | # There's more than one "correct" way to represent the history graphically. | |
4 | # These tests depend on the current behavior of the graphing code. If the | |
5 | # graphing code is ever changed to draw the output differently, these tests | |
6 | # cases will need to be updated to know about the new layout. | |
7 | ||
8 | test_description='--graph and simplified history' | |
9 | ||
10 | . ./test-lib.sh | |
11 | ||
12 | test_expect_success 'set up rev-list --graph test' ' | |
13 | # 3 commits on branch A | |
14 | test_commit A1 foo.txt && | |
15 | test_commit A2 bar.txt && | |
16 | test_commit A3 bar.txt && | |
17 | git branch -m master A && | |
18 | ||
19 | # 2 commits on branch B, started from A1 | |
20 | git checkout -b B A1 && | |
21 | test_commit B1 foo.txt && | |
22 | test_commit B2 abc.txt && | |
23 | ||
24 | # 2 commits on branch C, started from A2 | |
25 | git checkout -b C A2 && | |
26 | test_commit C1 xyz.txt && | |
27 | test_commit C2 xyz.txt && | |
28 | ||
29 | # Octopus merge B and C into branch A | |
30 | git checkout A && | |
31 | git merge B C && | |
32 | git tag A4 && | |
33 | ||
34 | test_commit A5 bar.txt && | |
35 | ||
36 | # More commits on C, then merge C into A | |
37 | git checkout C && | |
38 | test_commit C3 foo.txt && | |
39 | test_commit C4 bar.txt && | |
40 | git checkout A && | |
41 | git merge -s ours C && | |
42 | git tag A6 && | |
43 | ||
44 | test_commit A7 bar.txt && | |
45 | ||
46 | # Store commit names in variables for later use | |
47 | A1=$(git rev-parse --verify A1) && | |
48 | A2=$(git rev-parse --verify A2) && | |
49 | A3=$(git rev-parse --verify A3) && | |
50 | A4=$(git rev-parse --verify A4) && | |
51 | A5=$(git rev-parse --verify A5) && | |
52 | A6=$(git rev-parse --verify A6) && | |
53 | A7=$(git rev-parse --verify A7) && | |
54 | B1=$(git rev-parse --verify B1) && | |
55 | B2=$(git rev-parse --verify B2) && | |
56 | C1=$(git rev-parse --verify C1) && | |
57 | C2=$(git rev-parse --verify C2) && | |
58 | C3=$(git rev-parse --verify C3) && | |
59 | C4=$(git rev-parse --verify C4) | |
60 | ' | |
61 | ||
62 | test_expect_success '--graph --all' ' | |
63 | rm -f expected && | |
64 | echo "* $A7" >> expected && | |
65 | echo "* $A6" >> expected && | |
66 | echo "|\\ " >> expected && | |
67 | echo "| * $C4" >> expected && | |
68 | echo "| * $C3" >> expected && | |
69 | echo "* | $A5" >> expected && | |
70 | echo "| | " >> expected && | |
71 | echo "| \\ " >> expected && | |
72 | echo "*-. | $A4" >> expected && | |
73 | echo "|\\ \\| " >> expected && | |
74 | echo "| | * $C2" >> expected && | |
75 | echo "| | * $C1" >> expected && | |
76 | echo "| * | $B2" >> expected && | |
77 | echo "| * | $B1" >> expected && | |
78 | echo "* | | $A3" >> expected && | |
79 | echo "| |/ " >> expected && | |
80 | echo "|/| " >> expected && | |
81 | echo "* | $A2" >> expected && | |
82 | echo "|/ " >> expected && | |
83 | echo "* $A1" >> expected && | |
84 | git rev-list --graph --all > actual && | |
85 | test_cmp expected actual | |
86 | ' | |
87 | ||
88 | # Make sure the graph_is_interesting() code still realizes | |
89 | # that undecorated merges are interesting, even with --simplify-by-decoration | |
90 | test_expect_success '--graph --simplify-by-decoration' ' | |
91 | rm -f expected && | |
92 | git tag -d A4 && | |
93 | echo "* $A7" >> expected && | |
94 | echo "* $A6" >> expected && | |
95 | echo "|\\ " >> expected && | |
96 | echo "| * $C4" >> expected && | |
97 | echo "| * $C3" >> expected && | |
98 | echo "* | $A5" >> expected && | |
99 | echo "| | " >> expected && | |
100 | echo "| \\ " >> expected && | |
101 | echo "*-. | $A4" >> expected && | |
102 | echo "|\\ \\| " >> expected && | |
103 | echo "| | * $C2" >> expected && | |
104 | echo "| | * $C1" >> expected && | |
105 | echo "| * | $B2" >> expected && | |
106 | echo "| * | $B1" >> expected && | |
107 | echo "* | | $A3" >> expected && | |
108 | echo "| |/ " >> expected && | |
109 | echo "|/| " >> expected && | |
110 | echo "* | $A2" >> expected && | |
111 | echo "|/ " >> expected && | |
112 | echo "* $A1" >> expected && | |
113 | git rev-list --graph --all --simplify-by-decoration > actual && | |
114 | test_cmp expected actual | |
115 | ' | |
116 | ||
117 | test_expect_success 'setup: get rid of decorations on B' ' | |
118 | git tag -d B2 && | |
119 | git tag -d B1 && | |
120 | git branch -d B | |
121 | ' | |
122 | ||
123 | # Graph with branch B simplified away | |
124 | test_expect_success '--graph --simplify-by-decoration prune branch B' ' | |
125 | rm -f expected && | |
126 | echo "* $A7" >> expected && | |
127 | echo "* $A6" >> expected && | |
128 | echo "|\\ " >> expected && | |
129 | echo "| * $C4" >> expected && | |
130 | echo "| * $C3" >> expected && | |
131 | echo "* | $A5" >> expected && | |
132 | echo "* | $A4" >> expected && | |
133 | echo "|\\| " >> expected && | |
134 | echo "| * $C2" >> expected && | |
135 | echo "| * $C1" >> expected && | |
136 | echo "* | $A3" >> expected && | |
137 | echo "|/ " >> expected && | |
138 | echo "* $A2" >> expected && | |
139 | echo "* $A1" >> expected && | |
140 | git rev-list --graph --simplify-by-decoration --all > actual && | |
141 | test_cmp expected actual | |
142 | ' | |
143 | ||
144 | test_expect_success '--graph --full-history -- bar.txt' ' | |
145 | rm -f expected && | |
146 | echo "* $A7" >> expected && | |
147 | echo "* $A6" >> expected && | |
148 | echo "|\\ " >> expected && | |
149 | echo "| * $C4" >> expected && | |
150 | echo "* | $A5" >> expected && | |
151 | echo "* | $A4" >> expected && | |
152 | echo "|\\| " >> expected && | |
153 | echo "* | $A3" >> expected && | |
154 | echo "|/ " >> expected && | |
155 | echo "* $A2" >> expected && | |
156 | git rev-list --graph --full-history --all -- bar.txt > actual && | |
157 | test_cmp expected actual | |
158 | ' | |
159 | ||
160 | test_expect_success '--graph --full-history --simplify-merges -- bar.txt' ' | |
161 | rm -f expected && | |
162 | echo "* $A7" >> expected && | |
163 | echo "* $A6" >> expected && | |
164 | echo "|\\ " >> expected && | |
165 | echo "| * $C4" >> expected && | |
166 | echo "* | $A5" >> expected && | |
167 | echo "* | $A3" >> expected && | |
168 | echo "|/ " >> expected && | |
169 | echo "* $A2" >> expected && | |
170 | git rev-list --graph --full-history --simplify-merges --all \ | |
171 | -- bar.txt > actual && | |
172 | test_cmp expected actual | |
173 | ' | |
174 | ||
175 | test_expect_success '--graph -- bar.txt' ' | |
176 | rm -f expected && | |
177 | echo "* $A7" >> expected && | |
178 | echo "* $A5" >> expected && | |
179 | echo "* $A3" >> expected && | |
180 | echo "| * $C4" >> expected && | |
181 | echo "|/ " >> expected && | |
182 | echo "* $A2" >> expected && | |
183 | git rev-list --graph --all -- bar.txt > actual && | |
184 | test_cmp expected actual | |
185 | ' | |
186 | ||
187 | test_expect_success '--graph --sparse -- bar.txt' ' | |
188 | rm -f expected && | |
189 | echo "* $A7" >> expected && | |
190 | echo "* $A6" >> expected && | |
191 | echo "* $A5" >> expected && | |
192 | echo "* $A4" >> expected && | |
193 | echo "* $A3" >> expected && | |
194 | echo "| * $C4" >> expected && | |
195 | echo "| * $C3" >> expected && | |
196 | echo "| * $C2" >> expected && | |
197 | echo "| * $C1" >> expected && | |
198 | echo "|/ " >> expected && | |
199 | echo "* $A2" >> expected && | |
200 | echo "* $A1" >> expected && | |
201 | git rev-list --graph --sparse --all -- bar.txt > actual && | |
202 | test_cmp expected actual | |
203 | ' | |
204 | ||
205 | test_expect_success '--graph ^C4' ' | |
206 | rm -f expected && | |
207 | echo "* $A7" >> expected && | |
208 | echo "* $A6" >> expected && | |
209 | echo "* $A5" >> expected && | |
210 | echo "* $A4" >> expected && | |
211 | echo "|\\ " >> expected && | |
212 | echo "| * $B2" >> expected && | |
213 | echo "| * $B1" >> expected && | |
214 | echo "* $A3" >> expected && | |
215 | git rev-list --graph --all ^C4 > actual && | |
216 | test_cmp expected actual | |
217 | ' | |
218 | ||
219 | test_expect_success '--graph ^C3' ' | |
220 | rm -f expected && | |
221 | echo "* $A7" >> expected && | |
222 | echo "* $A6" >> expected && | |
223 | echo "|\\ " >> expected && | |
224 | echo "| * $C4" >> expected && | |
225 | echo "* $A5" >> expected && | |
226 | echo "* $A4" >> expected && | |
227 | echo "|\\ " >> expected && | |
228 | echo "| * $B2" >> expected && | |
229 | echo "| * $B1" >> expected && | |
230 | echo "* $A3" >> expected && | |
231 | git rev-list --graph --all ^C3 > actual && | |
232 | test_cmp expected actual | |
233 | ' | |
234 | ||
235 | # I don't think the ordering of the boundary commits is really | |
236 | # that important, but this test depends on it. If the ordering ever changes | |
237 | # in the code, we'll need to update this test. | |
238 | test_expect_success '--graph --boundary ^C3' ' | |
239 | rm -f expected && | |
240 | echo "* $A7" >> expected && | |
241 | echo "* $A6" >> expected && | |
242 | echo "|\\ " >> expected && | |
243 | echo "| * $C4" >> expected && | |
244 | echo "* | $A5" >> expected && | |
245 | echo "| | " >> expected && | |
246 | echo "| \\ " >> expected && | |
247 | echo "*-. \\ $A4" >> expected && | |
248 | echo "|\\ \\ \\ " >> expected && | |
249 | echo "| * | | $B2" >> expected && | |
250 | echo "| * | | $B1" >> expected && | |
251 | echo "* | | | $A3" >> expected && | |
252 | echo "o | | | $A2" >> expected && | |
253 | echo "|/ / / " >> expected && | |
254 | echo "o / / $A1" >> expected && | |
255 | echo " / / " >> expected && | |
256 | echo "| o $C3" >> expected && | |
257 | echo "|/ " >> expected && | |
258 | echo "o $C2" >> expected && | |
259 | git rev-list --graph --boundary --all ^C3 > actual && | |
260 | test_cmp expected actual | |
261 | ' | |
262 | ||
263 | test_done |