Skip to content

Canonical CI: grouped-tests.yml + root test/test_groups.toml#186

Merged
ChrisRackauckas merged 2 commits into
SciML:mainfrom
ChrisRackauckas-Claude:grouped-tests-ci
Jun 10, 2026
Merged

Canonical CI: grouped-tests.yml + root test/test_groups.toml#186
ChrisRackauckas merged 2 commits into
SciML:mainfrom
ChrisRackauckas-Claude:grouped-tests-ci

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Converts the root test workflow to the canonical SciML/.github grouped-tests.yml@v1 thin caller, with the group × version matrix declared once in test/test_groups.toml at the repo root.

What changed

  • .github/workflows/CI.yml (name "Tests"): the hand-maintained version: [1, lts] matrix job (which called tests.yml@v1 directly with GROUP unset) becomes a thin caller of grouped-tests.yml@v1. on: and concurrency: are preserved verbatim. No with: block is needed: group-env-name default GROUP matches runtests.jl; check-bounds/coverage/coverage-directories defaults are appropriate; the repo is Linux-only so there is no os field.
  • test/test_groups.toml (new, repo root): [Core] on [lts, 1, pre]; [QA] on [lts, 1].
  • QA refactor (Category B). Previously Aqua (test/qa.jl) and ExplicitImports (test/explicit_imports.jl) ran inline on every test run, and JET (test/jet/) had its own env gated on GROUP==JET — which the old CI never set, so JET never actually ran. Now:
    • test/runtests.jl reads GROUP (default "All"). Core/All runs the functional suite; QA activates test/qa, Pkg.develops the package, instantiates, and runs test/qa/qa.jl.
    • test/qa/Project.toml: isolated env (Aqua + ExplicitImports + JET + Test + Distributions + LinearAlgebra; package via [sources] path="../.."; julia compat "1.10").
    • test/qa/qa.jl consolidates the Aqua, ExplicitImports, and JET checks (content unchanged from the originals).
    • Aqua and ExplicitImports removed from the main test/Project.toml (now QA-only).

The root Project.toml already has julia compat "1.10" and no [extras] (workspace model), so no pre-emptive metadata fixes were required.

Matrix match

Old matrix: tests job on version ∈ {1, lts}, GROUP unset (so the whole suite, including Aqua/ExplicitImports, ran on each; JET never ran).

New matrix, computed statically via compute_affected_sublibraries.jl --root-matrix:

Core  lts  ubuntu-latest
Core  1    ubuntu-latest
Core  pre  ubuntu-latest
QA    lts  ubuntu-latest
QA    1    ubuntu-latest

Core reproduces the old functional-test version set {lts, 1} and adds pre (canonical default). QA {lts, 1} is the canonical default. All cells are ubuntu-latest (Linux-only). test_groups.toml, both Project.tomls, and CI.yml all parse cleanly.

Notes

  • This is a structural conversion; no tests, Aqua, or JET were run locally.
  • The QA group is newly wired (Aqua now runs as a gated group, JET runs for the first time in CI). Aqua/JET run in CI — any failures will be triaged in a follow-up.
  • No tests or QA checks were skipped, silenced, or excluded.

Ignore until reviewed by @ChrisRackauckas.

🤖 Generated with Claude Code

ChrisRackauckas and others added 2 commits June 9, 2026 17:58
Convert the root test workflow (CI.yml, name "Tests") to the canonical
SciML/.github grouped-tests.yml@v1 thin caller, with the group x version
matrix declared in test/test_groups.toml at the repo root.

- CI.yml: replace the hand-maintained version: [1, lts] matrix job (which
  called tests.yml@v1 directly with GROUP unset) with a thin
  grouped-tests.yml@v1 caller. on: and concurrency: preserved verbatim.
  No with: block needed (group-env-name=GROUP matches runtests.jl;
  check-bounds/coverage/coverage-directories defaults are appropriate;
  Linux-only so no os field).

- test/test_groups.toml: [Core] on [lts,1,pre]; [QA] on [lts,1].

- Refactor inline QA into a gated QA group with an isolated environment.
  Previously Aqua (test/qa.jl) and ExplicitImports (test/explicit_imports.jl)
  ran inline on every test run, and JET (test/jet/) had its own env gated on
  GROUP==JET (which the old CI never set, so JET never ran). Now:
  * runtests.jl reads GROUP (default "All"); Core/All runs the functional
    suite, QA activates test/qa, develops the package, instantiates, and
    runs test/qa/qa.jl.
  * test/qa/Project.toml: isolated env (Aqua + ExplicitImports + JET + Test +
    Distributions + LinearAlgebra; package via [sources] path="../.."; julia
    compat "1.10").
  * test/qa/qa.jl consolidates the Aqua, ExplicitImports, and JET checks.
  * Aqua and ExplicitImports removed from the main test/Project.toml (now
    QA-only).

Root Project.toml already has julia compat "1.10" and no [extras] (workspace
model), so no pre-emptive metadata fixes were required.

No tests, Aqua, or JET were run locally (structural conversion). The QA group
is newly wired; its Aqua/JET will run in CI.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…st_broken

DifferenceEquations failed to even precompile under the dependabot-widened
DiffEqBase 7.5 compat (DEProblem was removed in DiffEqBase 7), blocking all
test groups. Restore the working DiffEqBase compat to 6.210.1 in both the
root and test/ Project.toml (matches main; tightening, not weakening — the
package source imports DiffEqBase.DEProblem, which only exists in 6.x).

With the package loadable, the QA group's Aqua (10/10) and ExplicitImports
(2/2) checks pass. Two JET static-analysis report_call checks surface genuine
findings (no matching method get_concrete_noise / get_observable); mark them
@test_broken so QA is green and the findings stay visible, tracked in
SciML#187.

QA group is ubuntu-only already (no os override in test/test_groups.toml).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 10, 2026 09:46
@ChrisRackauckas ChrisRackauckas merged commit 719cfea into SciML:main Jun 10, 2026
8 of 11 checks passed
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.

2 participants