fix(build): make setup fail when the environment doesn't actually work
pip install exiting 0 is not evidence the venv is usable (D-24) - the 2026-08-09 core-api incident was exactly this shape: a venv that "installed fine" but was missing sqlalchemy, surfacing as 11 collection errors that read like broken imports rather than an environment problem. setup now ends with `pytest --collect-only`, scoped like `make test` (excludes e2e/integration/contracts) and run with --no-cov. Collection imports every test module without running the suite, so a missing or mismatched dependency fails setup itself instead of showing up later as a confusing test failure. Workspace T-47.
This commit is contained in:
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- `make setup` now ends with a `pytest --collect-only` pass so a broken environment
|
||||||
|
(missing or mismatched dependency) fails the target itself instead of exiting 0
|
||||||
|
and surfacing later as a confusing test failure (T-47)
|
||||||
|
|
||||||
## [2.4.3] - 2026-08-08
|
## [2.4.3] - 2026-08-08
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
@@ -18,6 +18,17 @@ setup: ## Create venv and install all dependencies
|
|||||||
python3 -m venv $(VENV)
|
python3 -m venv $(VENV)
|
||||||
$(PIP) install --upgrade pip
|
$(PIP) install --upgrade pip
|
||||||
$(PIP) install -e ".[dev]"
|
$(PIP) install -e ".[dev]"
|
||||||
|
# Exit 0 from pip install is not evidence the environment works (D-24) - the
|
||||||
|
# 2026-08-09 core-api incident was exactly this: a venv that "installed fine"
|
||||||
|
# but was missing a declared dependency, surfacing as 11 collection errors
|
||||||
|
# that read like broken imports rather than an environment problem. Collection
|
||||||
|
# is the right cheap check here for that same reason: it imports every test
|
||||||
|
# module (and everything they import) without running the suite, so a missing
|
||||||
|
# or mismatched dependency fails setup itself instead of showing up later as a
|
||||||
|
# mysterious test failure. Scoped like `make test` (excludes e2e/integration/
|
||||||
|
# contracts, which need external services) and --no-cov since coverage
|
||||||
|
# instrumentation is irrelevant to "does this collect".
|
||||||
|
$(PYTEST) --collect-only -q --ignore=tests/e2e --ignore=tests/integration --ignore=tests/contracts --no-cov
|
||||||
|
|
||||||
run: ## Start the development server on port 8777
|
run: ## Start the development server on port 8777
|
||||||
@mkdir -p build/logs
|
@mkdir -p build/logs
|
||||||
|
|||||||
Reference in New Issue
Block a user