Canonical CI: grouped-tests.yml + root test/test_groups.toml#111
Merged
ChrisRackauckas merged 4 commits intoJun 15, 2026
Conversation
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). |
Convert the root test workflow (Tests.yml) to the canonical thin caller delegating to SciML/.github grouped-tests.yml@v1, with the version/group matrix declared in test/test_groups.toml. - Tests.yml: replace the version-matrix job with the grouped-tests.yml@v1 thin caller (on:/concurrency: preserved verbatim, name: kept). All defaults; runtests.jl reads canonical GROUP, Linux-only. - test/test_groups.toml: [Core] on [lts,1,pre]; [QA] on [lts,1]. - Refactor test/runtests.jl for GROUP dispatch. Functional testsets run under Core (and the default All). Aqua + ExplicitImports move into a QA group gated on GROUP=="QA". - test/qa/ isolated environment (Aqua, ExplicitImports, Test + the package via [sources] path) and test/qa.jl carrying the moved checks unchanged. - Project.toml: bump julia compat 1 -> 1.10 (LTS floor); add Test = "1" compat for the [extras] Test entry (benign Aqua metadata fixes). No tests/Aqua/JET were run locally; QA is newly wired and will run in CI. 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 grouped-tests-ci branch added hard single-version compat pins to the shared root test/Project.toml. Three of those deps are never imported by any test or doc (JET, Cthulhu, SparseDiffTools) yet their pins make the shared test env unsatisfiable on the QA julias (lts=1.10, 1=1.11): - JET = 0.11.3 and Cthulhu = 3.0.2 require julia >= 1.12. - SparseDiffTools = 2.26.0 forces SciMLOperators 0.3-0.4, conflicting with the OrdinaryDiffEq 7 / NonlinearSolve 4 stack the tests actually use (which needs SciMLOperators 1.x). Removing these dead deps lets the root test env resolve on 1.10/1.11 and unblocks every group (QA and Core) without weakening any real test. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ts conversion)
FVM's Core group is a capability/shared-module driver: the test files use
`using ..FiniteVolumeMethod` and a shared `test_functions.jl` include, and Core also
runs the docs/src/literate_tutorials and literate_wyos example files (outside test/)
with file-count assertions. That does not partition into self-contained group
folders, so this uses v1.2 explicit-args mode rather than forcing folder-discovery:
* The whole original Core driver (the `safe_include` helper + the nested
`@testset`s, verbatim) moves into test/core_tests.jl and is passed as the
`core =` file body. The `@safetestset` wrapper supplies `using Test`, and
core_tests.jl's `using FiniteVolumeMethod` makes the nested-module
`using ..FiniteVolumeMethod` in each included test file resolve exactly as before.
* QA: top-level test/qa.jl moves into test/qa/qa.jl (the existing qa sub-env), run
as `qa = (; env = test/qa, body = test/qa/qa.jl)`.
* `all = ["Core"]` keeps GROUP=All to Core only (QA stays its own lane), matching
the original `if GROUP == "QA" ... else <Core> end` routing.
Adds SciMLTesting + SafeTestsets to the main test env and the qa sub-env; drops Pkg
from the test env (only the old hand-rolled harness used it).
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
7ab54f7 to
00d007b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Converts the root test workflow to the canonical SciML grouped-tests thin caller, with the version/group matrix declared in a root
test/test_groups.toml..github/workflows/Tests.yml— replaced the inline version-matrix job (which calledtests.yml@v1overversion: [1.11, pre, lts]) with the canonical thin caller:on:andconcurrency:are preserved verbatim,name: "Tests"is kept, filename unchanged. All grouped-tests inputs left at defaults (runtests.jl reads the canonicalGROUPenv var; Linux-only, no os field).test/test_groups.toml(new, root) —[Core]on[lts, 1, pre];[QA]on[lts, 1].test/runtests.jl— refactored forGROUPdispatch. Functional testsets (Geometry, Conditions, Problem, Equations, README, Tutorials, Custom Templates) run underCore(and the defaultAll). The Aqua + ExplicitImports checks move into aQAgroup gated onGROUP == "QA", which activates an isolated env, develops the package, instantiates, and includesqa.jl.test/qa/Project.toml(new) — isolated QA env: Aqua, ExplicitImports, Test + the package via[sources]path = "../..";[compat] julia = "1.10".test/qa.jl(new) — the Aqua + ExplicitImports checks, moved unchanged (no exclusions added).Project.toml— benign metadata fixes:[compat] juliabumped"1"→"1.10"(LTS floor; also clears Aqua's<=1.1project_extras check), and addedTest = "1"compat for the existing[extras]Testentry.Matrix match
Verified statically with
compute_affected_sublibraries.jl --root-matrix@v1, emitted set:Mapping vs the old matrix (
version: [1.11, pre, lts], single un-grouped run of the whole suite including Aqua/ExplicitImports):{1.11→1, pre, lts}→ Core{lts, 1, pre}.[lts, 1](canonical pattern). Previously they ran on all three includingpre; QA droppingpreis the intended canonical reduction.Notes
Ignore until reviewed by @ChrisRackauckas.
🤖 Generated with Claude Code