mirror of
https://github.com/borgbackup/borg.git
synced 2024-12-25 09:19:31 +00:00
rename valid_msgpacked_item to valid_msgpacked_dict
the code is generic, it can also be used for other msgpacked dictionaries.
This commit is contained in:
parent
90d621ce35
commit
866417853d
2 changed files with 9 additions and 9 deletions
|
@ -595,8 +595,8 @@ def _open_rb(path):
|
|||
REQUIRED_ITEM_KEYS = frozenset([b'path', b'mtime', ])
|
||||
|
||||
|
||||
def valid_msgpacked_item(d, item_keys_serialized):
|
||||
"""check if the data <d> looks like a msgpacked item metadata dict"""
|
||||
def valid_msgpacked_dict(d, keys_serialized):
|
||||
"""check if the data <d> looks like a msgpacked dict"""
|
||||
d_len = len(d)
|
||||
if d_len == 0:
|
||||
return False
|
||||
|
@ -606,7 +606,7 @@ def valid_msgpacked_item(d, item_keys_serialized):
|
|||
offs = 3
|
||||
else:
|
||||
# object is not a map (dict)
|
||||
# note: we must not have item dicts with > 2^16-1 elements
|
||||
# note: we must not have dicts with > 2^16-1 elements
|
||||
return False
|
||||
if d_len <= offs:
|
||||
return False
|
||||
|
@ -620,7 +620,7 @@ def valid_msgpacked_item(d, item_keys_serialized):
|
|||
return False
|
||||
# is the bytestring any of the expected key names?
|
||||
key_serialized = d[offs:]
|
||||
return any(key_serialized.startswith(pattern) for pattern in item_keys_serialized)
|
||||
return any(key_serialized.startswith(pattern) for pattern in keys_serialized)
|
||||
|
||||
|
||||
class RobustUnpacker:
|
||||
|
@ -654,7 +654,7 @@ def __next__(self):
|
|||
if not data:
|
||||
raise StopIteration
|
||||
# Abort early if the data does not look like a serialized item dict
|
||||
if not valid_msgpacked_item(data, self.item_keys):
|
||||
if not valid_msgpacked_dict(data, self.item_keys):
|
||||
data = data[1:]
|
||||
continue
|
||||
self._unpacker = msgpack.Unpacker(object_hook=StableDict)
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
import msgpack
|
||||
import pytest
|
||||
|
||||
from ..archive import Archive, CacheChunkBuffer, RobustUnpacker, valid_msgpacked_item, ITEM_KEYS
|
||||
from ..archive import Archive, CacheChunkBuffer, RobustUnpacker, valid_msgpacked_dict, ITEM_KEYS
|
||||
from ..key import PlaintextKey
|
||||
from ..helpers import Manifest
|
||||
from . import BaseTestCase
|
||||
|
@ -127,7 +127,7 @@ def item_keys_serialized():
|
|||
[42, 23.42, True, b'foobar', {b'foo': b'bar'}, [b'foo', b'bar'], (b'foo', b'bar')]
|
||||
)])
|
||||
def test_invalid_msgpacked_item(packed, item_keys_serialized):
|
||||
assert not valid_msgpacked_item(packed, item_keys_serialized)
|
||||
assert not valid_msgpacked_dict(packed, item_keys_serialized)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('packed',
|
||||
|
@ -137,11 +137,11 @@ def test_invalid_msgpacked_item(packed, item_keys_serialized):
|
|||
dict((k, b'x' * 1000) for k in ITEM_KEYS), # as big (key count and volume) as it gets
|
||||
]])
|
||||
def test_valid_msgpacked_items(packed, item_keys_serialized):
|
||||
assert valid_msgpacked_item(packed, item_keys_serialized)
|
||||
assert valid_msgpacked_dict(packed, item_keys_serialized)
|
||||
|
||||
|
||||
def test_key_length_msgpacked_items():
|
||||
key = b'x' * 32 # 31 bytes is the limit for fixstr msgpack type
|
||||
data = {key: b''}
|
||||
item_keys_serialized = [msgpack.packb(key), ]
|
||||
assert valid_msgpacked_item(msgpack.packb(data), item_keys_serialized)
|
||||
assert valid_msgpacked_dict(msgpack.packb(data), item_keys_serialized)
|
||||
|
|
Loading…
Reference in a new issue