Files
erofs-freebsd-out-tree/tests/pre15/fixtures/SMOKE-generate.py
T
2026-08-18 09:20:44 +02:00

44 lines
1.2 KiB
Python
Executable File

#!/usr/bin/env python3
from __future__ import annotations
import argparse
import hashlib
import json
from pathlib import Path
def digest(path: Path) -> str:
return hashlib.sha256(path.read_bytes()).hexdigest()
parser = argparse.ArgumentParser()
parser.add_argument("--output", type=Path, required=True)
arguments = parser.parse_args()
root = arguments.output
root.mkdir(parents=True)
(root / "nested").mkdir()
payload = bytearray()
for offset in range(384 * 1024):
payload.append(((offset * 131) ^ (offset >> 3) ^ 0x5A) & 0xFF)
(root / "payload.bin").write_bytes(payload)
(root / "nested" / "alpha.txt").write_text(
"Pre15 deterministic smoke fixture\n", encoding="ascii"
)
(root / "empty").write_bytes(b"")
files = []
for path in sorted(item for item in root.rglob("*") if item.is_file()):
files.append(
{
"path": path.relative_to(root).as_posix(),
"sha256": digest(path),
"size": path.stat().st_size,
}
)
manifest = {
"files": files,
"nested_entries": ["alpha.txt"],
"root_entries": ["empty", "nested", "payload.bin"],
"status": "READY",
}
print(json.dumps(manifest, indent=2, sort_keys=True))