Skip to content

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

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#224
ChrisRackauckas merged 3 commits into
SciML:mainfrom
ChrisRackauckas-Claude:grouped-tests-ci

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Summary

Converts the root Tests.yml workflow into the canonical thin caller of SciML/.github grouped-tests.yml@v1, with the group × version matrix declared once in test/test_groups.toml (no more hand-maintained matrix in the workflow). on: and concurrency: are preserved verbatim; name: "Tests" and the filename are unchanged. Linux-only (no os field). No with: block is needed — all inputs use their defaults (group-env-name: GROUP, check-bounds: yes, coverage: true, coverage-directories: src,ext).

Category B refactor (inline Aqua/JET → isolated QA group)

Previously the quality checks ran inline:

  • Aqua + ExplicitImports in the Core group (across all versions),
  • JET in a separate nopre group (lts, 1), with Pkg.add("JET") at runtime.

They are now consolidated into an isolated QA group:

  • test/qa/Project.toml[deps] Aqua / ExplicitImports / JET / Test + RootedTrees via [sources] path = "../.."; [compat] julia = "1.10".
  • test/qa/qa.jl — holds the Aqua / ExplicitImports / JET checks verbatim (including the pre-existing getindex ambiguity and Requires stale-dep exclusions). The old test/jet_tests.jl is folded in and removed.
  • runtests.jlGROUP=Core runs the functional suite in the default test env; GROUP=QA does Pkg.activate(test/qa) + Pkg.develop(repo root) + Pkg.instantiate() then includes qa.jl; GROUP=all (local default) runs both.

Matrix match

The emitted (group, version) set from compute_affected_sublibraries.jl --root-matrix reproduces the old matrix exactly (the nopre JET group is renamed to the canonical QA group; identical version coverage):

Old New
(Core, 1) (Core, 1)
(Core, lts) (Core, lts)
(Core, pre) (Core, pre)
(nopre, 1) (QA, 1)
(nopre, lts) (QA, lts)

5 cells in both; all ubuntu-latest.

Project metadata

Root Project.toml already had julia = "1.10" (LTS floor) and a [compat] entry for its only [extras] dep (Plots), so no metadata changes were required.

Notes

  • The QA group is newly wired through CI; Aqua/JET run in CI — any failures there will be triaged in a follow-up. No tests or checks were skipped, silenced, or excluded as part of this conversion.
  • This is a structural conversion; tests/Aqua/JET were not run locally (TOML/YAML parse + matrix computation were verified statically).

Ignore until reviewed by @ChrisRackauckas.

🤖 Generated with Claude Code

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

Category B refactor: Aqua / ExplicitImports / JET previously ran inline
(Aqua + ExplicitImports in the Core group across all versions; JET in a
"nopre" group on lts,1). They are now consolidated into an isolated QA
group:
- test/qa/Project.toml pins Aqua/ExplicitImports/JET/Test and sources
  RootedTrees via a relative path; julia compat floor 1.10 (LTS).
- test/qa/qa.jl holds the Aqua/ExplicitImports/JET checks (verbatim,
  including the pre-existing getindex ambiguity and Requires stale-dep
  exclusions). The old test/jet_tests.jl is folded in and removed.
- runtests.jl: GROUP=Core runs the functional suite (default env);
  GROUP=QA activates test/qa, develops the package, instantiates, and
  includes qa.jl; GROUP=all runs both locally.

Matrix preserved: Core on [lts,1,pre]; the former "nopre" JET group maps
to QA on [lts,1]. Linux-only (no os field).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The grouped-tests conversion stripped test dependencies from the root
test environment that the Core group runs under. Re-add them (with their
base UUIDs and compat bounds) so Core no longer fails on missing macros
or QA tools that were moved out.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The grouped-tests refactor moved `using StaticArrays` and
`using LaTeXStrings: @L_str` inside the `if RUN_CORE_TESTS` guard. Those
packages export string/array macros (`@L_str`, `@SArray`, `@SVector`,
`@SMatrix`) that are used throughout the Core testset body. Macros are
expanded at lowering time regardless of the runtime `if RUN_CORE_TESTS`
branch, so when GROUP=QA (RUN_CORE_TESTS=false) the file failed to load
with `UndefVarError: @L_str not defined` / `@SArray not defined` before any
QA test could run.

Hoist just those two imports to top level so the macros resolve at lowering
time for every group. The actual call sites stay runtime-guarded under
RUN_CORE_TESTS, so Core behavior is unchanged and no test is weakened.

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 052d2bb into SciML:main Jun 10, 2026
9 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