Skip to content

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

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

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

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

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 and name: preserved): replaced the hand-maintained version: [1, lts, pre] matrix job with the thin caller SciML/.github/.github/workflows/grouped-tests.yml@v1 (secrets: inherit). The on: triggers and concurrency: block are preserved verbatim. No with: needed: runtests.jl reads the default GROUP env var, coverage defaults apply, Linux-only (no os field).
  • test/test_groups.toml (new): [Core] on ["lts", "1", "pre"], [QA] on ["lts", "1"]. Linux-only.
  • test/runtests.jl: added GROUP dispatch. All/Core run the existing integration test suite; QA includes test/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") and qa.jl running Aqua.test_all and JET.test_package(...; target_defined_modules = true).
  • Project.toml: benign metadata fixes — bumped [compat] julia from 1.9 to 1.10 (LTS floor), and added Test = "1" compat for the [extras] dependency.

Matrix match

Old Tests.yml matrix: the full test suite on Julia 1, lts, pre (3 Linux jobs).

New matrix, verified statically via compute_affected_sublibraries.jl --root-matrix:

Core  lts  ubuntu-latest
Core  1    ubuntu-latest
Core  pre  ubuntu-latest
QA    lts  ubuntu-latest
QA    1    ubuntu-latest

The three Core jobs reproduce the old version matrix exactly (full suite, Linux). The two QA jobs 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

ChrisRackauckas and others added 3 commits June 9, 2026 18:18
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>
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 10, 2026 09:49
@ChrisRackauckas ChrisRackauckas merged commit c0a4008 into SciML:main Jun 10, 2026
8 of 11 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