← Files Matt Skills CuratedARCHIVED FILE

scripts/test_wizard_template.py

2.24 KB · Oct 3, 2026 · 06:31 UTC

↓ Download file

#!/usr/bin/env python3
from pathlib import Path
import subprocess
import tempfile

ROOT = Path(__file__).resolve().parents[1]
template = ROOT / "skills" / "wizard" / "template.sh"
lines = template.read_text().splitlines()
marker = next(i for i, line in enumerate(lines) if "STAGES — author this section" in line)
library = "\n".join(lines[: marker - 1]) + "\n"

# Normal writes, input validation, and browser fallback.
with tempfile.TemporaryDirectory() as td:
    env_file = Path(td) / ".env"
    harness = Path(td) / "harness.sh"
    harness.write_text(
        library
        + """
ENV_FILE="$1"
write_env GOOD "alpha=beta"
if write_env BAD $'one\\nINJECTED=1'; then exit 41; fi
if write_env BADCR $'one\\rtwo'; then exit 42; fi
if write_env 'BAD-NAME' "value"; then exit 43; fi
PATH=/definitely-not-a-real-bin open_url "https://example.invalid"
"""
    )
    result = subprocess.run(["bash", str(harness), str(env_file)], text=True, capture_output=True)
    if result.returncode != 0:
        raise SystemExit(result.stdout + result.stderr)
    actual = env_file.read_text()
    assert actual == "GOOD=alpha=beta\n", actual
    combined = result.stdout + result.stderr
    assert "refusing multiline value for BAD" in combined
    assert "refusing multiline value for BADCR" in combined
    assert "invalid environment key: BAD-NAME" in combined
    assert "couldn't open a browser" in combined

# A real read error must never replace the original environment file.
with tempfile.TemporaryDirectory() as td:
    td_path = Path(td)
    env_file = td_path / ".env"
    env_file.write_text("KEEP=original\n")
    fakebin = td_path / "bin"
    fakebin.mkdir()
    fake_grep = fakebin / "grep"
    fake_grep.write_text("#!/usr/bin/env bash\nexit 2\n")
    fake_grep.chmod(0o755)
    harness = td_path / "grep-failure.sh"
    harness.write_text(
        library
        + f"""
ENV_FILE="$1"
PATH="{fakebin}:$PATH"
if write_env NEW "value"; then exit 44; fi
"""
    )
    result = subprocess.run(["bash", str(harness), str(env_file)], text=True, capture_output=True)
    assert result.returncode == 0, result.stdout + result.stderr
    assert env_file.read_text() == "KEEP=original\n"
    assert "leaving it unchanged" in (result.stdout + result.stderr)

print("wizard template safety: PASS")

SHA-256: df6cb9f0e716eed521766c6b1b3d226ff1ab4bb740b5d0189be0febe7c8ebab6