#!/usr/bin/env python3 """Runs the mount -> umount -> cleanup cycle against the fixture image and checks that every step succeeds, so `meson test` doesn't leak a layer on every run. """ import re import subprocess import sys def run(slocker_lite: str, *args: str) -> subprocess.CompletedProcess: return subprocess.run([slocker_lite, *args], capture_output=True, text=True) def main() -> int: slocker_lite, fixture_tar = sys.argv[1], sys.argv[2] mount = run(slocker_lite, "--mount", fixture_tar) if mount.returncode != 0: print(mount.stderr, file=sys.stderr) return mount.returncode match = re.search(r"\(layer (\S+)\)", mount.stdout) if not match: print(f"could not find layer ID in mount output: {mount.stdout!r}", file=sys.stderr) return 1 layer_id = match.group(1) for args in (("--umount", layer_id), ("--cleanup", layer_id)): result = run(slocker_lite, *args) if result.returncode != 0: print(result.stderr, file=sys.stderr) return result.returncode return 0 if __name__ == "__main__": sys.exit(main())