##// END OF EJS Templates
tests: enforce the use of `from __future__ import annotations`...
tests: enforce the use of `from __future__ import annotations` A recent MR and a separate recently landed MR that extracted code to a new file overlooked this, so I think it's worth flagging to ensure consistency. We don't enforce the import for empty files (like `__init__.py`). I'd rather this go into `import-checker.py`, but the import of interest only happens at the top of the file, and its `verify_modern_convention()` calls itself recursively as it transits the AST where the annotations might be. After a few hours of hacking on trying to get it to enforce the import, but only if annotations are used in the module (we generally don't have or check annotations in test files, so don't need this import), I gave up and resorted to this. It won't handle multi-line imports, but this isn't something I'd expect to change often, so this is good enough for now.

File last commit:

r52756:f4733654 default
r53246:662b08ac default
Show More
revlog.py
64 lines | 2.4 KiB | text/x-python | PythonLexer
Matt Harbison
typing: add `from __future__ import annotations` to most files...
r52756 from __future__ import annotations
test: extract some generic data and utility from test-rust-ancestor.py...
r44397 import unittest
# picked from test-parse-index2, copied rather than imported
# so that it stays stable even if test-parse-index2 changes or disappears.
data_non_inlined = (
b'\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01D\x19'
b'\x00\x07e\x12\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff'
b'\xff\xff\xff\xff\xd1\xf4\xbb\xb0\xbe\xfc\x13\xbd\x8c\xd3\x9d'
b'\x0f\xcd\xd9;\x8c\x07\x8cJ/\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\x00\x00\x00\x00\x00\x01D\x19\x00\x00\x00\x00\x00\xdf\x00'
b'\x00\x01q\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\xff'
b'\xff\xff\xff\xc1\x12\xb9\x04\x96\xa4Z1t\x91\xdfsJ\x90\xf0\x9bh'
b'\x07l&\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\x01D\xf8\x00\x00\x00\x00\x01\x1b\x00\x00\x01\xb8\x00\x00'
b'\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\xff\xff\xff\xff\x02\n'
b'\x0e\xc6&\xa1\x92\xae6\x0b\x02i\xfe-\xe5\xbao\x05\xd1\xe7\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01F'
b'\x13\x00\x00\x00\x00\x01\xec\x00\x00\x03\x06\x00\x00\x00\x01'
b'\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x12\xcb\xeby1'
b'\xb6\r\x98B\xcb\x07\xbd`\x8f\x92\xd9\xc4\x84\xbdK\x00\x00\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00'
)
Georges Racinet
rust-index: using the `hg::index::Index` in ancestors iterator and lazy set...
r52132 from ..revlogutils.constants import REVLOGV1
test: extract some generic data and utility from test-rust-ancestor.py...
r44397
try:
Matt Harbison
typing: disable import error warnings that are already handled...
r47543 from ..cext import parsers as cparsers # pytype: disable=import-error
test: extract some generic data and utility from test-rust-ancestor.py...
r44397 except ImportError:
cparsers = None
Georges Racinet
rust-index: using the `hg::index::Index` in ancestors iterator and lazy set...
r52132 try:
Georges Racinet on incendie.racinet.fr
rust-index: renamed `MixedIndex` as `Index`...
r52147 from ..rustext.revlog import ( # pytype: disable=import-error
Index as RustIndex,
)
Georges Racinet
rust-index: using the `hg::index::Index` in ancestors iterator and lazy set...
r52132 except ImportError:
Georges Racinet on incendie.racinet.fr
rust-index: renamed `MixedIndex` as `Index`...
r52147 RustIndex = None
Georges Racinet
rust-index: using the `hg::index::Index` in ancestors iterator and lazy set...
r52132
test: extract some generic data and utility from test-rust-ancestor.py...
r44397
@unittest.skipIf(
cparsers is None,
'The C version of the "parsers" module is not available. It is needed for this test.',
)
class RevlogBasedTestBase(unittest.TestCase):
Georges Racinet
rust-index: using the `hg::index::Index` in ancestors iterator and lazy set...
r52132 def parseindex(self, data=None):
if data is None:
data = data_non_inlined
return cparsers.parse_index2(data, False)[0]
Georges Racinet on incendie.racinet.fr
rust-python-testing: separated base test classes...
r52137
@unittest.skipIf(
Georges Racinet on incendie.racinet.fr
rust-index: renamed `MixedIndex` as `Index`...
r52147 RustIndex is None,
Georges Racinet on incendie.racinet.fr
rust-python-testing: separated base test classes...
r52137 'The Rust index is not available. It is needed for this test.',
)
class RustRevlogBasedTestBase(unittest.TestCase):
Georges Racinet
rust-index: using the `hg::index::Index` in ancestors iterator and lazy set...
r52132 def parserustindex(self, data=None):
if data is None:
data = data_non_inlined
Georges Racinet on incendie.racinet.fr
rust-python-testing: separated base test classes...
r52137 # not inheriting RevlogBasedTestCase to avoid having a
# `parseindex` method that would be shadowed by future subclasses
# this duplication will soon be removed
Georges Racinet on incendie.racinet.fr
rust-index: renamed `MixedIndex` as `Index`...
r52147 return RustIndex(data, REVLOGV1)