Skip to content

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

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

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

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Summary

Converts the root test workflow (Tests.yml) to the canonical thin caller of SciML/.github grouped-tests.yml@v1, with the version/group/OS matrix declared once in a root test/test_groups.toml. The hand-maintained matrix is gone; on: and concurrency: are preserved verbatim. No other workflows were touched.

This is a Category B refactor: Aqua and JET previously ran inline in runtests.jl (via @safetestset) with no separate QA group.

Changes

  • test/core_tests.jl (new): functional interface tests (update!, default impls, hyperparameter interface, finite_posterior/parameters) extracted from runtests.jl; run under GROUP Core/All, alongside the existing AllocCheck tests.
  • test/qa.jl: now holds Aqua + JET (the JET suite from the deleted test/jet.jl is merged in verbatim). Gated on GROUP == "QA".
  • test/qa/Project.toml (new): isolated QA environment — Aqua, JET, Test, LinearAlgebra, Statistics, plus SurrogatesBase via [sources] path="../..", [compat] julia="1.10".
  • runtests.jl: GROUP-dispatched. For QA it activates test/qa, develops the root package, instantiates, then includes qa.jl. For Core/All it runs the functional + allocation tests.
  • Project.toml: Aqua/JET removed from [extras]/[targets].test/[compat] (they now live only in the QA env, keeping QA tooling out of reverse-dependency resolution). [compat] julia stays at the 1.10 LTS floor; every remaining [extras] dep has a [compat] entry.
  • Tests.yml: thin caller — single tests job → grouped-tests.yml@v1, secrets: inherit, no with: (all defaults apply: GROUP env name, check-bounds: yes, coverage on, src,ext). The standalone alloccheck job is removed; its coverage is subsumed by the Core group.

test/test_groups.toml

[Core]
versions = ["lts", "1", "pre"]
os = ["ubuntu-latest", "macos-latest", "windows-latest"]

[QA]
versions = ["lts", "1"]

Matrix match

Old Tests.yml: version ∈ {1, lts, pre} × os ∈ {ubuntu-latest, macos-latest, windows-latest} = 9 cells, each running the whole suite (functional + AllocCheck + Aqua + JET), plus a standalone alloccheck job (ubuntu, v1).

New matrix (verified statically via compute_affected_sublibraries.jl --root-matrix):

  • Core × {lts, 1, pre} × {ubuntu-latest, macos-latest, windows-latest} = 9 cells — preserves the full functional + AllocCheck OS/version coverage exactly.
  • QA × {lts, 1} (ubuntu) = 2 cells — Aqua + JET consolidated into a dedicated group on the standard [lts, 1] set instead of being duplicated across all 9 functional cells. The old single-cell alloccheck/ubuntu coverage is subsumed (Core ubuntu/v1 + QA ubuntu/v1).

Total 11 jobs. TOML and YAML parse verified statically; tests were not run locally for this structural conversion.

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

Ignore until reviewed by @ChrisRackauckas.

🤖 Generated with Claude Code

ChrisRackauckas and others added 4 commits June 9, 2026 18:07
Convert the root test workflow to the canonical thin caller of
SciML/.github grouped-tests.yml@v1, with the version/group/OS matrix
declared once in test/test_groups.toml.

Category B refactor (Aqua/JET previously ran inline in runtests.jl):
- Functional interface tests moved to test/core_tests.jl (GROUP Core/All),
  alongside the AllocCheck allocation tests.
- Aqua + JET consolidated into test/qa.jl, gated on GROUP=="QA", running
  in an isolated test/qa/Project.toml environment (Aqua, JET, Test,
  LinearAlgebra, Statistics + SurrogatesBase via [sources] path="../..").
- runtests.jl is now GROUP-dispatched: QA activates/instantiates the qa
  env and develops the root package before including qa.jl.
- Aqua/JET removed from the root [extras]/[targets].test/[compat] now that
  they live only in the QA env (keeps QA tooling out of reverse-dep
  resolution).

test/test_groups.toml:
- [Core] on [lts, 1, pre] across [ubuntu-latest, macos-latest,
  windows-latest] (preserves the old OS matrix).
- [QA] on [lts, 1] (ubuntu).

Tests.yml is now a thin caller; on:/concurrency: preserved verbatim. The
standalone alloccheck job is removed (its coverage is subsumed by Core).
All other workflows untouched.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The grouped-tests Core job runs with project='.' (root test env), but
test/runtests.jl uses `using Pkg` to activate the QA sub-environment.
Pkg was not declared in the root test target, so the Core job failed
with `ArgumentError: Package Pkg not found in current path`. Add Pkg to
[extras] and the [targets].test vector.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The grouped-tests conversion removed these from the root test environment
([extras] + [targets].test) when isolating the QA group, but they are
still referenced by the test setup. Re-add them with their UUIDs and
compat bounds from the pre-conversion base branch.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
runtests.jl does `using Pkg` for the QA group's Pkg.activate/develop, but
Pkg was only in [extras], not the [targets] test list, so the shared root
test env failed to load Pkg for every group. Add Pkg to the test target and
declare a Pkg = "1.10" compat entry (stdlib) so Aqua.test_deps_compat's
extras check passes. QA group now green (15/15); Core unaffected (15/15).

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:45
@ChrisRackauckas
ChrisRackauckas merged commit a0478b0 into SciML:main Jun 10, 2026
14 of 17 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