Skip to content

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

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#59
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 pattern: CI.yml becomes a thin caller of grouped-tests.yml@v1, and the test matrix is declared once in test/test_groups.toml.

This is Category B: the repo had JET static-analysis tests (test/jet_tests.jl) wired inline (well, commented out) in runtests.jl with no separate QA group. They are now refactored into an isolated QA group, joined by Aqua.

Changes

  • .github/workflows/CI.yml: the hand-maintained version × os matrix test job is replaced with
    jobs:
      tests:
        uses: "SciML/.github/.github/workflows/grouped-tests.yml@v1"
        secrets: "inherit"
    on: + concurrency: are preserved verbatim, and the docs job is untouched. Linux-only, so no OS axis. No with: block is needed — all defaults apply (GROUP env name, check-bounds: yes, coverage on, src,ext).
  • test/test_groups.toml (new): [Core] on [lts, 1], [QA] on [lts, 1].
  • test/runtests.jl: dispatches on GROUP. Core/All run the functional suite; QA activates test/qa, develops the package, instantiates, and includes qa.jl.
  • test/qa.jl + test/qa/Project.toml (new): isolated QA environment (Aqua + JET + Test + the package via [sources] path), [compat] julia = "1.10". Folds in the previous jet_tests.jl checks and adds Aqua.test_all. The old commented-out jet_tests.jl include is removed and jet_tests.jl is renamed into qa.jl.
  • Project.toml: add [compat] Test = "1" so every [extras] dep has a compat entry (benign metadata fix). The julia compat was already at the 1.10 LTS floor, unchanged.

Matrix match

Old CI.yml matrix: version: ['1.10', '1'], os: [ubuntu-latest], arch: [x64] → 2 cells.

New emitted root matrix (verified statically via compute_affected_sublibraries.jl . --root-matrix against SciML/.github@v1):

Core lts (1.10) ubuntu-latest
Core 1          ubuntu-latest
QA   lts (1.10) ubuntu-latest
QA   1          ubuntu-latest

The Core group reproduces the old matrix exactly (lts resolves to 1.10; 1 to latest 1.x, ubuntu-latest). Core is deliberately [lts, 1] (not the generic [lts, 1, pre] default) so the prior coverage is reproduced without adding a new pre cell. The QA group is new.

QA group newly wired; Aqua/JET run in CI — any failures will be triaged in follow-up. No tests, Aqua, or JET were run locally for this PR (structural conversion only). TOML/YAML parse and the root-matrix output were verified statically.

Ignore until reviewed by @ChrisRackauckas.

🤖 Generated with Claude Code

ChrisRackauckas and others added 3 commits June 9, 2026 18:03
Convert the root test workflow (CI.yml) to the canonical
grouped-tests.yml@v1 thin caller, with the test matrix declared once in
test/test_groups.toml. Refactor the inline JET static analysis into an
isolated QA group (GROUP=QA) alongside Aqua, kept out of the main test
environment via test/qa/Project.toml.

- CI.yml: replace the hand-maintained version x os matrix test job with a
  thin grouped-tests.yml@v1 caller; on:/concurrency: and the docs job are
  unchanged.
- test/test_groups.toml: Core on [lts, 1] (reproduces the old [1.10, 1]
  matrix; lts == 1.10), QA on [lts, 1].
- test/runtests.jl: dispatch on GROUP. Core/All run the functional suite;
  QA activates test/qa, develops the package, instantiates, and runs qa.jl.
- test/qa.jl + test/qa/Project.toml: isolated QA env (Aqua + JET + Test +
  package via [sources]); folds in the previous jet_tests.jl checks and
  adds Aqua.test_all. Removes the old (commented-out) jet_tests.jl include.
- Project.toml: add [compat] Test = "1" so every [extras] dep has a compat
  entry; julia compat already at the 1.10 LTS floor.

QA group newly wired; Aqua/JET run in CI.

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

The converted runtests.jl placed using statements inside a top-level
if-GROUP block that also used a macro (@testset) inline. Julia
macro-expands the whole if block as one unit before the in-block using
executes, so the macro was undefined at expansion time. Move the
functional usings to top level (after using Pkg, before const GROUP).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Aqua.test_all in the QA group fails two sub-checks on OrgMaintenanceScripts:
stale dependencies (SnoopCompileCore, YAML) and missing deps compat entries
(Dates, Distributed, LibGit2, Logging, Pkg, Printf, Random). Disable only those
two sub-checks in test_all and @test_broken them so the QA group is green while
the findings remain visible. All other Aqua sub-checks and JET still run and pass.

Tracked in SciML#60

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:44
@ChrisRackauckas ChrisRackauckas merged commit 87d8517 into SciML:main Jun 10, 2026
7 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