Skip to content

Commit c119d96

Browse files
committed
test reading and writing entry digests separately
1 parent 10a11e3 commit c119d96

File tree

1 file changed

+27
-15
lines changed

1 file changed

+27
-15
lines changed

tests/test_entry.py

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@
99

1010
import pytest
1111

12-
from libarchive import (
13-
ArchiveError, ffi, file_reader, file_writer, memory_reader, memory_writer,
14-
)
12+
from libarchive import ArchiveError, ffi, file_writer, memory_reader, memory_writer
1513
from libarchive.entry import ArchiveEntry, ConsumedArchiveEntry, PassedArchiveEntry
1614

1715
from . import data_dir, get_entries, get_tarinfos
@@ -159,23 +157,37 @@ def test_non_ASCII_encoding_of_file_metadata():
159157
assert entry.pathname == file_name
160158

161159

160+
fake_hashes = dict(
161+
md5=b'!' * 16,
162+
rmd160=b'!' * 20,
163+
sha1=b'!' * 20,
164+
sha256=b'!' * 32,
165+
sha384=b'!' * 48,
166+
sha512=b'!' * 64,
167+
)
168+
mtree = (
169+
'#mtree\n'
170+
'./empty.txt nlink=0 time=0.0 mode=664 gid=0 uid=0 type=file size=0 '
171+
f'md5={'21'*16} rmd160={'21'*20} sha1={'21'*20} sha256={'21'*32} '
172+
f'sha384={'21'*48} sha512={'21'*64}\n'
173+
)
174+
175+
176+
def test_reading_entry_digests(tmpdir):
177+
with memory_reader(mtree.encode('ascii')) as archive:
178+
entry = next(iter(archive))
179+
assert entry.stored_digests == fake_hashes
180+
181+
162182
@pytest.mark.xfail(
163183
condition=ffi.version_number() < 3008000,
164184
reason="libarchive < 3.8",
165185
)
166-
def test_writing_and_reading_entry_digests(tmpdir):
167-
fake_hashes = dict(
168-
md5=b'0000000000000000',
169-
rmd160=b'00000000000000000000',
170-
sha1=b'00000000000000000000',
171-
sha256=b'00000000000000000000000000000000',
172-
sha384=b'000000000000000000000000000000000000000000000000',
173-
sha512=b'0000000000000000000000000000000000000000000000000000000000000000',
174-
)
186+
def test_writing_entry_digests(tmpdir):
175187
archive_path = str(tmpdir / 'mtree')
176188
with file_writer(archive_path, 'mtree') as archive:
177189
# Add an empty file, with fake hashes.
178190
archive.add_file_from_memory('empty.txt', 0, b'', stored_digests=fake_hashes)
179-
with file_reader(archive_path) as archive:
180-
entry = next(iter(archive))
181-
assert entry.stored_digests == fake_hashes
191+
with open(archive_path) as f:
192+
libarchive_mtree = f.read()
193+
assert libarchive_mtree == mtree

0 commit comments

Comments
 (0)