test-revlog.t
89 lines
| 3.2 KiB
| text/troff
|
Tads3Lexer
/ tests / test-revlog.t
Gregory Szorc
|
r32390 | $ hg init empty-repo | ||
$ cd empty-repo | ||||
Flags on revlog version 0 are rejected | ||||
>>> with open('.hg/store/00changelog.i', 'wb') as fh: | ||||
Pulkit Goyal
|
r38091 | ... fh.write(b'\x00\x01\x00\x00') and None | ||
Gregory Szorc
|
r32390 | |||
$ hg log | ||||
r47928 | abort: unknown flags (0x01) in version 0 revlog 00changelog | |||
Martin von Zweigbergk
|
r46732 | [50] | ||
Gregory Szorc
|
r32390 | |||
Unknown flags on revlog version 1 are rejected | ||||
>>> with open('.hg/store/00changelog.i', 'wb') as fh: | ||||
Pulkit Goyal
|
r38091 | ... fh.write(b'\x00\x04\x00\x01') and None | ||
Gregory Szorc
|
r32390 | |||
$ hg log | ||||
r47928 | abort: unknown flags (0x04) in version 1 revlog 00changelog | |||
Martin von Zweigbergk
|
r46732 | [50] | ||
Gregory Szorc
|
r32390 | |||
Unknown version is rejected | ||||
>>> with open('.hg/store/00changelog.i', 'wb') as fh: | ||||
Raphaël Gomès
|
r47438 | ... fh.write(b'\x00\x00\xbe\xef') and None | ||
Gregory Szorc
|
r32390 | |||
$ hg log | ||||
r47928 | abort: unknown version (48879) in revlog 00changelog | |||
Martin von Zweigbergk
|
r46732 | [50] | ||
Gregory Szorc
|
r32390 | |||
$ cd .. | ||||
Matt Mackall
|
r28656 | Test for CVE-2016-3630 | ||
Arseniy Alekseyev
|
r50104 | $ mkdir test2; cd test2 | ||
Matt Mackall
|
r28656 | $ hg init | ||
Mark Thomas
|
r40317 | >>> import codecs | ||
>>> open("a.i", "wb").write(codecs.decode(codecs.decode( | ||||
Pulkit Goyal
|
r36502 | ... b"""eJxjYGZgZIAAYQYGxhgom+k/FMx8YKx9ZUaKSOyqo4cnuKb8mbqHV5cBCVTMWb1Cwqkhe4Gsg9AD | ||
Mark Thomas
|
r40317 | ... Joa3dYtcYYYBAQ8Qr4OqZAYRICPTSr5WKd/42rV36d+8/VmrNpv7NP1jQAXrQE4BqQUARngwVA==""", | ||
... "base64"), "zlib")) and None | ||||
Matt Mackall
|
r28656 | |||
Gregory Szorc
|
r39318 | $ hg debugrevlogindex a.i | ||
Gregory Szorc
|
r37301 | rev linkrev nodeid p1 p2 | ||
0 2 99e0332bd498 000000000000 000000000000 | ||||
1 3 6674f57a23d8 99e0332bd498 000000000000 | ||||
Gregory Szorc
|
r39316 | |||
r47838 | >>> from mercurial.revlogutils.constants import KIND_OTHER | |||
Gregory Szorc
|
r39316 | >>> from mercurial import revlog, vfs | ||
>>> tvfs = vfs.vfs(b'.') | ||||
>>> tvfs.options = {b'revlogv1': True} | ||||
r47921 | >>> rl = revlog.revlog(tvfs, target=(KIND_OTHER, b'test'), radix=b'a') | |||
Gregory Szorc
|
r39316 | >>> rl.revision(1) | ||
Mark Thomas
|
r40317 | mpatchError(*'patch cannot be decoded'*) (glob) | ||
Arseniy Alekseyev
|
r50104 | |||
$ cd .. | ||||
Regression test for support for the old repos with strange diff encoding. | ||||
Apparently it used to be possible (maybe it's still possible, but we don't know how) | ||||
to create commits whose diffs are encoded relative to a nullrev. | ||||
This test checks that a repo with that encoding can still be read. | ||||
This is what we did to produce the repo in test-revlog-diff-relative-to-nullrev.tar: | ||||
- tweak the code in mercurial/revlogutils/deltas.py to produce such "trivial" deltas: | ||||
> if deltainfo is None: | ||||
> - deltainfo = self._fullsnapshotinfo(fh, revinfo, target_rev) | ||||
> + deltainfo = self._builddeltainfo(revinfo, nullrev, fh) | ||||
- hg init | ||||
- echo hi > a | ||||
- hg commit -Am_ | ||||
- remove some cache files | ||||
Arseniy Alekseyev
|
r50384 | $ tar -xf - < "$TESTDIR"/bundles/test-revlog-diff-relative-to-nullrev.tar | ||
Arseniy Alekseyev
|
r50104 | $ cd nullrev-diff | ||
$ hg debugdeltachain a | ||||
r50116 | rev p1 p2 chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio readsize largestblk rddensity srchunks | |||
0 -1 -1 1 2 -1 p1 15 3 15 5.00000 15 0 0.00000 15 15 1.00000 1 | ||||
r50133 | 1 0 -1 1 2 -1 p2 15 3 15 5.00000 30 15 1.00000 30 30 0.50000 1 | |||
r50134 | 2 -1 -1 1 2 -1 p1 15 3 15 5.00000 45 30 2.00000 45 45 0.33333 1 | |||
Arseniy Alekseyev
|
r50104 | $ hg cat --config rhg.cat=true -r 0 a | ||
hi | ||||
r50133 | $ hg cat --config rhg.cat=true -r 1 a | |||
ho | ||||
r50134 | $ hg cat --config rhg.cat=true -r 2 a | |||
ha | ||||
Arseniy Alekseyev
|
r50104 | $ cd .. | ||