Files
2026-09-06 10:18:26 -07:00

49 lines
1.7 KiB
TOML

# QA test-suite configuration for the California Legislature Daily File scraper.
#
# The standard command `python3 -m pytest` both runs the full suite AND enforces
# the acceptance-criteria coverage gate (>= 85 % on the parser core) via the
# `--cov` addopt below. A green `python3 -m pytest` is therefore a green *gate*:
# a coverage regression below 85 % fails the run.
#
# Optional live smoke test (guarded by an env flag so CI does not depend on the
# external servers being up):
# CALI_SCRAPER_SMOKE=1 python3 -m pytest -m smoke
#
# The parser core (`scraper.parsers` + its `scraper.bill_id` codec) is the
# subject of the coverage gate, per the task. Import guards for soft deps
# (http_client/config) are `pragma: no cover`-excluded so the floor measures
# the real business logic, not try/except shims.
[tool.pytest.ini_options]
minversion = "7.0"
testpaths = ["tests"]
# --cov enables measurement + report + fail_under on every run.
# --cov-report=term produces the visible report the acceptance criteria ask for.
# --cov-fail-under=85 is the hard gate.
addopts = "-ra --strict-markers --cov --cov-report=term-missing"
markers = [
"smoke: optional live-URL smoke test, skipped unless CALI_SCRAPER_SMOKE is set",
]
[tool.coverage.run]
# The parser module and its bill-id codec are the coverage subject.
source = ["scraper.parsers", "scraper.bill_id"]
omit = [
"*/tests/*",
"*/__pycache__/*",
]
branch = true
[tool.coverage.report]
# Enforce the acceptance-criteria threshold. A sub-85% run fails pytest.
fail_under = 85
show_missing = true
exclude_lines = [
"pragma: no cover",
"pragma: no cover - import guard",
"if __name__ == .__main__.:",
"raise NotImplementedError",
"\\.\\.\\.",
]
precision = 1