42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
"""Ensure the documented test command actually invokes pytest and fails closed."""
|
|
|
|
import json
|
|
import os
|
|
from pathlib import Path
|
|
import shlex
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.mark.skipif(
|
|
os.name == "nt" or not shutil.which("make"), reason="Requires POSIX make"
|
|
)
|
|
def test_make_test_runs_pytest_and_propagates_failure(tmp_path: Path) -> None:
|
|
recorder = tmp_path / "runner.py"
|
|
arguments = tmp_path / "arguments.json"
|
|
recorder.write_text(
|
|
"import json,sys\n"
|
|
f"with open({str(arguments)!r}, 'w') as output:\n"
|
|
" json.dump(sys.argv[1:], output)\n"
|
|
"sys.exit(7)\n",
|
|
encoding="utf-8",
|
|
)
|
|
result = subprocess.run(
|
|
[
|
|
"make",
|
|
"--no-print-directory",
|
|
"-o",
|
|
"venv",
|
|
"test",
|
|
f"PYTHON_CMD={shlex.join([sys.executable, str(recorder)])}",
|
|
],
|
|
cwd=Path(__file__).resolve().parents[1],
|
|
capture_output=True,
|
|
text=True,
|
|
)
|
|
assert json.loads(arguments.read_text()) == ["-m", "pytest", "tests"]
|
|
assert result.returncode != 0
|