Skip to content

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

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

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

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Converts the root test workflow to the canonical SciML grouped-tests pattern.

What changed

  • .github/workflows/Tests.yml is now a thin caller of SciML/.github/.github/workflows/grouped-tests.yml@v1 (secrets: inherit, default GROUP env). The on: and concurrency: blocks are preserved verbatim. No with: overrides are needed (Linux-only, no os axis; coverage defaults retained).
  • test/test_groups.toml (new) declares the matrix:
    • [Core] on ["lts", "1"]
    • [QA] on ["lts", "1"]
  • test/runtests.jl dispatches on GROUP:
    • Core runs the functional suite (interface_tests.jl, the type-stability checks, and the MATLAB-solve block) — exactly what the old single job ran.
    • QA activates test/qa, develops the package, instantiates, and includes qa/qa.jl.
  • test/qa/ (new) is an isolated environment (Aqua, JET, Test, MATLABDiffEq via [sources], julia = "1.10"); qa/qa.jl runs Aqua.test_all + JET.report_package. This keeps the QA tooling out of the main test target's resolve.
  • test/jet_tests.jl keeps its functional type-stability tests; the package-level JET static analysis now lives in the QA group.
  • Project.toml: raised the julia compat floor 1.6 → 1.10 (LTS), added [compat] entries for the test extras (ParameterizedFunctions, Test), and moved JET out of the main [extras]/[targets] into the isolated test/qa environment.

Matrix match

Old Tests.yml: a single full-suite job over version ∈ {"1", "lts"} on ubuntu.

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

Core (lts), Core (1), QA (lts), QA (1)   — all ubuntu-latest

Core × {lts, 1} reproduces the old full-suite matrix on the identical version set (no extra pre added). QA is the newly split-out group.

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

Verified statically only (TOML/YAML parse + --root-matrix reproduction). Per instructions, Aqua/JET/tests were not run locally.

Ignore until reviewed by @ChrisRackauckas.

🤖 Generated with Claude Code

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

- Tests.yml: replace the hand-maintained version matrix job with a thin
  `uses: SciML/.github/.github/workflows/grouped-tests.yml@v1` caller
  (secrets: inherit, default GROUP env). on:/concurrency: preserved.
- test/test_groups.toml: [Core] and [QA] each on ["lts", "1"]. Core
  reproduces the old (version in {1, lts}) full-suite matrix.
- runtests.jl: GROUP dispatch. Core runs the functional suite
  (interface_tests.jl, the type-stability checks, the MATLAB-solve
  block); QA activates test/qa, develops the package, instantiates, and
  includes qa/qa.jl.
- test/qa: isolated environment (Aqua + JET + Test + MATLABDiffEq via
  [sources]) and qa.jl running Aqua.test_all + JET.report_package. This
  keeps the QA tooling out of the main test target's resolve.
- jet_tests.jl: keep the functional type-stability tests; the package's
  JET static analysis now lives in the QA group.
- Project.toml: raise julia compat floor 1.6 -> 1.10 (LTS); add [compat]
  for the test extras (ParameterizedFunctions, Test); move JET out of
  the main [extras]/[targets] into the isolated test/qa environment.

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

Declare Pkg in the root test environment so the Core job loads it.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Core-group `using DiffEqBase, MATLABDiffEq, ParameterizedFunctions`
sat inside the top-level `if GROUP` block that also uses `@ode_def_bare`
inline. Julia macro-expands the entire `if` block as one unit before the
in-block `using` runs, so the macro is undefined at expansion time
(UndefVarError: @ode_def_bare not defined in Main). Hoisting the usings to
top level fixes it.

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 667e19d into SciML:master Jun 10, 2026
4 of 9 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