Canonical CI: grouped-tests.yml + root test/test_groups.toml#23
Merged
ChrisRackauckas merged 4 commits intoJun 10, 2026
Merged
Conversation
Convert the root test workflow (CI.yml) 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. - CI.yml: replace the hand-maintained version x os matrix test job with the thin grouped-tests.yml@v1 caller; on:/concurrency: preserved verbatim. - test/test_groups.toml: Core on [lts, 1, pre] x [ubuntu, windows, macos]; QA on [lts, 1]. - Category B refactor: JET static analysis moved out of the inline runtests.jl into a GROUP=="QA"-gated test/qa/qa.jl, isolated in test/qa/Project.toml (JET + Test + DataCollocations via [sources] path = "../..", julia = "1.10"). Functional tests stay in the default (All/Core) group; runtests.jl activates the qa env and develops the package when GROUP=="QA". - Project.toml: drop JET from the main [extras]/[targets].test (now isolated in the QA env); add [compat] entries for all remaining [extras] deps (Documenter, Plots, Test); 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>
The grouped runtests.jl uses Pkg for the QA group's Pkg.activate, but the Core group runs with project='.' (the root test env). Pkg was not a declared test dependency, so the Core job died with ArgumentError: Package Pkg not found in current path. Declare Pkg in [extras] and add it to [targets].test. 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 functional test dependencies from the root test environment while isolating QA, breaking the Core group. Re-add the deps that the pre-conversion base test target listed (using their base UUIDs) so Core resolves and @testset/@safetestset/domain macros are defined. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…Error The converted runtests.jl placed `using` statements inside a top-level `if GROUP ...` block that also used a macro (e.g. @testset) inline. Julia macro-expands the entire if block as one unit before the in-block `using` executes, so the macro was undefined (UndefVarError: @testset not defined in Main). Move the functional usings to top level (the QA-subenv usings that follow Pkg.activate stay in the QA block). Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Summary
Converts the root test workflow to the canonical SciML thin caller of
grouped-tests.yml@v1, with the test matrix declared once in a roottest/test_groups.toml.CI.yml(the root version/OS matrix workflow): the hand-maintainedversion × osmatrix test job is replaced with the thin caller:on:andconcurrency:are preserved verbatim. Nowith:overrides are needed:runtests.jlreads the defaultGROUPenv var, coverage defaultsrc,extmatches this repo (has bothsrc/andext/), andcheck-boundsdefault is kept.test/test_groups.toml(new):[Core]on["lts", "1", "pre"]×["ubuntu-latest", "windows-latest", "macos-latest"][QA]on["lts", "1"]Category B refactor (Aqua/JET were inline)
The old
runtests.jlran theJET.@test_optstatic-analysis testset inline in the single ungrouped suite. This PR:All/Core).GROUP=="QA"-gatedtest/qa/qa.jl, isolated intest/qa/Project.toml(JET+Test+DataCollocationsvia[sources]path = "../..",julia = "1.10"). WhenGROUP=="QA",runtests.jlactivates the QA env, develops the package, instantiates, and includesqa.jl.Project.toml: dropsJETfrom the main[extras]/[targets].test(now isolated in the QA env); adds[compat]entries for all remaining[extras]deps (Documenter,Plots,Test);juliacompat already at the1.10LTS floor.Matrix match
Old matrix (single ungrouped suite, 5 cells):
ubuntu-latest×{1, lts, pre}, plus1.10onwindows-latestandmacOS-latest.New emitted matrix (computed via
compute_affected_sublibraries.jl --root-matrix, 11 cells):Core:{lts, 1, pre}×{ubuntu, windows, macos}= 9QA:{lts, 1}on ubuntu = 2The ubuntu functional coverage is reproduced exactly (
lts/1/pre). OS coverage is preserved and broadened: the old workflow ran windows/macos only on1.10, which is this package'slts(julia = "1.10"), so theCoreltscells on windows/macos reproduce the old1.10cells, with1/preadded on those OSes as a superset (the TOML group model multiplies version × OS). JET coverage is preserved as the dedicatedQAgroup onlts+1.Notes
QA group newly wired; Aqua/JET run in CI — any failures will be triaged in follow-up.
Ignore until reviewed by @ChrisRackauckas.
🤖 Generated with Claude Code