Canonical CI: grouped-tests.yml + root test/test_groups.toml#79
Merged
ChrisRackauckas merged 3 commits intoJun 10, 2026
Merged
Conversation
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
marked this pull request as ready for review
June 10, 2026 09:44
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Converts the root test workflow to the canonical SciML grouped-tests pattern.
What changed
.github/workflows/Tests.ymlis now a thin caller ofSciML/.github/.github/workflows/grouped-tests.yml@v1(secrets: inherit, defaultGROUPenv). Theon:andconcurrency:blocks are preserved verbatim. Nowith:overrides are needed (Linux-only, noosaxis; coverage defaults retained).test/test_groups.toml(new) declares the matrix:[Core]on["lts", "1"][QA]on["lts", "1"]test/runtests.jldispatches onGROUP:Coreruns the functional suite (interface_tests.jl, the type-stability checks, and the MATLAB-solve block) — exactly what the old single job ran.QAactivatestest/qa, develops the package, instantiates, and includesqa/qa.jl.test/qa/(new) is an isolated environment (Aqua,JET,Test,MATLABDiffEqvia[sources],julia = "1.10");qa/qa.jlrunsAqua.test_all+JET.report_package. This keeps the QA tooling out of the main test target's resolve.test/jet_tests.jlkeeps its functional type-stability tests; the package-level JET static analysis now lives in the QA group.Project.toml: raised thejuliacompat floor1.6 → 1.10(LTS), added[compat]entries for the test extras (ParameterizedFunctions,Test), and movedJETout of the main[extras]/[targets]into the isolatedtest/qaenvironment.Matrix match
Old
Tests.yml: a single full-suite job overversion ∈ {"1", "lts"}on ubuntu.New emitted root matrix (verified statically with
compute_affected_sublibraries.jl --root-matrix):Core × {lts, 1}reproduces the old full-suite matrix on the identical version set (no extrapreadded).QAis 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-matrixreproduction). Per instructions, Aqua/JET/tests were not run locally.Ignore until reviewed by @ChrisRackauckas.
🤖 Generated with Claude Code