Skip to content

v1.1.0 — type-only filter, native S3/GCS, GitHub Step Summary

Choose a tag to compare

@breadMSA breadMSA released this 20 Jun 05:43
· 3 commits to main since this release

Theme: make tia painless to adopt in a real CI pipeline — without trading away the no-false-negative guarantee.

✨ New features

  • Type-only change filter. Edits that are provably dead at runtime no longer trigger tests: if TYPE_CHECKING: blocks and function-local annotations are ignored. Crucially, function-signature and class/dataclass-field annotation changes are kept as semantic — because dataclasses / pydantic / attrs read __annotations__, and silently skipping those would be a false negative. So "added the type hints" stops running the suite, without ever hiding a real dataclass field-type change.
  • Native S3 / GCS map stores. A remote can now be s3://bucket/prefix or gs://bucket/prefix, alongside a plain directory or the bundled HTTP store. The cloud SDKs are imported lazily (pip install pytest-tia[s3] / pytest-tia[gcs]), so the core install stays dependency-light.
  • GitHub Step Summary. tia run auto-detects $GITHUB_STEP_SUMMARY (or --report PATH / --report -) and posts a Markdown impact table to the PR — which files changed, the impact of each, and exactly which tests were selected and why.

📊 Honesty & benchmarks

  • New modular-repo benchmark on boltons: ~96% median skip on real logic changes, versus Flask's ~21% worst case. The README now leads with the honest range, ~21% ↔ ~96%, both measured by replaying real commits on real third-party suites — with the "this looked too good, here's why it's real" audit included.
  • New adversarial mutation test: it mutates every covered function and asserts tia re-selects every test that exercises it. Verified to fail when a false negative is deliberately injected, so it can't pass vacuously.

🐛 Fixes

  • Markdown report no longer crashes on a legacy-codepage console (a real cp950 UnicodeEncodeError when emitting emoji) — it now writes UTF-8 through stdout.buffer.

pip install pytest-tia