##// END OF EJS Templates
tests: use pattern matching to mask `ECONNREFUSED` messages...
tests: use pattern matching to mask `ECONNREFUSED` messages The second and third one of these in `test-http-proxy.t` was failing on Windows. The others were found by grep and by failed tests when output was matched and an attempt was made to emit the mask pattern. The first clonebundles failure on Windows emitted: error fetching bundle: [WinError 10061] $ECONNREFUSED$ We should probably stringify that better to get rid of the "[WinError 10061]" part.

File last commit:

r51969:786b6225 default
r52835:73a43fe3 default
Show More
test-revlog.t
89 lines | 2.7 KiB | text/troff | Tads3Lexer
$ hg init empty-repo
$ cd empty-repo
Flags on revlog version 0 are rejected
>>> with open('.hg/store/00changelog.i', 'wb') as fh:
... fh.write(b'\x00\x01\x00\x00') and None
$ hg log
abort: unknown flags (0x01) in version 0 revlog 00changelog
[50]
Unknown flags on revlog version 1 are rejected
>>> with open('.hg/store/00changelog.i', 'wb') as fh:
... fh.write(b'\x00\x04\x00\x01') and None
$ hg log
abort: unknown flags (0x04) in version 1 revlog 00changelog
[50]
Unknown version is rejected
>>> with open('.hg/store/00changelog.i', 'wb') as fh:
... fh.write(b'\x00\x00\xbe\xef') and None
$ hg log
abort: unknown version (48879) in revlog 00changelog
[50]
$ cd ..
Test for CVE-2016-3630
$ mkdir test2; cd test2
$ hg init
>>> import codecs
>>> open("a.i", "wb").write(codecs.decode(codecs.decode(
... b"""eJxjYGZgZIAAYQYGxhgom+k/FMx8YKx9ZUaKSOyqo4cnuKb8mbqHV5cBCVTMWb1Cwqkhe4Gsg9AD
... Joa3dYtcYYYBAQ8Qr4OqZAYRICPTSr5WKd/42rV36d+8/VmrNpv7NP1jQAXrQE4BqQUARngwVA==""",
... "base64"), "zlib")) and None
$ hg debugrevlogindex a.i
rev linkrev nodeid p1 p2
0 2 99e0332bd498 000000000000 000000000000
1 3 6674f57a23d8 99e0332bd498 000000000000
>>> from mercurial.revlogutils.constants import KIND_OTHER
>>> from mercurial import revlog, vfs
>>> tvfs = vfs.vfs(b'.')
>>> tvfs.options = {b'revlogv1': True}
>>> rl = revlog.revlog(tvfs, target=(KIND_OTHER, b'test'), radix=b'a')
>>> rl.revision(1)
mpatchError(*'patch cannot be decoded'*) (glob)
$ 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 -xf - < "$TESTDIR"/bundles/test-revlog-diff-relative-to-nullrev.tar
$ cd nullrev-diff
$ hg debugdeltachain a
rev p1 p2 chain# chainlen prev delta
0 -1 -1 1 2 -1 p1
1 0 -1 1 2 -1 p2
2 -1 -1 1 2 -1 p1
$ hg cat --config rhg.cat=true -r 0 a
hi
$ hg cat --config rhg.cat=true -r 1 a
ho
$ hg cat --config rhg.cat=true -r 2 a
ha
$ cd ..