Skip to content

Commit c026356

Browse files
expand tests for compression fmts
1 parent 0dabb56 commit c026356

2 files changed

Lines changed: 19 additions & 15 deletions

File tree

emmet-archival/emmet/archival/core.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,6 @@ def _extract_from_hdf5_like(
328328
list of Path
329329
The names of the extracted files.
330330
"""
331-
332331
output_dir = Path(output_dir or DEFAULT_RAW_ARCHIVE_NAME)
333332

334333
extracted_files = []
@@ -349,7 +348,7 @@ def from_directory(
349348
cls,
350349
dir_name: PathLike,
351350
depth: int | None = 1,
352-
compression: CompressionType | None = CompressionType.ZSTD,
351+
compression: CompressionType | str | None = CompressionType.ZSTD,
353352
) -> Self:
354353
"""Ingest raw bytes data to prepare for hierarchical archiving.
355354
@@ -386,5 +385,7 @@ def from_directory(
386385
"""
387386
return cls(
388387
files=_scan_dir(Path(dir_name), depth),
389-
compression=compression.name if compression else None,
388+
compression=(
389+
getattr(compression, "name", compression) if compression else None
390+
),
390391
)

emmet-archival/tests/test_core.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
"""Test core archival features."""
22

33
from pathlib import Path
4-
4+
import pytest
55

66
from emmet.archival.core import FileArchive, _get_path_relative_to_parent
7+
from emmet.archival.utils import CompressionType
78

89

9-
def test_file_archiver(tmp_dir):
10+
@pytest.mark.parametrize("compressor", ["ZSTD", "GZIP"])
11+
def test_file_archiver(tmp_dir, compressor):
1012

1113
lorem = [
1214
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua",
@@ -48,21 +50,22 @@ def test_file_archiver(tmp_dir):
4850
)
4951

5052
# Now archive this
51-
archiver = FileArchive.from_directory("root", depth=None)
53+
archiver = FileArchive.from_directory("root", depth=None, compression=compressor)
5254
archiver.to_archive("lorem.h5")
5355

5456
# extract and compare extracted file structure + data to original
55-
output_path = Path("lorem").absolute()
56-
archiver.extract("lorem.h5", output_dir=output_path)
57-
extracted = {
58-
str(_get_path_relative_to_parent(p, output_path)): p.read_text()
59-
for p in output_path.glob("**/*.txt")
60-
}
61-
6257
orig = {
6358
str(_get_path_relative_to_parent(p, Path("root").absolute())): p.read_text()
6459
for p in fs
6560
}
6661

67-
assert set(extracted) == set(orig)
68-
assert all(v == extracted[k] for k, v in orig.items())
62+
output_path = Path("lorem").absolute()
63+
for compression in (CompressionType.AUTO_DETECT, compressor):
64+
archiver.extract("lorem.h5", output_dir=output_path, compression=compression)
65+
extracted = {
66+
str(_get_path_relative_to_parent(p, output_path)): p.read_text()
67+
for p in output_path.glob("**/*.txt")
68+
}
69+
70+
assert set(extracted) == set(orig)
71+
assert all(v == extracted[k] for k, v in orig.items())

0 commit comments

Comments
 (0)