Skip to content

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

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

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

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Summary

Converts the root test workflow (.github/workflows/CI.yml) to the canonical thin caller that delegates to SciML/.github/.github/workflows/grouped-tests.yml@v1. The group × version matrix now lives once in test/test_groups.toml instead of being hand-maintained in YAML.

on:, concurrency:, the filename, and name: CI are preserved verbatim. No with: overrides were needed — the package reads GROUP (default), has no ext/, and used the v1 defaults for check-bounds/coverage. Linux-only, so no os field. All other workflows are untouched.

Category B refactor (inline Aqua → isolated QA group)

Aqua previously ran inline inside the Core group via test/qa.jl (included whenever GROUP == "Core"). This PR wires it as its own QA group:

  • test/test_groups.toml declares [Core], [Datafit], and [QA].
  • test/qa/Project.toml isolates the QA env: Aqua + Test + EasyModelAnalysis via a [sources] path (../..), with julia = "1.10".
  • test/runtests.jl: when GROUP == "QA" it Pkg.activates test/qa, Pkg.develops the repo root, Pkg.instantiates, then includes qa.jl. Functional tests stay under Core (and All); Datafit is preserved as its own group. All still includes qa.jl inline for local runs.

Matrix match

Old matrix: Core@1, Datafit@1 (ubuntu-latest, Linux-only, version '1').
New --root-matrix output: Core@1, Datafit@1, QA@1 (ubuntu-latest).

The functional Core@1 / Datafit@1 matrix is reproduced exactly. QA@1 is newly wired (Aqua was previously folded into Core@1). Statically verified with scripts/compute_affected_sublibraries.jl … --root-matrix; TOML and YAML parse confirmed.

Metadata

Root Project.toml already satisfied the benign-fix checks: [compat] julia = "1.10" (LTS floor) is present, and every [extras] dep (Aqua, SafeTestsets, Test) already has a [compat] entry. No changes were needed there.

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

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


🤖 Generated with Claude Code

Ignore until reviewed by @ChrisRackauckas.

ChrisRackauckas and others added 4 commits June 9, 2026 17:57
Convert the root test workflow (CI.yml) to the canonical thin caller that
delegates to SciML/.github grouped-tests.yml@v1, with the group x version
matrix declared once in test/test_groups.toml.

Category B refactor: Aqua previously ran inline inside the Core group via
test/qa.jl. It is now wired as its own QA group, gated on GROUP=="QA" and
isolated in test/qa/Project.toml (Aqua + Test + EasyModelAnalysis via a
path source). runtests.jl activates that env, develops the package, and
instantiates before including qa.jl. Functional tests remain under Core
(and All); Datafit is preserved as its own group.

Matrix match: the prior Core@1 / Datafit@1 (ubuntu-latest, Linux-only)
functional matrix is reproduced exactly; QA@1 is newly wired.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Core test group runs with project='.', and test/runtests.jl does
`using Pkg` to activate the QA sub-environment. Pkg was not a declared
test dependency in the root test env, so 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 root test/test_groups.toml [QA] group ran Aqua/JET on only ["1"].
Normalize to the canonical QA set ["lts", "1"] so static analysis also
runs on the LTS Julia. Core/Datafit groups are untouched.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ts conversion)

Core stays as the top-level test/*.jl files; the Datafit group moves to
test/Datafit/datafit.jl and QA moves to test/qa/qa.jl so the Core glob does
not pick them up. runtests.jl becomes `using SciMLTesting; run_tests()`
(folder-discovery). SciMLTesting added to test deps and the qa @safetestset
sub-env; the old Pkg-based QA activation harness is dropped (SciMLTesting
handles activate/develop/instantiate). Datafit runs in the main test env
(its deps are already in the test target), so it needs no sub-env Project.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor Author

Added the SciMLTesting v1.2 folder-based run_tests harness on top of this grouped-tests conversion; merges as one PR (grouped-tests + SciMLTesting v1.2).

@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 15, 2026 04:57
@ChrisRackauckas ChrisRackauckas merged commit 447d3e4 into SciML:main Jun 15, 2026
5 of 10 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