Skip to content

Ship deterministic test-level impact adapters #29

Description

@aspix2k

Purpose

Extend Affected from affected-module tests to the smallest runner-native test unit that can be proven affected without hiding regressions. Every adapter has a binary outcome: deterministic exact selection, or the existing full affected-module command.

Shipped

  • Gradle/JUnit Platform exact test-class selection shipped in 1.8.0. It records a complete local test-class dependency map, skips proven-unchanged tasks, selects affected Jupiter/Vintage classes and falls back to the full Gradle Test task on any uncertainty.
  • Maven 3.9.x with Surefire/Failsafe 3.x reached multi-class, multi-fork exact selection in 1.13.0, with independent unit and integration-test maps and one Maven invocation.
  • 1.14.0 hardened the existing Cargo, Go, Node, .NET, Python, Composer, Bundler and CMake module-level adapters: one fail-fast IDE Run session per build root, bounded cached discovery, full fallback on uncertainty and a native eight-system conformance polygon.

Non-negotiable rules

  • No confidence score, probabilistic model or heuristic dependency graph may suppress tests.
  • Selection uses the runner's stable native unit: class, file, node, case or named test as proven by that adapter.
  • Missing, stale, partial, corrupt or incompatible evidence runs the full original module command.
  • Configuration, dependency, resource, generated-code and test-set ambiguity runs fully unless the adapter proves otherwise.
  • Selected, skipped, failed and cancelled runs cannot replace a complete baseline.
  • CI and release remain full.
  • Source paths, test identifiers, dependency maps, hashes and metrics stay local.

2.0 rollout

  1. Add exact Node test-file selection #51 — Node test files for explicitly detected Jest and Vitest runners.
  2. Add exact pytest test-file selection #52 — stable pytest nodes or files.
  3. Add exact .NET test-case selection #53 — .NET test cases or classes through native filters.
  4. Add exact CTest test selection #58 — named CTest tests from CMake/CTest metadata.
  5. Prove exact Go test selection #54 and Prove exact Cargo test selection #55 — prove or reject selection below the Go package and Cargo package.
  6. Add exact PHPUnit test-class selection #56 and Add exact RSpec file selection #57 — PHPUnit test classes and RSpec files or stable groups.

Maven 4 remains tracked separately in #60; 2.0 prioritizes breadth beyond the JVM.

2.0 acceptance criteria

  • Each child issue defines its supported runner/version boundary and smallest stable selection unit.
  • A repository-owned public fixture catches every controlled mutation and proves every unsupported case runs fully.
  • At least one supported mutation runs fewer tests faster end to end.
  • README, plugin description, compatibility matrix and release notes describe only adapters that passed their proof gates.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions