Skip to content

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

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

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

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

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

What changed

  • .github/workflows/CI.yml: the hand-maintained matrix test job is replaced by a thin caller of grouped-tests.yml@v1. on: and concurrency: are preserved verbatim; name: CI kept. Uses group-env-name: PPS_TEST_GROUP.
  • test/test_groups.toml (new, root): declares the matrix — [Core] on lts, 1, pre; [QA] on lts, 1. Linux-only (no os axis).
  • Category B refactor (JET ran inline): the JET static-analysis block is moved out of the always-on functional suite into a dedicated QA group, isolated in test/qa/Project.toml (JET + StaticArrays + Test + the package via [sources] path ../.., julia = "1.10") with test/qa/qa.jl (verbatim from the old test/jet.jl). runtests.jl activates that env, develops the package, instantiates, and includes qa.jl when the group is QA; otherwise it runs the functional tests (regression, reinit, CPU optimizer/constraints/lbfgs) as before. test/jet.jl removed.
  • Group dispatch env var: uses a dedicated PPS_TEST_GROUP rather than the default GROUP, because GROUP is already consumed by GPU.yml and the buildkite pipeline for backend selection (CUDA/AMDGPU). runtests.jl still reads GROUP for backend selection within the Core group, so those workflows are untouched.
  • Root Project.toml metadata fixes: added missing [compat] entries for the test-only stdlibs LinearAlgebra and Test (both listed in [extras]). julia compat already at the 1.10 LTS floor — left unchanged.

Only CI.yml was modified among workflows; Downgrade.yml, GPU.yml, FormatCheck.yml, SpellCheck.yml, TagBot.yml, etc. are untouched.

Matrix match

The emitted (group, version, runner) set from compute_affected_sublibraries.jl --root-matrix:

Core: (lts, 1, pre) × ubuntu-latest
QA:   (lts, 1)      × ubuntu-latest

The previous CI.yml ran a single cell (version: "1", whole suite incl. JET). That cell is preserved (Core 1 + QA 1); the canonical conversion additionally adds lts + pre to the functional group and lts to QA. All Linux, matching the Linux-only previous setup.

Verification (static only)

  • Ran compute_affected_sublibraries.jl . --root-matrix (Julia 1.11) — reproduces the matrix above.
  • TOML parse of test/test_groups.toml, test/qa/Project.toml, root Project.toml — all OK; all [extras] deps now have [compat] entries.
  • YAML parse of CI.yml — OK.
  • Did not instantiate or run tests / Aqua / JET locally (structural conversion only).

QA group is newly wired; Aqua/JET run in CI — any failures will be triaged in a follow-up.

Ignore until reviewed by @ChrisRackauckas.

ChrisRackauckas and others added 3 commits June 9, 2026 18:02
Convert the root test workflow (CI.yml) to the canonical thin caller that
dispatches to SciML/.github grouped-tests.yml@v1, with the version x group
matrix declared once in test/test_groups.toml.

Category B refactor (Aqua/JET ran inline): JET static analysis is moved out of
the always-on functional suite into a dedicated QA group, isolated in
test/qa/Project.toml (JET + StaticArrays + Test + the package via [sources]
path) with a test/qa/qa.jl. runtests.jl activates that env, develops the
package, instantiates, and includes qa.jl when the group is QA; otherwise it
runs the functional tests (regression, reinit, CPU optimizer/constraints/lbfgs)
as before.

The test-group dispatch uses a dedicated env var PPS_TEST_GROUP (group-env-name
input) so it does not collide with the existing GROUP env var that GPU.yml and
the buildkite pipeline already use for backend selection (CUDA/AMDGPU);
runtests.jl still reads GROUP for backend selection in the Core group.

Root Project.toml metadata fixes: add missing [compat] entries for the
test-only stdlibs LinearAlgebra and Test (both listed in [extras]); julia
compat already at the 1.10 LTS floor.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
test/runtests.jl does `using Pkg` for the QA group's Pkg.activate, but
Pkg was not declared in the Core test environment (project='.'), so the
Core job died with `ArgumentError: Package Pkg not found in current path`.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move `using SafeTestsets` and `using Test` out of the in-block else
branch to top level so the @safetestset/@testset macros are defined
before the if-block (which uses them inline) is macro-expanded as a
single unit.

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:44
@ChrisRackauckas ChrisRackauckas merged commit 84d2395 into SciML:main Jun 10, 2026
7 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