##// END OF EJS Templates
test-revlog: test a repository that contains a diff against nullrev...
test-revlog: test a repository that contains a diff against nullrev We are witnessing a crash in the rust code, so we lets make sure this case is tested.

File last commit:

r50104:2dd53a33 stable
r50104:2dd53a33 stable
Show More
test-revlog.t
89 lines | 2.8 KiB | text/troff | Tads3Lexer
Gregory Szorc
tests: tests for revlog version and flags loading...
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
py3: suppress the output from .write() calls in few tests...
r38091 ... fh.write(b'\x00\x01\x00\x00') and None
Gregory Szorc
tests: tests for revlog version and flags loading...
r32390
$ hg log
revlog: use revlog.display_id in format related errors...
r47928 abort: unknown flags (0x01) in version 0 revlog 00changelog
Martin von Zweigbergk
errors: use detailed exit code 50 for StorageError...
r46732 [50]
Gregory Szorc
tests: tests for revlog version and flags loading...
r32390
Unknown flags on revlog version 1 are rejected
>>> with open('.hg/store/00changelog.i', 'wb') as fh:
Pulkit Goyal
py3: suppress the output from .write() calls in few tests...
r38091 ... fh.write(b'\x00\x04\x00\x01') and None
Gregory Szorc
tests: tests for revlog version and flags loading...
r32390
$ hg log
revlog: use revlog.display_id in format related errors...
r47928 abort: unknown flags (0x04) in version 1 revlog 00changelog
Martin von Zweigbergk
errors: use detailed exit code 50 for StorageError...
r46732 [50]
Gregory Szorc
tests: tests for revlog version and flags loading...
r32390
Unknown version is rejected
>>> with open('.hg/store/00changelog.i', 'wb') as fh:
Raphaël Gomès
revlog: introduce v2 format...
r47438 ... fh.write(b'\x00\x00\xbe\xef') and None
Gregory Szorc
tests: tests for revlog version and flags loading...
r32390
$ hg log
revlog: use revlog.display_id in format related errors...
r47928 abort: unknown version (48879) in revlog 00changelog
Martin von Zweigbergk
errors: use detailed exit code 50 for StorageError...
r46732 [50]
Gregory Szorc
tests: tests for revlog version and flags loading...
r32390
$ cd ..
Matt Mackall
parsers: fix list sizing rounding error (SEC)...
r28656 Test for CVE-2016-3630
Arseniy Alekseyev
test-revlog: test a repository that contains a diff against nullrev...
r50104 $ mkdir test2; cd test2
Matt Mackall
parsers: fix list sizing rounding error (SEC)...
r28656 $ hg init
Mark Thomas
py3: fix test-revlog.t...
r40317 >>> import codecs
>>> open("a.i", "wb").write(codecs.decode(codecs.decode(
Pulkit Goyal
py3: add b'' prefixes in tests/test-revlog.t...
r36502 ... b"""eJxjYGZgZIAAYQYGxhgom+k/FMx8YKx9ZUaKSOyqo4cnuKb8mbqHV5cBCVTMWb1Cwqkhe4Gsg9AD
Mark Thomas
py3: fix test-revlog.t...
r40317 ... Joa3dYtcYYYBAQ8Qr4OqZAYRICPTSr5WKd/42rV36d+8/VmrNpv7NP1jQAXrQE4BqQUARngwVA==""",
... "base64"), "zlib")) and None
Matt Mackall
parsers: fix list sizing rounding error (SEC)...
r28656
Gregory Szorc
debugcommands: introduce debugrevlogindex (BC)...
r39318 $ hg debugrevlogindex a.i
Gregory Szorc
debugcommands: drop offset and length from debugindex by default...
r37301 rev linkrev nodeid p1 p2
0 2 99e0332bd498 000000000000 000000000000
1 3 6674f57a23d8 99e0332bd498 000000000000
Gregory Szorc
tests: use inline Python for revlog test...
r39316
revlog: introduce an explicit tracking of what the revlog is about...
r47838 >>> from mercurial.revlogutils.constants import KIND_OTHER
Gregory Szorc
tests: use inline Python for revlog test...
r39316 >>> from mercurial import revlog, vfs
>>> tvfs = vfs.vfs(b'.')
>>> tvfs.options = {b'revlogv1': True}
revlog: use a "radix" to address revlog...
r47921 >>> rl = revlog.revlog(tvfs, target=(KIND_OTHER, b'test'), radix=b'a')
Gregory Szorc
tests: use inline Python for revlog test...
r39316 >>> rl.revision(1)
Mark Thomas
py3: fix test-revlog.t...
r40317 mpatchError(*'patch cannot be decoded'*) (glob)
Arseniy Alekseyev
test-revlog: test a repository that contains a diff against nullrev...
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
$ tar --force-local -xf "$TESTDIR"/bundles/test-revlog-diff-relative-to-nullrev.tar
$ cd nullrev-diff
$ hg debugdeltachain a
rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio readsize largestblk rddensity srchunks
0 1 2 -1 p1 15 3 15 5.00000 15 0 0.00000 15 15 1.00000 1
#if rhg
$ hg cat --config rhg.cat=true -r 0 a
abort: corrupted revlog
[255]
#else
$ hg cat --config rhg.cat=true -r 0 a
hi
#endif
$ cd ..