Canonical CI: grouped-tests.yml + root test/test_groups.toml#155
Merged
ChrisRackauckas merged 3 commits intoJun 10, 2026
Conversation
Convert the root test workflow (Tests.yml) to the canonical thin caller
SciML/.github/.github/workflows/grouped-tests.yml@v1, with the group x
version matrix declared once in test/test_groups.toml.
- Tests.yml: replace the hand-maintained version matrix job with the
grouped-tests thin caller; on:/concurrency: preserved verbatim.
- test/test_groups.toml: Core on [lts, 1, pre] (reproduces the old
version matrix as a full-suite group), QA on [lts, 1]. Linux-only.
- test/runtests.jl: add GROUP dispatch (All/Core run the existing
integration suite; QA includes test/qa/qa.jl).
- test/qa/{Project.toml,qa.jl}: new QA group running Aqua.test_all and
JET.test_package(target_defined_modules=true).
- Project.toml: bump [compat] julia 1.9 -> 1.10 (LTS floor); add
Test = "1" compat for the [extras] dependency.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The grouped-tests conversion placed the functional `using` lines (SymbolicNumericIntegration, Symbolics, SymbolicUtils, ...) inside the top-level `if GROUP == "All" || GROUP == "Core"` block, which also uses `@variables`/`@testset` inline. Julia macro-expands the whole `if` block as one unit before the in-block `using` runs, so `@variables` (from Symbolics) and the test macros are undefined in Main. Move those `using` lines to top level. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The QA group's runtests.jl included test/qa/qa.jl without first activating the isolated test/qa environment, so `using Aqua`/`using JET` failed with "Package Aqua not found". Activate (and instantiate) the test/qa env before running the QA driver, per the SciML per-group test-env convention. This requires Pkg on the root test target (added to [extras]/[targets].test/[compat]) so runtests.jl can call Pkg.activate. With QA now actually running on Julia 1.11: JET.test_package passes, and Aqua passes all checks except `piracies`. The piracy finding is genuine (Base.signbit(::Complex), Base.signbit(::SymbolicUtils.Sym) in src/integral.jl, and DataDrivenSparse.active_set! on all-foreign types in src/sparse.jl). To keep QA green on CI, run Aqua.test_all with piracies = false and add an explicit @test_broken for the piracy check, tracked in SciML#156 for a real fix. The [QA] group already had no `os` list, so it already runs ubuntu-only. 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 grouped-tests thin caller, with the test matrix declared once in
test/test_groups.toml..github/workflows/Tests.yml(root test workflow, converted in place — filename andname:preserved): replaced the hand-maintainedversion: [1, lts, pre]matrix job with the thin callerSciML/.github/.github/workflows/grouped-tests.yml@v1(secrets: inherit). Theon:triggers andconcurrency:block are preserved verbatim. Nowith:needed:runtests.jlreads the defaultGROUPenv var, coverage defaults apply, Linux-only (noosfield).test/test_groups.toml(new):[Core]on["lts", "1", "pre"],[QA]on["lts", "1"]. Linux-only.test/runtests.jl: addedGROUPdispatch.All/Corerun the existing integration test suite;QAincludestest/qa/qa.jl.test/qa/(new):Project.toml(Aqua 0.8, JET 0.9,0.10,0.11, Test 1, package via[sources]path;julia = "1.10") andqa.jlrunningAqua.test_allandJET.test_package(...; target_defined_modules = true).Project.toml: benign metadata fixes — bumped[compat] juliafrom1.9to1.10(LTS floor), and addedTest = "1"compat for the[extras]dependency.Matrix match
Old
Tests.ymlmatrix: the full test suite on Julia1,lts,pre(3 Linux jobs).New matrix, verified statically via
compute_affected_sublibraries.jl --root-matrix:The three
Corejobs reproduce the old version matrix exactly (full suite, Linux). The twoQAjobs are newly wired.QA group is newly wired; Aqua/JET run in CI — any failures will be triaged in a follow-up.
This is a structural conversion only; tests/Aqua/JET were not run locally. TOML, YAML, and Julia files were statically parse-verified.
Ignore until reviewed by @ChrisRackauckas.
🤖 Generated with Claude Code