mattzh72--articraft
40 行
1.5 KiB
Python
40 行
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from storage.layout import StorageLayout
|
|
|
|
|
|
def test_storage_layout_paths() -> None:
|
|
layout = StorageLayout(Path("/tmp/articraft"))
|
|
|
|
assert layout.data_root == Path("/tmp/articraft/data")
|
|
assert layout.records_root == Path("/tmp/articraft/data/records")
|
|
assert layout.records_manifest_path == Path("/tmp/articraft/data/records_manifest.jsonl")
|
|
assert layout.record_dir("rec_123") == Path("/tmp/articraft/data/records/rec_123")
|
|
assert layout.record_revision_model_path("rec_123", "rev_000001") == Path(
|
|
"/tmp/articraft/data/records/rec_123/revisions/rev_000001/model.py"
|
|
)
|
|
assert layout.record_materialization_dir("rec_123") == Path(
|
|
"/tmp/articraft/data/cache/record_materialization/rec_123"
|
|
)
|
|
|
|
|
|
def test_storage_layout_uses_external_data_root() -> None:
|
|
layout = StorageLayout(Path("/tmp/articraft"), external_data_root=Path("/tmp/articraft-data"))
|
|
|
|
assert layout.data_root == Path("/tmp/articraft-data")
|
|
assert layout.records_root == Path("/tmp/articraft-data/records")
|
|
assert layout.records_manifest_path == Path("/tmp/articraft-data/records_manifest.jsonl")
|
|
|
|
|
|
def test_ensure_base_dirs_creates_local_library_tree(tmp_path: Path) -> None:
|
|
layout = StorageLayout(tmp_path)
|
|
|
|
layout.ensure_base_dirs()
|
|
|
|
assert layout.records_root.is_dir()
|
|
assert layout.categories_root.is_dir()
|
|
assert layout.cache_root.is_dir()
|
|
assert not layout.records_manifest_path.exists()
|