Skip to content

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

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

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

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Summary

Converts the root Tests.yml test workflow from a hand-maintained version matrix (calling tests.yml@v1 directly) into a thin caller of the canonical SciML/.github/.github/workflows/grouped-tests.yml@v1. The group x version matrix is now declared once in test/test_groups.toml.

Changes

  • .github/workflows/Tests.yml: jobs.tests is now just
    jobs:
      tests:
        uses: "SciML/.github/.github/workflows/grouped-tests.yml@v1"
        secrets: "inherit"
    on:, concurrency:, and name: preserved verbatim. All workflow inputs left at defaults (GROUP env var, check-bounds, coverage). No other workflows touched.
  • test/test_groups.toml (new): [Core] on ["lts", "1", "pre"], [QA] on ["lts", "1"]. Linux-only (no os field).
  • test/runtests.jl: added GROUP dispatch (default "All"). Core/All run the existing suite unchanged; QA activates the isolated test/qa environment and runs qa.jl.
  • test/qa/Project.toml + test/qa/qa.jl (new): isolated Aqua + JET environment (the package is brought in via [sources] path). Runs Aqua.test_all(FiniteVolumeMethod1D) and JET.test_package(FiniteVolumeMethod1D; target_defined_modules=true).
  • Project.toml: [compat] julia raised "1" -> "1.10" (LTS floor; also clears Aqua's project_extras check), and [compat] entries added for the [extras] deps (ExplicitImports, Test) which previously had none. Legitimate metadata fixes.

Matrix match

Statically verified with compute_affected_sublibraries.jl --root-matrix. The emitted set:

  • Core x {lts, 1, pre}reproduces the old matrix exactly (the old single test job ran on versions 1, lts, pre).
  • QA x {lts, 1}newly wired.

Note

The QA group is newly wired; Aqua/JET run in CI — any failures will be triaged in a follow-up. No Aqua/JET exclusions were pre-added.

This is a structural conversion only; Aqua/JET/tests were not run locally.


Ignore until reviewed by @ChrisRackauckas.

🤖 Generated with Claude Code

ChrisRackauckas and others added 5 commits June 9, 2026 18:11
Convert the root Tests.yml from a hand-maintained version matrix calling
tests.yml@v1 into a thin caller of the canonical grouped-tests.yml@v1, with
the group x version matrix declared once in test/test_groups.toml.

- Tests.yml: jobs.tests now `uses: SciML/.github/.github/workflows/grouped-tests.yml@v1`
  (on:/concurrency:/name: preserved verbatim; all inputs default).
- test/test_groups.toml: [Core] on [lts, 1, pre] (reproduces the old matrix),
  [QA] on [lts, 1] (newly wired).
- test/runtests.jl: GROUP dispatch (default "All"); Core/All run the existing
  suite, QA activates the isolated test/qa env and runs qa.jl.
- test/qa/{Project.toml,qa.jl}: isolated Aqua + JET environment (package via
  [sources] path); Aqua.test_all + JET.test_package(target_defined_modules=true).
- Project.toml: [compat] julia raised "1" -> "1.10" (LTS floor) and compat
  entries added for the [extras] deps (ExplicitImports, Test).

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 `using Pkg` for the QA group's Pkg.activate,
but Pkg was not a declared test dependency. Under project='.' the Core job
failed with: ArgumentError: Package Pkg not found in current path.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The grouped-tests QA group activates test/qa as its own project, so the QA sub-env must carry Pkg (used by the activation/instantiate path).

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 `using FiniteVolumeMethod1D` and
`using SafeTestsets` inside the top-level `if GROUP == "All" || GROUP == "Core"`
block, which also uses `@safetestset`/`@testset` inline. Julia macro-expands the
entire `if` block as one unit before the in-block `using` runs, so `@safetestset`
is undefined at expansion time (UndefVarError: @safetestset not defined in Main).
Move those two `using` lines up to top level. The QA block (Pkg.activate of the
qa sub-environment) is left untouched.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The QA group surfaced two reproducible findings on Julia 1.11:
- Aqua deps_compat fails because SparseArrays (a [deps] entry) has no
  [compat] bound in the root Project.toml.
- JET.report_package reports 4 possible errors (Dirichlet/Neumann @kwdef
  inner constructors and CommonSolve.init on the constructed ODEProblem).

Keep all other Aqua sub-checks running and passing (Aqua.test_all with
deps_compat=false) and mark the two failing checks @test_broken so the QA
group goes green in CI. These should be fixed and un-broken; tracked in
SciML#84.

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 80bfc71 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