diff --git a/Makefile b/Makefile index f39df76..4045628 100644 --- a/Makefile +++ b/Makefile @@ -15,9 +15,23 @@ help: ## Show this help | awk 'BEGIN{FS=":.*?## "}{printf " \033[36m%-14s\033[0m %s\n", $$1, $$2}' .PHONY: setup -setup: ## Create the venv and install dependencies +setup: ## Create the venv, install dependencies, and prove the result is usable $(PYTHON) -m venv .venv $(VENV)/bin/pip install -r requirements.txt -r dev-requirements.txt + # Exit 0 from pip install is not evidence (D-24) — it is the step's job not + # to fail, so a broken result and a working one look identical from here. + # On 2026-08-09 the venv existed and pip had exited 0, but sqlalchemy was + # declared in requirements.txt and not installed; that surfaced as 11 + # pytest collection errors that read as broken imports, not as a setup + # problem. `--collect-only` exercises every import the suite touches + # without running a single test, so it catches exactly that class of + # drift and stays cheap. `pip check` was considered too, but it only + # verifies the *installed* set's internal consistency against itself — + # it would not have caught this case, because sqlalchemy was still + # present as another package's transitive dependency even when dropped + # from requirements.txt. collect-only checks declared-vs-actually-usable + # directly, which is the axis that broke. + $(VENV)/bin/python -m pytest --collect-only tests/ .PHONY: test test: ## Run the test suite