Skip to content

test: keep-going matrix via FAIL_FAST + FILTER for every suite#534

Merged
DorianZheng merged 1 commit into
mainfrom
test/matrix-fail-fast-and-filter
May 16, 2026
Merged

test: keep-going matrix via FAIL_FAST + FILTER for every suite#534
DorianZheng merged 1 commit into
mainfrom
test/matrix-fail-fast-and-filter

Conversation

@DorianZheng

Copy link
Copy Markdown
Member

Summary

  • Add a run_suites helper gated by FAIL_FAST (default false, mirroring GitHub Actions strategy.fail-fast). Aggregator targets (test:all, test:unit*, test:integration*, test:changed*, test:all:{python,node,c}) now run every sub-suite even when an earlier one fails, then exit non-zero with a ❌ Failed suites: summary. FAIL_FAST=true restores abort-at-first-failure.
  • Wire FILTER=<pattern> into every leaf test target — previously only test:integration:rust and test:integration:cli. Each runner gets FILTER mapped to its native name selector: nextest -E 'test(~…)', cargo , pytest -k, vitest -t, ctest -R, go -run.
  • Fix test:integration:cli, which used -E 'test($(FILTER))' (raw nextest filterset — FILTER=copy would error); now uses the same substring form as the rest.
  • Both FAIL_FAST and FILTER are exported so a single top-level invocation propagates through the recursive sub-makes.

Motivation: a CI make test:integration run aborted after Rust's failures and never ran CLI/Python/Node/C, hiding their status.

Test plan

  • make -n for all 11 leaf targets shows the correct native filter flag with FILTER=…, and the exact pre-change command with no FILTER (no-op safe).
  • test:integration:cli FILTER=copy now emits -E 'test(~copy)'.
  • Functional harness: FAIL_FAST=false runs all suites + summary + exit 1; FAIL_FAST=true stops at first failure + exit 1.
  • Propagation harness: FILTER/FAIL_FAST reach leaf sub-makes via command-line and env.
  • Optional VM run: make test:integration FILTER=copy executes only the matching subset across suites.

Aggregator targets previously aborted at the first failing sub-suite, so
one Rust failure skipped CLI and the entire SDK suite. Add a run_suites
helper gated by FAIL_FAST (default false, mirroring GitHub Actions
strategy.fail-fast) so the whole matrix runs and exits non-zero with a
summary; FAIL_FAST=true restores fail-fast.

Also wire FILTER into every test target (rust unit/integration, ffi,
cli, python, node, c, go) mapped to each runner's native name selector,
and fix test:integration:cli's broken raw nextest filterset. Both
FAIL_FAST and FILTER are exported so they propagate through the
recursive sub-makes.
@DorianZheng DorianZheng merged commit 625bbca into main May 16, 2026
18 checks passed
@DorianZheng DorianZheng deleted the test/matrix-fail-fast-and-filter branch May 16, 2026 03:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant