|
1 Test that evolve related algorithms don't crash on obs markers cycles |
|
2 |
|
3 Global setup |
|
4 ============ |
|
5 |
|
6 $ . $TESTDIR/testlib/common.sh |
|
7 $ cat >> $HGRCPATH <<EOF |
|
8 > [ui] |
|
9 > interactive = true |
|
10 > [phases] |
|
11 > publish=False |
|
12 > [extensions] |
|
13 > evolve = |
|
14 > EOF |
|
15 |
|
16 Test with cycle |
|
17 =============== |
|
18 |
|
19 Test setup |
|
20 ---------- |
|
21 |
|
22 $ hg init $TESTTMP/cycle |
|
23 $ cd $TESTTMP/cycle |
|
24 $ mkcommit ROOT |
|
25 $ mkcommit A |
|
26 $ mkcommit B |
|
27 $ mkcommit C |
|
28 $ hg log -G |
|
29 @ changeset: 3:a8df460dbbfe |
|
30 | tag: tip |
|
31 | user: test |
|
32 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
33 | summary: C |
|
34 | |
|
35 o changeset: 2:c473644ee0e9 |
|
36 | user: test |
|
37 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
38 | summary: B |
|
39 | |
|
40 o changeset: 1:2a34000d3544 |
|
41 | user: test |
|
42 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
43 | summary: A |
|
44 | |
|
45 o changeset: 0:ea207398892e |
|
46 user: test |
|
47 date: Thu Jan 01 00:00:00 1970 +0000 |
|
48 summary: ROOT |
|
49 |
|
50 Create a cycle |
|
51 $ hg prune -s "desc(B)" "desc(A)" |
|
52 1 changesets pruned |
|
53 2 new unstable changesets |
|
54 $ hg prune -s "desc(C)" "desc(B)" |
|
55 1 changesets pruned |
|
56 $ hg prune -s "desc(A)" "desc(C)" |
|
57 0 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
58 working directory now at 2a34000d3544 |
|
59 1 changesets pruned |
|
60 $ hg log --hidden -G |
|
61 x changeset: 3:a8df460dbbfe |
|
62 | tag: tip |
|
63 | user: test |
|
64 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
65 | summary: C |
|
66 | |
|
67 x changeset: 2:c473644ee0e9 |
|
68 | user: test |
|
69 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
70 | summary: B |
|
71 | |
|
72 @ changeset: 1:2a34000d3544 |
|
73 | user: test |
|
74 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
75 | summary: A |
|
76 | |
|
77 o changeset: 0:ea207398892e |
|
78 user: test |
|
79 date: Thu Jan 01 00:00:00 1970 +0000 |
|
80 summary: ROOT |
|
81 |
|
82 Actual test |
|
83 ----------- |
|
84 |
|
85 Check that debugobshistory never crash on a cycle |
|
86 |
|
87 $ hg obslog "desc(A)" --hidden |
|
88 @ 2a34000d3544 (1) A |
|
89 | rewritten by test (*) as c473644ee0e9 (glob) |
|
90 | |
|
91 x a8df460dbbfe (3) C |
|
92 | rewritten by test (*) as 2a34000d3544 (glob) |
|
93 | |
|
94 x c473644ee0e9 (2) B |
|
95 | rewritten by test (*) as a8df460dbbfe (glob) |
|
96 | |
|
97 |
|
98 $ hg obslog "desc(B)" --hidden |
|
99 @ 2a34000d3544 (1) A |
|
100 | rewritten by test (*) as c473644ee0e9 (glob) |
|
101 | |
|
102 x a8df460dbbfe (3) C |
|
103 | rewritten by test (*) as 2a34000d3544 (glob) |
|
104 | |
|
105 x c473644ee0e9 (2) B |
|
106 | rewritten by test (*) as a8df460dbbfe (glob) |
|
107 | |
|
108 |
|
109 $ hg obslog "desc(C)" --hidden |
|
110 @ 2a34000d3544 (1) A |
|
111 | rewritten by test (*) as c473644ee0e9 (glob) |
|
112 | |
|
113 x a8df460dbbfe (3) C |
|
114 | rewritten by test (*) as 2a34000d3544 (glob) |
|
115 | |
|
116 x c473644ee0e9 (2) B |
|
117 | rewritten by test (*) as a8df460dbbfe (glob) |
|
118 | |
|
119 |
|
120 Test with multiple cyles |
|
121 ======================== |
|
122 |
|
123 Test setup |
|
124 ---------- |
|
125 |
|
126 $ hg init $TESTTMP/multiple-cycle |
|
127 $ cd $TESTTMP/multiple-cycle |
|
128 $ mkcommit ROOT |
|
129 $ mkcommit A |
|
130 $ mkcommit B |
|
131 $ mkcommit C |
|
132 $ mkcommit D |
|
133 $ mkcommit E |
|
134 $ mkcommit F |
|
135 $ hg log -G |
|
136 @ changeset: 6:d9f908fde1a1 |
|
137 | tag: tip |
|
138 | user: test |
|
139 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
140 | summary: F |
|
141 | |
|
142 o changeset: 5:0da815c333f6 |
|
143 | user: test |
|
144 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
145 | summary: E |
|
146 | |
|
147 o changeset: 4:868d2e0eb19c |
|
148 | user: test |
|
149 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
150 | summary: D |
|
151 | |
|
152 o changeset: 3:a8df460dbbfe |
|
153 | user: test |
|
154 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
155 | summary: C |
|
156 | |
|
157 o changeset: 2:c473644ee0e9 |
|
158 | user: test |
|
159 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
160 | summary: B |
|
161 | |
|
162 o changeset: 1:2a34000d3544 |
|
163 | user: test |
|
164 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
165 | summary: A |
|
166 | |
|
167 o changeset: 0:ea207398892e |
|
168 user: test |
|
169 date: Thu Jan 01 00:00:00 1970 +0000 |
|
170 summary: ROOT |
|
171 |
|
172 Create a first cycle |
|
173 $ hg prune -s "desc(B)" "desc(A)" |
|
174 1 changesets pruned |
|
175 5 new unstable changesets |
|
176 $ hg prune -s "desc(C)" "desc(B)" |
|
177 1 changesets pruned |
|
178 $ hg prune --split -s "desc(A)" -s "desc(D)" "desc(C)" |
|
179 1 changesets pruned |
|
180 And create a second one |
|
181 $ hg prune -s "desc(E)" "desc(D)" |
|
182 1 changesets pruned |
|
183 $ hg prune -s "desc(F)" "desc(E)" |
|
184 1 changesets pruned |
|
185 $ hg prune -s "desc(D)" "desc(F)" |
|
186 0 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
187 working directory now at 868d2e0eb19c |
|
188 1 changesets pruned |
|
189 $ hg log --hidden -G |
|
190 x changeset: 6:d9f908fde1a1 |
|
191 | tag: tip |
|
192 | user: test |
|
193 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
194 | summary: F |
|
195 | |
|
196 x changeset: 5:0da815c333f6 |
|
197 | user: test |
|
198 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
199 | summary: E |
|
200 | |
|
201 @ changeset: 4:868d2e0eb19c |
|
202 | user: test |
|
203 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
204 | summary: D |
|
205 | |
|
206 x changeset: 3:a8df460dbbfe |
|
207 | user: test |
|
208 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
209 | summary: C |
|
210 | |
|
211 x changeset: 2:c473644ee0e9 |
|
212 | user: test |
|
213 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
214 | summary: B |
|
215 | |
|
216 x changeset: 1:2a34000d3544 |
|
217 | user: test |
|
218 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
219 | summary: A |
|
220 | |
|
221 o changeset: 0:ea207398892e |
|
222 user: test |
|
223 date: Thu Jan 01 00:00:00 1970 +0000 |
|
224 summary: ROOT |
|
225 |
|
226 Actual test |
|
227 ----------- |
|
228 |
|
229 Check that debugobshistory never crash on a cycle |
|
230 |
|
231 $ hg obslog "desc(D)" --hidden |
|
232 x 0da815c333f6 (5) E |
|
233 | rewritten by test (*) as d9f908fde1a1 (glob) |
|
234 | |
|
235 @ 868d2e0eb19c (4) D |
|
236 |\ rewritten by test (*) as 0da815c333f6 (glob) |
|
237 | | |
|
238 | x d9f908fde1a1 (6) F |
|
239 | | rewritten by test (*) as 868d2e0eb19c (glob) |
|
240 | | |
|
241 +---x 2a34000d3544 (1) A |
|
242 | | rewritten by test (*) as c473644ee0e9 (glob) |
|
243 | | |
|
244 x | a8df460dbbfe (3) C |
|
245 | | rewritten by test (*) as 2a34000d3544, 868d2e0eb19c (glob) |
|
246 | | |
|
247 x | c473644ee0e9 (2) B |
|
248 | | rewritten by test (*) as a8df460dbbfe (glob) |
|
249 | | |
|
250 |
|
251 Check the json output is valid in this case |
|
252 |
|
253 $ hg obslog "desc(D)" --hidden --no-graph -Tjson | python -m json.tool |
|
254 [ |
|
255 { |
|
256 "debugobshistory.markers": [ |
|
257 { |
|
258 "debugobshistory.marker_date": [ |
|
259 *, (glob) |
|
260 0 |
|
261 ], |
|
262 "debugobshistory.marker_user": "test", |
|
263 "debugobshistory.succnodes": [ |
|
264 "0da815c333f6" |
|
265 ], |
|
266 "debugobshistory.verb": "rewritten" |
|
267 } |
|
268 ], |
|
269 "debugobshistory.node": "868d2e0eb19c", |
|
270 "debugobshistory.rev": 4, |
|
271 "debugobshistory.shortdescription": "D" |
|
272 }, |
|
273 { |
|
274 "debugobshistory.markers": [ |
|
275 { |
|
276 "debugobshistory.marker_date": [ |
|
277 *, (glob) |
|
278 0 |
|
279 ], |
|
280 "debugobshistory.marker_user": "test", |
|
281 "debugobshistory.succnodes": [ |
|
282 "868d2e0eb19c" |
|
283 ], |
|
284 "debugobshistory.verb": "rewritten" |
|
285 } |
|
286 ], |
|
287 "debugobshistory.node": "d9f908fde1a1", |
|
288 "debugobshistory.rev": 6, |
|
289 "debugobshistory.shortdescription": "F" |
|
290 }, |
|
291 { |
|
292 "debugobshistory.markers": [ |
|
293 { |
|
294 "debugobshistory.marker_date": [ |
|
295 *, (glob) |
|
296 0 |
|
297 ], |
|
298 "debugobshistory.marker_user": "test", |
|
299 "debugobshistory.succnodes": [ |
|
300 "d9f908fde1a1" |
|
301 ], |
|
302 "debugobshistory.verb": "rewritten" |
|
303 } |
|
304 ], |
|
305 "debugobshistory.node": "0da815c333f6", |
|
306 "debugobshistory.rev": 5, |
|
307 "debugobshistory.shortdescription": "E" |
|
308 }, |
|
309 { |
|
310 "debugobshistory.markers": [ |
|
311 { |
|
312 "debugobshistory.marker_date": [ |
|
313 *, (glob) |
|
314 0 |
|
315 ], |
|
316 "debugobshistory.marker_user": "test", |
|
317 "debugobshistory.succnodes": [ |
|
318 "2a34000d3544", |
|
319 "868d2e0eb19c" |
|
320 ], |
|
321 "debugobshistory.verb": "rewritten" |
|
322 } |
|
323 ], |
|
324 "debugobshistory.node": "a8df460dbbfe", |
|
325 "debugobshistory.rev": 3, |
|
326 "debugobshistory.shortdescription": "C" |
|
327 }, |
|
328 { |
|
329 "debugobshistory.markers": [ |
|
330 { |
|
331 "debugobshistory.marker_date": [ |
|
332 *, (glob) |
|
333 0 |
|
334 ], |
|
335 "debugobshistory.marker_user": "test", |
|
336 "debugobshistory.succnodes": [ |
|
337 "a8df460dbbfe" |
|
338 ], |
|
339 "debugobshistory.verb": "rewritten" |
|
340 } |
|
341 ], |
|
342 "debugobshistory.node": "c473644ee0e9", |
|
343 "debugobshistory.rev": 2, |
|
344 "debugobshistory.shortdescription": "B" |
|
345 }, |
|
346 { |
|
347 "debugobshistory.markers": [ |
|
348 { |
|
349 "debugobshistory.marker_date": [ |
|
350 *, (glob) |
|
351 0 |
|
352 ], |
|
353 "debugobshistory.marker_user": "test", |
|
354 "debugobshistory.succnodes": [ |
|
355 "c473644ee0e9" |
|
356 ], |
|
357 "debugobshistory.verb": "rewritten" |
|
358 } |
|
359 ], |
|
360 "debugobshistory.node": "2a34000d3544", |
|
361 "debugobshistory.rev": 1, |
|
362 "debugobshistory.shortdescription": "A" |
|
363 } |
|
364 ] |