Skip to content

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

Merged
ChrisRackauckas merged 1 commit into
SciML:mainfrom
ChrisRackauckas-Claude:grouped-tests-ci
Jun 8, 2026
Merged

Canonical CI: grouped-tests.yml + root test/test_groups.toml#129
ChrisRackauckas merged 1 commit into
SciML:mainfrom
ChrisRackauckas-Claude:grouped-tests-ci

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Summary

Converts the root test workflow (Tests.yml) into a thin caller of the canonical SciML reusable grouped-tests.yml@v1, with the test matrix declared once in a root test/test_groups.toml.

Before: Tests.yml hand-maintained a version × os matrix ({1, lts} × {ubuntu, macos, windows} = 6 cells) and called tests.yml@v1 directly.

After:

  • Tests.yml jobs.tests is now just:
    jobs:
      tests:
        uses: "SciML/.github/.github/workflows/grouped-tests.yml@v1"
        secrets: "inherit"
  • test/test_groups.toml declares a single All group:
    [All]
    versions = ["1", "lts"]
    os = ["ubuntu-latest", "macos-latest", "windows-latest"]

The name: "Tests", on: triggers, and concurrency: block are preserved verbatim, so the existing branch-protection status check is unchanged. No with: inputs are needed — all of group-env-name (GROUP), check-bounds (yes), coverage (true), coverage-directories (src,ext), and apt-packages match the reusable workflow defaults and the old job's behavior.

Why a single All group

This repo's test/runtests.jl dispatches with const GROUP = get(ENV, "GROUP", "All") and runs QA whenever GROUP != "Core"; the functional testsets always run. The old Tests.yml never set GROUP, so every cell ran the full suite (QA + functional) under the default All. A single All group reproduces that exactly: GROUP=All → QA + all functional tests in one job per cell. runtests.jl is unchanged; QA is not isolated in this repo's dispatch, so a Core/QA split would either drop QA (Core excludes it) or duplicate the functional tests, neither of which reproduces the old matrix.

Matrix match

Verified with scripts/compute_affected_sublibraries.jl . --root-matrix (from SciML/.github@v1). Emitted set:

group version os
All 1 ubuntu-latest
All 1 macos-latest
All 1 windows-latest
All lts ubuntu-latest
All lts macos-latest
All lts windows-latest

6/6 exact on (version, os), each cell running the identical full suite as before.

QA

QA (Aqua + JET) already exists in test/qa.jl and runs under this matrix as before. Per Category A, no local Aqua/JET run was performed and runtests.jl was not modified. Project.toml metadata was checked statically: julia compat floor is already "1.10" (LTS), every [targets].test entry is declared in [extras], every dep/extra has a [compat] entry, and there are no stale extras — no benign-metadata fixes were needed.

YAML and TOML both parse cleanly (static-verified).

Ignore until reviewed by @ChrisRackauckas.

Convert the root test workflow (Tests.yml) into a thin caller of the
canonical SciML/.github grouped-tests.yml@v1 reusable workflow, with the
test matrix declared once in test/test_groups.toml at the repo root.

The single "All" group (versions ["1","lts"], os
[ubuntu-latest, macos-latest, windows-latest]) reproduces the previous
Tests.yml matrix exactly: 6 cells, each running the full suite. runtests.jl
runs QA whenever GROUP != "Core", so GROUP=All runs QA + all functional
tests in one job per cell, identical to the old unset-GROUP behavior.

on: triggers and concurrency: are preserved verbatim; name: "Tests" is kept
so the branch-protection status check is unchanged. No other workflow files
are touched and runtests.jl is unchanged.

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 8, 2026 15:13
@ChrisRackauckas ChrisRackauckas merged commit 75d923f into SciML:main Jun 8, 2026
6 of 7 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