##// END OF EJS Templates
tests: demonstrate broken manifest generation with the pure module...
Matt Harbison -
r42568:89c0c8ed stable
parent child Browse files
Show More
@@ -35,6 +35,9 b' from .utils import ('
35 parsers = policy.importmod(r'parsers')
35 parsers = policy.importmod(r'parsers')
36 propertycache = util.propertycache
36 propertycache = util.propertycache
37
37
38 # Allow tests to more easily test the alternate path in manifestdict.fastdelta()
39 FASTDELTA_TEXTDIFF_THRESHOLD = 1000
40
38 def _parse(data):
41 def _parse(data):
39 # This method does a little bit of excessive-looking
42 # This method does a little bit of excessive-looking
40 # precondition checking. This is so that the behavior of this
43 # precondition checking. This is so that the behavior of this
@@ -558,7 +561,7 b' class manifestdict(object):'
558 addbuf = util.buffer(base)
561 addbuf = util.buffer(base)
559
562
560 changes = list(changes)
563 changes = list(changes)
561 if len(changes) < 1000:
564 if len(changes) < FASTDELTA_TEXTDIFF_THRESHOLD:
562 # start with a readonly loop that finds the offset of
565 # start with a readonly loop that finds the offset of
563 # each line and creates the deltas
566 # each line and creates the deltas
564 for f, todelete in changes:
567 for f, todelete in changes:
@@ -201,3 +201,94 b' hg update should warm the cache too'
201 total cache data size 425 bytes, on-disk 425 bytes
201 total cache data size 425 bytes, on-disk 425 bytes
202 $ hg log -r '0' --debug | grep 'manifest:'
202 $ hg log -r '0' --debug | grep 'manifest:'
203 manifest: 0:fce2a30dedad1eef4da95ca1dc0004157aa527cf
203 manifest: 0:fce2a30dedad1eef4da95ca1dc0004157aa527cf
204
205 Test file removal (especially with pure). The tests are crafted such that there
206 will be contiguous spans of existing entries to ensure that is handled properly.
207 (In this case, a.txt, aa.txt and c.txt, cc.txt, and ccc.txt)
208
209 $ cat > $TESTTMP/manifest.py <<EOF
210 > from mercurial import (
211 > extensions,
212 > manifest,
213 > )
214 > def extsetup(ui):
215 > manifest.FASTDELTA_TEXTDIFF_THRESHOLD = 0
216 > EOF
217 $ cat >> $HGRCPATH <<EOF
218 > [extensions]
219 > manifest = $TESTTMP/manifest.py
220 > EOF
221
222 BROKEN: Pure removes should actually remove all dropped entries
223
224 $ hg init repo
225 $ cd repo
226 $ echo a > a.txt
227 $ echo aa > aa.txt
228 $ echo b > b.txt
229 $ echo c > c.txt
230 $ echo c > cc.txt
231 $ echo c > ccc.txt
232 $ echo b > d.txt
233 $ echo c > e.txt
234 $ hg ci -Aqm 'a-e'
235
236 $ hg rm b.txt d.txt
237 $ hg ci -m 'remove b and d'
238
239 $ hg debugdata -m 1
240 a.txt\x00b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 (esc)
241 aa.txt\x00a4bdc161c8fbb523c9a60409603f8710ff49a571 (esc)
242 \x00.txt\x001e88685f5ddec574a34c70af492f95b6debc8741 (esc) (pure !)
243 c.txt\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc)
244 cc.txt\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc)
245 ccc.txt\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc)
246 \x00.txt\x001e88685f5ddec574a34c70af492f95b6debc8741 (esc) (pure !)
247 e.txt\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc)
248
249 $ hg up -C . 2>&1 | grep ValueError || true
250 raise ValueError("Manifest lines not in sorted order.") (pure !)
251 ValueError: Manifest lines not in sorted order. (pure !)
252
253 $ hg verify || true
254 checking changesets
255 checking manifests
256 manifest@1: reading delta c1f6b2f803ac: Non-hexadecimal digit found (pure !)
257 crosschecking files in changesets and manifests
258 checking files
259 checked 2 changesets with 8 changes to 8 files
260 1 integrity errors encountered! (pure !)
261 (first damaged changeset appears to be 1) (pure !)
262
263 $ hg rollback -q --config ui.rollback=True
264 $ hg rm b.txt d.txt
265 $ echo bb > bb.txt
266
267 BROKEN: A mix of adds and removes should remove all dropped entries.
268
269 $ hg ci -Aqm 'remove b and d; add bb'
270
271 $ hg debugdata -m 1
272 a.txt\x00b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 (esc)
273 aa.txt\x00a4bdc161c8fbb523c9a60409603f8710ff49a571 (esc)
274 bb.txt\x0004c6faf8a9fdd848a5304dfc1704749a374dff44 (esc)
275 c.txt\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc)
276 cc.txt\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc)
277 ccc.txt\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc)
278 \x00.txt\x001e88685f5ddec574a34c70af492f95b6debc8741 (esc) (pure !)
279 e.txt\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc)
280
281 $ hg up -C . 2>&1 | grep ValueError || true
282 raise ValueError("Manifest lines not in sorted order.") (pure !)
283 ValueError: Manifest lines not in sorted order. (pure !)
284
285 $ hg verify || true
286 checking changesets
287 checking manifests
288 manifest@1: reading delta 0a0385480090: Manifest lines not in sorted order. (pure !)
289 crosschecking files in changesets and manifests
290 bb.txt@1: in changeset but not in manifest (pure !)
291 checking files
292 checked 2 changesets with 9 changes to 9 files
293 2 integrity errors encountered! (pure !)
294 (first damaged changeset appears to be 1) (pure !)
General Comments 0
You need to be logged in to leave comments. Login now