Skip to content

Releases: mgaitan/skippy-cov

Release list

0.3.0

Choose a tag to compare

@mgaitan mgaitan released this 20 Oct 19:08
0eb7911

Highlights

skippy-cov 0.3.0 introduces conservative coverage-based test selection, modernizes the package, and establishes mgaitan/skippy-cov as its canonical repository.

Safer test selection

  • Select complete pytest modules instead of reconstructing individual node IDs, preserving unittest discovery, inherited tests and parameterizations.
  • Include recorded inherited-test consumers and reject shared fixture/setup/teardown changes, including mixed execution phases and separate edit blocks within the same Git hunk.
  • Fall back to the original pytest selection when impact is unknown: non-Python files (including Markdown and JSON), imports/declarations, new/deleted/renamed files, decorated test functions, invalid baselines or unresolved Git refs.
  • Preserve explicit file/directory scopes and exact node IDs, including with a custom pytest --rootdir.

Coverage and CLI fixes

  • Validate missing, empty, corrupt or context-free coverage databases rather than silently returning no tests.
  • Reuse absolute-path CI artifacts through --source-root and --skippy-cov-source-root. Merge equivalent records and reject unmappable roots rather than guessing from filenames.
  • Produce deterministic JSON, line-oriented and shell-quoted output; merge duplicate candidates without losing consumers.
  • Compare a single --diff ref using <ref>...HEAD, preserve explicit ranges and support patch files for working-tree changes.
  • Discover default Git refs offline, including fetched origin/main and origin/master in detached/shallow checkouts. Shallow histories still need a common ancestor.
  • Fix python -m skippy_cov and report CLI failures without tracebacks.

Compatibility and migration

  • Python 3.12–3.15 only. Older Python versions are no longer supported.
  • Collect baselines with --cov-context=test. Prefer [tool.coverage.run] relative_files = true for portable artifacts and use core = "ctrace"; coverage's sysmon core does not support the required dynamic contexts.
  • Use a baseline from a successful complete test run, keep its commit SHA and compare against that revision. Validation does not establish completeness or revision provenance.
  • Run skippy-cov from the repository root. Automatic subdirectory support is tracked in #6.
  • Empty or out-of-scope pytest selections exit with status 5, not success. Unknown CLI impact exits with status 2; automation must run its original test command in that case.
  • --skippy-cov-strip-prefix is deprecated; the plugin preserves the caller's original scope.
  • Historical coverage remains a heuristic. Run the complete suite before merging.

Packaging and development

  • Adopt uv/uv_build, Ruff, ty and prek; remove mypy, doc901 and Codecov configuration.
  • Update GitHub Actions, test all four supported Python versions, build and smoke-test the wheel, and publish through PyPI Trusted Publishing from release.yml.
  • All 113 tests pass on Python 3.12, 3.13, 3.14 and 3.15 for the 0.3.0 release commit. The wheel and sdist pass metadata checks, and the installed wheel's CLI and pytest plugin load outside the source tree.

Included pull requests