Canonical CI: grouped-tests.yml + root test/test_groups.toml#224
Merged
ChrisRackauckas merged 3 commits intoJun 10, 2026
Conversation
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>
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 Tests.yml workflow into the canonical thin caller of
SciML/.githubgrouped-tests.yml@v1, with the group × version matrix declared once intest/test_groups.toml(no more hand-maintained matrix in the workflow).on:andconcurrency:are preserved verbatim;name: "Tests"and the filename are unchanged. Linux-only (noosfield). Nowith: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:
Coregroup (across all versions),nopregroup (lts, 1), withPkg.add("JET")at runtime.They are now consolidated into an isolated QA group:
test/qa/Project.toml—[deps]Aqua / ExplicitImports / JET / Test +RootedTreesvia[sources]path = "../..";[compat]julia = "1.10".test/qa/qa.jl— holds the Aqua / ExplicitImports / JET checks verbatim (including the pre-existinggetindexambiguity andRequiresstale-dep exclusions). The oldtest/jet_tests.jlis folded in and removed.runtests.jl—GROUP=Coreruns the functional suite in the default test env;GROUP=QAdoesPkg.activate(test/qa)+Pkg.develop(repo root)+Pkg.instantiate()thenincludesqa.jl;GROUP=all(local default) runs both.Matrix match
The emitted
(group, version)set fromcompute_affected_sublibraries.jl --root-matrixreproduces the old matrix exactly (thenopreJET group is renamed to the canonicalQAgroup; identical version coverage):5 cells in both; all
ubuntu-latest.Project metadata
Root
Project.tomlalready hadjulia = "1.10"(LTS floor) and a[compat]entry for its only[extras]dep (Plots), so no metadata changes were required.Notes
Ignore until reviewed by @ChrisRackauckas.
🤖 Generated with Claude Code