|
9 | 9 |
|
10 | 10 | import pytest |
11 | 11 |
|
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 |
15 | 13 | from libarchive.entry import ArchiveEntry, ConsumedArchiveEntry, PassedArchiveEntry |
16 | 14 |
|
17 | 15 | from . import data_dir, get_entries, get_tarinfos |
@@ -159,23 +157,37 @@ def test_non_ASCII_encoding_of_file_metadata(): |
159 | 157 | assert entry.pathname == file_name |
160 | 158 |
|
161 | 159 |
|
| 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 | + |
162 | 182 | @pytest.mark.xfail( |
163 | 183 | condition=ffi.version_number() < 3008000, |
164 | 184 | reason="libarchive < 3.8", |
165 | 185 | ) |
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): |
175 | 187 | archive_path = str(tmpdir / 'mtree') |
176 | 188 | with file_writer(archive_path, 'mtree') as archive: |
177 | 189 | # Add an empty file, with fake hashes. |
178 | 190 | 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