001921d056
Run the ignored persistence backlog receipt test from the TUI library after the integration target move. Pin the exact Cargo command in a hermetic harness test and reject successful zero-test or missing-receipt runs so future test relocations fail clearly.
121 lines
3.7 KiB
Python
Executable File
121 lines
3.7 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""Measure the paused-consumer persistence-channel backlog hermetically."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
import os
|
|
import re
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
from pathlib import Path
|
|
|
|
|
|
RECEIPT_ENV = "CODEWHALE_TEST_PERSISTENCE_BACKLOG_RECEIPT_PATH"
|
|
SOURCE_SHA_ENV = "CODEWHALE_TEST_PERSISTENCE_BACKLOG_SOURCE_SHA"
|
|
SOURCE_DIRTY_ENV = "CODEWHALE_TEST_PERSISTENCE_BACKLOG_SOURCE_DIRTY"
|
|
RUSTC_VERSION_ENV = "CODEWHALE_TEST_PERSISTENCE_BACKLOG_RUSTC_VERSION"
|
|
CARGO_VERSION_ENV = "CODEWHALE_TEST_PERSISTENCE_BACKLOG_CARGO_VERSION"
|
|
ROOT = Path(__file__).resolve().parent.parent
|
|
TEST_NAME = (
|
|
"tui::persistence_actor::backlog_measurement_tests::"
|
|
"write_paused_persistence_backlog_measurement_receipt"
|
|
)
|
|
|
|
|
|
class PersistenceBacklogMeasurementError(RuntimeError):
|
|
"""The exact measurement test did not produce a trustworthy receipt."""
|
|
|
|
|
|
def measurement_command() -> list[str]:
|
|
return [
|
|
"cargo",
|
|
"test",
|
|
"--locked",
|
|
"-p",
|
|
"codewhale-tui",
|
|
"--lib",
|
|
TEST_NAME,
|
|
"--",
|
|
"--exact",
|
|
"--ignored",
|
|
"--test-threads=1",
|
|
]
|
|
|
|
|
|
def run_measurement(receipt_path: Path, env: dict[str, str]) -> dict:
|
|
result = subprocess.run(
|
|
measurement_command(),
|
|
cwd=ROOT,
|
|
env=env,
|
|
text=True,
|
|
capture_output=True,
|
|
check=False,
|
|
)
|
|
sys.stderr.write(result.stderr)
|
|
if result.returncode != 0:
|
|
sys.stdout.write(result.stdout)
|
|
result.check_returncode()
|
|
|
|
combined = "\n".join(result.stdout.splitlines() + result.stderr.splitlines())
|
|
if re.search(r"\brunning\s+0\s+tests?\b", combined):
|
|
sys.stdout.write(result.stdout)
|
|
raise PersistenceBacklogMeasurementError(
|
|
f"exact library measurement test {TEST_NAME} ran zero tests"
|
|
)
|
|
try:
|
|
return json.loads(receipt_path.read_text(encoding="utf-8"))
|
|
except (OSError, json.JSONDecodeError) as error:
|
|
raise PersistenceBacklogMeasurementError(
|
|
f"exact library measurement test {TEST_NAME} emitted no valid receipt: {error}"
|
|
) from error
|
|
|
|
|
|
def main() -> int:
|
|
source_sha = subprocess.run(
|
|
["git", "rev-parse", "HEAD"],
|
|
cwd=ROOT,
|
|
text=True,
|
|
capture_output=True,
|
|
check=True,
|
|
).stdout.strip()
|
|
source_dirty = bool(
|
|
subprocess.run(
|
|
["git", "status", "--porcelain", "--untracked-files=normal"],
|
|
cwd=ROOT,
|
|
text=True,
|
|
capture_output=True,
|
|
check=True,
|
|
).stdout
|
|
)
|
|
rustc_version = subprocess.run(
|
|
["rustc", "--version"], text=True, capture_output=True, check=True
|
|
).stdout.strip()
|
|
cargo_version = subprocess.run(
|
|
["cargo", "--version"], text=True, capture_output=True, check=True
|
|
).stdout.strip()
|
|
with tempfile.TemporaryDirectory(prefix="codewhale-persistence-backlog-") as root:
|
|
receipt_path = Path(root) / "receipt.json"
|
|
env = os.environ.copy()
|
|
env["CARGO_NET_OFFLINE"] = "true"
|
|
env[RECEIPT_ENV] = str(receipt_path)
|
|
env[SOURCE_SHA_ENV] = source_sha
|
|
env[SOURCE_DIRTY_ENV] = str(source_dirty).lower()
|
|
env[RUSTC_VERSION_ENV] = rustc_version
|
|
env[CARGO_VERSION_ENV] = cargo_version
|
|
try:
|
|
receipt = run_measurement(receipt_path, env)
|
|
except subprocess.CalledProcessError as error:
|
|
return error.returncode
|
|
except PersistenceBacklogMeasurementError as error:
|
|
sys.stderr.write(f"invalid persistence backlog receipt: {error}\n")
|
|
return 1
|
|
|
|
print(json.dumps(receipt, indent=2, sort_keys=True))
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|