Skip to content

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

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

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

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Summary

Converts the root test workflow to the canonical grouped-tests.yml@v1 thin caller, with the group x version matrix declared once in test/test_groups.toml.

  • .github/workflows/Tests.yml — replaced the hand-maintained group x version matrix job with the thin caller SciML/.github/.github/workflows/grouped-tests.yml@v1 (secrets: inherit). Linux-only (no os field). coverage-directories: "src" (the package has no ext/). on:/concurrency: preserved verbatim; filename and name: CI unchanged. No other workflows touched.
  • test/test_groups.toml (new) — [Core] on lts/1/pre; [QA] on lts/1.
  • test/runtests.jl — dispatch on GROUP. Core (and All) runs the functional MethodOfLines example suite exactly as before. QA activates the isolated test/qa environment (Pkg.activate + Pkg.develop(path=repo root) + Pkg.instantiate) and includes qa.jl.
  • test/qa/Project.toml + test/qa.jl (new) — isolates Aqua/JET (plus Test and the package via [sources] path="../..") out of the main test environment; [compat] julia = "1.10".
  • Project.toml — added [compat] entries for every [extras] dependency (Lux, MethodOfLines, NonlinearSolve, OptimizationOptimJL, SafeTestsets, Test). [compat] julia was already at the 1.10 LTS floor. (Benign metadata fixes for the two most common Aqua findings.)

Matrix match

Old matrix: {MOL, NeuralPDE} x {lts, 1, pre} (6 cells). The MOL group was the only one that ran anything — NeuralPDE was commented out in runtests.jl (deps unresolvable per the existing TODO), so its 3 cells ran zero tests.

New matrix (verified statically via compute_affected_sublibraries.jl . --root-matrix):

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

The functional MOL axis is preserved 1:1 as Core on lts/1/pre. The dead NeuralPDE cells are dropped and replaced by the standard QA group on lts/1.

QA group 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-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 and others added 4 commits June 15, 2026 10:49
Convert the root test workflow (Tests.yml) to the canonical
grouped-tests.yml@v1 thin caller, with the group x version matrix
declared once in test/test_groups.toml.

- test/test_groups.toml: [Core] on lts/1/pre, [QA] on lts/1.
- runtests.jl: dispatch on GROUP. Core (and All) runs the functional
  MethodOfLines example suite as before; QA activates an isolated
  test/qa environment and runs Aqua/JET.
- test/qa/Project.toml + test/qa.jl: newly-wired QA group, isolating
  Aqua/JET (+ the package via [sources]) out of the main test env.
- Tests.yml: thin caller. Linux-only (no os field); coverage-directories
  set to "src" (no ext/). on:/concurrency: preserved verbatim.
- Project.toml: add [compat] entries for every [extras] dep
  (Lux/MethodOfLines/NonlinearSolve/OptimizationOptimJL/SafeTestsets/Test);
  julia already at the 1.10 LTS floor.

The dead NeuralPDE matrix cells (commented out in runtests.jl, deps
unresolvable) are dropped and replaced by the standard QA group.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
test/runtests.jl does `using Pkg` for the QA group's Pkg.activate, but
Pkg was not declared in the Core test environment (project='.'), so the
Core job died 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>
Move `using SafeTestsets` out of the in-block GROUP branch to top
level so the @safetestset macro is defined before the if-block (which
uses it inline) is macro-expanded as a single unit.

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

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas ChrisRackauckas merged commit 2d30c12 into SciML:master Jun 15, 2026
2 of 5 checks passed
ChrisRackauckas added a commit that referenced this pull request Jun 19, 2026
… and Runic-format qa.jl (#60)

* Runic-format test/qa/qa.jl

The QA scaffolding added in #58 introduced test/qa/qa.jl, which was not
Runic-formatted, so the Runic format check on master is red. Apply Runic
to wrap the run_qa call to satisfy the formatter.

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

* Add [compat] entry for Random stdlib dep

Aqua's deps_compat (Compat bounds) QA check flagged that the direct
dependency Random had no [compat] entry. Stdlib deps still need an
explicit compat bound for Aqua to pass. Adds Random = "1".

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

* Fix QA group: real eqs/bc typos in trans_sin + JET typo mode for Symbolics false positives

The QA group failed with 16 JET 'no matching method found' reports under
basic-mode analysis (target_defined_modules=true).

Two were genuine source bugs in trans_sin() (lib/linear_convection.jl):
  - the PDESystem was built from an undefined `eqs` (should be `eq`), which
    JET flagged as an undefined-global; and
  - a boundary condition was `(t, 2π) ~ ...` instead of `u(t, 2π) ~ ...`
    (missing the dependent variable).
Both are fixed.

The remaining 15 reports are dependency-inference false positives:
`Symbolics.wrap` (used by `@variables`/`@parameters`) has a union return type
that JET widens to include the callable wrapper `Symbolics.CallAndWrap`
(only ever produced at runtime by `@variables u(..)`, never by scalar vars),
so basic mode reports spurious union-split method errors for +/-/*/cos/sin on
scalars that are always `Num`. JET's :typo mode (the SciMLTesting run_qa default)
does not run method-error analysis but still catches real undefined-name typos,
so the QA JET call is switched to `(; target_modules = (PDESystemLibrary,), mode = :typo)`.

Verified on Julia 1.12.6: report_package basic=15 (all CallAndWrap), typo=0;
full QA group 'Quality Assurance | 12 12' all pass.

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

---------

Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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