Problem
The coverage omit list in pyproject.toml excludes 4 integration-heavy files because they need a live Postgres:
- `src/sqlproof/core.py` (345 LOC)
- `src/sqlproof/client.py` (159 LOC)
- `src/sqlproof/runners/db.py` (48 LOC)
- `src/sqlproof/schema/introspect.py` (229 LOC)
Total: 781 LOC outside the coverage gate. Bugs in this surface can land without anyone noticing.
Proposed change
After #1 lands (Postgres service container in CI), drop these four from the omit list and write tests against the real DB:
- `introspect.py`: round-trip a representative schema through introspection and compare against the SQL parser's output.
- `core.py`: exercise `from_connection_string`, `client_for_dataset`, `run_state_machine` end-to-end.
- `client.py`: cover `query`/`execute`/`scalar`/`savepoint` against a real Postgres.
- `runners/db.py`: testcontainers-mode bootstrap.
Acceptance
- Each file reaches ≥85% line coverage.
- The TOTAL coverage number drops temporarily, then recovers as new tests are added.
--cov-fail-under ratchets up alongside.
Depends on: #1
Problem
The coverage
omitlist inpyproject.tomlexcludes 4 integration-heavy files because they need a live Postgres:Total: 781 LOC outside the coverage gate. Bugs in this surface can land without anyone noticing.
Proposed change
After #1 lands (Postgres service container in CI), drop these four from the omit list and write tests against the real DB:
Acceptance
--cov-fail-underratchets up alongside.Depends on: #1