mercurial/testing/revlog.py
changeset 52405 cf5b47b885b1
parent 51859 f4733654f144
child 52783 07740bd86fd9
equal deleted inserted replaced
52404:544b9d3075f4 52405:cf5b47b885b1
    21     b'\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x12\xcb\xeby1'
    21     b'\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x12\xcb\xeby1'
    22     b'\xb6\r\x98B\xcb\x07\xbd`\x8f\x92\xd9\xc4\x84\xbdK\x00\x00\x00'
    22     b'\xb6\r\x98B\xcb\x07\xbd`\x8f\x92\xd9\xc4\x84\xbdK\x00\x00\x00'
    23     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00'
    23     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00'
    24 )
    24 )
    25 
    25 
    26 from ..revlogutils.constants import REVLOGV1
    26 from ..revlogutils.constants import (
       
    27     KIND_CHANGELOG,
       
    28 )
       
    29 from .. import revlog
    27 
    30 
    28 
    31 
    29 try:
    32 try:
    30     from ..cext import parsers as cparsers  # pytype: disable=import-error
    33     from ..cext import parsers as cparsers  # pytype: disable=import-error
    31 except ImportError:
    34 except ImportError:
    32     cparsers = None
    35     cparsers = None
    33 
    36 
    34 try:
    37 try:
    35     from ..rustext.revlog import (  # pytype: disable=import-error
    38     from ..rustext import (  # pytype: disable=import-error
    36         Index as RustIndex,
    39         revlog as rust_revlog,
    37     )
    40     )
       
    41 
       
    42     rust_revlog.__name__  # force actual import
    38 except ImportError:
    43 except ImportError:
    39     RustIndex = None
    44     rust_revlog = None
    40 
    45 
    41 
    46 
    42 @unittest.skipIf(
    47 @unittest.skipIf(
    43     cparsers is None,
    48     cparsers is None,
    44     'The C version of the "parsers" module is not available. It is needed for this test.',
    49     'The C version of the "parsers" module is not available. It is needed for this test.',
    49             data = data_non_inlined
    54             data = data_non_inlined
    50         return cparsers.parse_index2(data, False)[0]
    55         return cparsers.parse_index2(data, False)[0]
    51 
    56 
    52 
    57 
    53 @unittest.skipIf(
    58 @unittest.skipIf(
    54     RustIndex is None,
    59     rust_revlog is None,
    55     'The Rust index is not available. It is needed for this test.',
    60     'The Rust revlog module is not available. It is needed for this test.',
    56 )
    61 )
    57 class RustRevlogBasedTestBase(unittest.TestCase):
    62 class RustRevlogBasedTestBase(unittest.TestCase):
    58     def parserustindex(self, data=None):
    63     # defaults
       
    64     revlog_data_config = revlog.DataConfig()
       
    65     revlog_delta_config = revlog.DeltaConfig()
       
    66     revlog_feature_config = revlog.FeatureConfig()
       
    67 
       
    68     def make_inner_revlog(
       
    69         self, data=None, vfs_is_readonly=True, kind=KIND_CHANGELOG
       
    70     ):
    59         if data is None:
    71         if data is None:
    60             data = data_non_inlined
    72             data = data_non_inlined
    61         # not inheriting RevlogBasedTestCase to avoid having a
    73 
    62         # `parseindex` method that would be shadowed by future subclasses
    74         return rust_revlog.InnerRevlog(
    63         # this duplication will soon be removed
    75             vfs_base=b"Just a path",
    64         return RustIndex(data, REVLOGV1)
    76             fncache=None,  # might be enough for now
       
    77             vfs_is_readonly=vfs_is_readonly,
       
    78             index_data=data,
       
    79             index_file=b'test.i',
       
    80             data_file=b'test.d',
       
    81             sidedata_file=None,
       
    82             inline=False,
       
    83             data_config=self.revlog_data_config,
       
    84             delta_config=self.revlog_delta_config,
       
    85             feature_config=self.revlog_feature_config,
       
    86             chunk_cache=None,
       
    87             default_compression_header=None,
       
    88             revlog_type=kind,
       
    89             use_persistent_nodemap=False,  # until we cook one.
       
    90         )
       
    91 
       
    92     def parserustindex(self, data=None):
       
    93         return revlog.RustIndexProxy(self.make_inner_revlog(data=data))