Files
VianoBugAnalysis/tests/test_package_reader.py
T

37 lines
1.3 KiB
Python

import pytest
from viano_bug_analysis.package import PackageReader, PackageReadError
def test_read_only_and_filename_independent(make_package):
path = make_package(entries={"unknown/data.bin": b"\x00\xff"})
before = path.read_bytes()
renamed = path.with_name("different.name")
path.rename(renamed)
with PackageReader(renamed) as reader:
assert reader.manifest["package_id"] == "stable-package"
assert reader.read_bytes("unknown/data.bin") == b"\x00\xff"
modified = reader.manifest
modified["case_id"] = "changed"
assert reader.manifest["case_id"] == "case-A"
with pytest.raises(PackageReadError):
reader.read_bytes("../outside")
assert renamed.read_bytes() == before
with pytest.raises(RuntimeError):
reader.read_bytes("manifest.json")
def test_reader_rejection_and_cleanup(make_package):
reader = PackageReader(make_package(raw=b"{}"))
with pytest.raises(PackageReadError) as error:
with reader:
pytest.fail("Invalid package opened")
assert not error.value.result.valid
assert reader._source is None
def test_reader_missing_file(tmp_path):
with pytest.raises(PackageReadError):
with PackageReader(tmp_path / "absent"):
pass