#!/usr/bin/env python3 """Создаёт и проверяет HDD-fixture группового F8.""" from __future__ import annotations import pathlib import sys def create(root: pathlib.Path) -> None: panel = root / "GDEL" panel.mkdir(parents=True) (panel / "A.TXT").write_bytes(b"delete A\r\n") (panel / "B.BIN").write_bytes(b"delete B payload\r\n") (panel / "KEEP.TXT").write_bytes(b"keep payload\r\n") directory = panel / "ADIR" directory.mkdir() (directory / "INSIDE.TXT").write_bytes(b"directory payload\r\n") (panel / "EMPTYDIR").mkdir() def verify(root: pathlib.Path) -> None: panel = root / "GDEL" failures: list[str] = [] for name in ("A.TXT", "B.BIN"): if (panel / name).exists(): failures.append(f"выбранный файл не удалён: {name}") expected = { "KEEP.TXT": b"keep payload\r\n", "ADIR/INSIDE.TXT": b"directory payload\r\n", } for name, content in expected.items(): path = panel / name if not path.is_file() or path.read_bytes() != content: failures.append(f"сохранённый объект изменён: {name}") if not (panel / "EMPTYDIR").is_dir(): failures.append("выбранный пустой каталог ошибочно удалён") if failures: for failure in failures: print(f"FAIL: {failure}") raise SystemExit(1) print("PASS: selected files deleted; selected directories and KEEP preserved.") def main() -> None: if len(sys.argv) != 3 or sys.argv[1] not in {"create", "verify"}: raise SystemExit(f"usage: {sys.argv[0]} create|verify DIR") root = pathlib.Path(sys.argv[2]) if sys.argv[1] == "create": create(root) else: verify(root) if __name__ == "__main__": main()