Skip to content

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

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

Canonical CI: grouped-tests.yml + root test/test_groups.toml#204
ChrisRackauckas merged 5 commits into
SciML:masterfrom
ChrisRackauckas-Claude:grouped-tests-ci

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Summary

Converts the root Tests.yml test workflow to the canonical thin caller of SciML/.github grouped-tests.yml@v1, with the group × version matrix declared once in test/test_groups.toml instead of a hand-maintained YAML matrix.

Changes

  • .github/workflows/Tests.yml — replaced the two-job matrix (tests version matrix + alloccheck) with a single thin tests job calling grouped-tests.yml@v1 with secrets: inherit. on: and concurrency: preserved verbatim; name: unchanged. No with: block needed — all defaults match the old job (GROUP env-var name, coverage: true, coverage-directories: src,ext, check-bounds: yes). Linux-only, so no os axis.
  • test/test_groups.toml (new) — Core on [lts, 1, pre], AllocCheck on [1], QA on [lts, 1].
  • test/runtests.jl — added GROUP dispatch: Core (main suite: SLArrays/LArrays/DiffEq/ChainRules + RecursiveArrayTools), AllocCheck (alloc tests), QA (activates test/qa env). "All" retained as the local default running the Core suite.
  • test/qa/ (new) — isolated QA environment: Project.toml with Aqua, JET, Test, and LabelledArrays via [sources] path = "../.."; qa.jl runs Aqua.test_all(LabelledArrays) and JET.test_package(LabelledArrays; target_defined_modules = true), gated on GROUP == "QA".
  • Project.toml — added [compat] entries for the [extras] deps that lacked one (AllocCheck = "0.2", ChainRulesTestUtils = "1", InteractiveUtils = "1", Test = "1"). julia compat already at the 1.10 LTS floor (unchanged).

Matrix match

The reusable workflow's --root-matrix computation emits exactly:

group versions
Core lts, 1, pre
AllocCheck 1
QA lts, 1

This faithfully reproduces the OLD matrix — the old tests job (GROUP=All, versions 1/lts/pre) maps to Core on the same three versions, and the old alloccheck job (GROUP=nopre, version 1) maps to AllocCheck on version 1. The QA group is newly added.

QA group is newly wired; Aqua/JET run in CI — any failures will be triaged in a follow-up.


Ignore until reviewed by @ChrisRackauckas.

🤖 Generated with Claude Code

ChrisRackauckas and others added 5 commits June 9, 2026 18:12
Convert the root Tests.yml test workflow to the canonical thin caller of
SciML/.github grouped-tests.yml@v1, declaring the group x version matrix in
test/test_groups.toml instead of a hand-maintained YAML matrix.

- Tests.yml: replace the two-job (tests version matrix + alloccheck) matrix
  with the thin `tests` caller of grouped-tests.yml@v1. on:/concurrency:
  preserved verbatim; no `with:` needed (all defaults match the old job:
  GROUP env name, coverage true, src,ext coverage dirs, check-bounds yes).
- test/test_groups.toml: Core [lts,1,pre], AllocCheck [1], QA [lts,1].
- runtests.jl: GROUP dispatch for Core (main suite) / AllocCheck / QA;
  "All" kept as the local default running the Core suite + RecursiveArrayTools.
- test/qa/: isolated QA env (Aqua, JET, Test, LabelledArrays via [sources])
  plus qa.jl running Aqua.test_all + JET.test_package gated on GROUP=="QA".
- Project.toml: add [compat] for extras missing one (AllocCheck, Test,
  ChainRulesTestUtils, InteractiveUtils); julia compat already at 1.10 LTS.

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 does `using Pkg` to activate the QA
sub-environment, but Pkg was not a declared test dependency. Under the
Core group (run with project='.'), this fails with
`ArgumentError: Package Pkg not found in current path`. Declare Pkg in
the root test environment so the Core job can load it.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The QA sub-environment activated by Pkg.activate(test/qa) runs Aqua.test_all,
which exercises Pkg-backed checks. Add Pkg to test/qa/Project.toml [deps] so the
QA group resolves it explicitly rather than relying on a transitive dependency.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move the Core/All-group `using` lines out of the top-level
`if GROUP ...` block so they are no longer macro-expanded as part of a
block that also uses test macros inline. Julia expands the whole if-block
before the in-block `using` runs, leaving macros like @testset/@test
undefined. Hoisting the usings above `const GROUP` fixes the
`UndefVarError: @testset (...) not defined in Main` failure.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Aqua ambiguities, unbound_args, undefined_exports, deps_compat and JET
(setfield! on immutable LArray in setproperty!) are genuine findings;
keep all passing Aqua sub-checks enforced and mark only the failing
checks @test_broken. Tracked in SciML#205.

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:47
@ChrisRackauckas ChrisRackauckas merged commit 9f71434 into SciML:master Jun 10, 2026
11 of 12 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