Skip to content

Use SciMLTesting v1.1.0 (run_tests harness)#615

Merged
ChrisRackauckas merged 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:sciml-testing-rollout
Jun 14, 2026
Merged

Use SciMLTesting v1.1.0 (run_tests harness)#615
ChrisRackauckas merged 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:sciml-testing-rollout

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Convert the root test/runtests.jl to use SciMLTesting v1.1.0's declarative run_tests dispatcher in place of the hand-written GROUP if-ladder. This is the corrected v1.1.0 pass for the monorepo root+sublibs (sublib_env) shape; it supersedes/replaces the earlier first-pass conversion.

Behavior-equivalent refactor. No test-assertion or test-logic changes. The set of tests run under every GROUP value (Core, All, QA, SymbolicIndexingInterface, Downstream, GPU, NoPre, the lib/ sublibrary names, and bare/unset → All) is identical before and after. Verified by a routing twin that compared the executed-body sequence per GROUP against the original, and by actually running GROUP=Core locally (all 12 Core safetestsets pass: 1147 pass / 2 pre-existing broken).

v1.1.0 kwargs used (the point of this corrected pass)

  • all = ["Core", "SymbolicIndexingInterfaceInterface"] — curates exactly what "All" runs: the Core body plus the in-main-env SII safetestset, matching the original GROUP == "Core" || "All" and GROUP == "SymbolicIndexingInterface" || "All" branches. "All" deliberately excludes QA, Downstream, GPU and NoPre. (The original All branch never ran QA — this curated list reproduces that, fixing the v1.0.0 All-includes-QA over-run.)
  • umbrellasGROUP=SymbolicIndexingInterface expands to the SII safetestset (main env) followed by the DiffEqArray symbol-indexing test (Downstream env), preserving the original two-stage main-env-then-Downstream-env handoff.
  • lib_dir = lib — a GROUP naming a lib/<Sublibrary> routes to Pkg.test(sublib); the sub-group is handed off via the default sublib_env (GROUP), since detect_sublibrary_group maps the root GROUP to (sublib, subgroup) and the sublibraries read RECURSIVEARRAYTOOLS_TEST_GROUP only after being invoked. (The root reads GROUP; the sublibrary group var is the same name, so sublib_env is left at its default.)
  • per-group env = (Downstream/GPU/NoPre/QA) replaces the activate_*_env helpers; the [sources] backport (develop_sources!) is now applied on Julia <1.11 too. GPU keeps its explicit parent develop of the ArrayPartitionAnyAll sublibrary.

Deps

  • Added SciMLTesting (compat "1") to [extras], [compat], and targets.test.
  • Pkg is retained in test deps: the Core body still Pkg.develops the ShorthandConstructors sublibrary into the main env (genuine use, not just the old harness).
  • test/QA/qa.jl is unchanged and SciMLTesting is not added to test/QA/Project.toml.

Ignore until reviewed by @ChrisRackauckas.

🤖 Generated with Claude Code

Replace the hand-written GROUP if-ladder in test/runtests.jl with a single
declarative SciMLTesting.run_tests call. Behavior-equivalent: the set of tests
run under every GROUP value (bare/All, Core, QA, SymbolicIndexingInterface,
Downstream, GPU, NoPre, and each lib/ sublibrary name + _<group>) is identical
to the pre-conversion runtests.jl.

v1.1.0 specifics used (this corrected pass fixes two v1.0.0-style bugs):

- sublib_env = "RECURSIVEARRAYTOOLS_TEST_GROUP". The monorepo root reads GROUP to
  pick which lib/<Sublibrary> to Pkg.test, but the sublibraries read their own
  RECURSIVEARRAYTOOLS_TEST_GROUP for the sub-group. The first pass relied on the
  default sublib_env=GROUP, which left RECURSIVEARRAYTOOLS_TEST_GROUP unset in the
  sublibrary subprocess (it only coincidentally ran Core via the sublib's own
  default). Setting sublib_env restores the original withenv handoff exactly.

- all = ["Core", "SII_Main"]. "All" runs exactly the root Core body plus the
  in-main-env SymbolicIndexingInterface API safetestset, matching the original
  `GROUP == "Core" || "All"` and `GROUP == "SymbolicIndexingInterface" || "All"`
  branches. It deliberately excludes QA, Downstream, GPU and NoPre, which the
  original All branch never ran.

- umbrellas: GROUP=SymbolicIndexingInterface expands to the SII API safetestset
  (main env) then the DiffEqArray symbol-indexing test (Downstream env), in that
  order, preserving the original two-stage env handoff. The Downstream group runs
  its four functional safetestsets followed by the same symbol_indexing test, as
  before.

- lib_dir = lib routes a bare sublibrary GROUP (or <sublib>_<group>) to
  Pkg.test(sublib) with the sub-group exported via sublib_env.

- per-group env = (Downstream / GPU / NoPre / QA) replaces the activate_*_env
  helpers; GPU keeps its explicit parent develop of root + the
  ArrayPartitionAnyAll sublibrary.

Add SciMLTesting (1) to [extras] + [compat] + targets.test. Pkg is retained in
the test deps because the Core body still Pkg.develops the ShorthandConstructors
sublibrary into the main env. qa.jl is unchanged and SciMLTesting is not added to
test/QA/Project.toml (qa.jl uses Aqua directly, not run_qa).

Verified locally: GROUP=Core ran the full Core suite to green via the new harness
(RecursiveArrayTools tests passed), and a routing simulation against the real
SciMLTesting source confirmed the recorded action sequence per GROUP matches the
pre-conversion runtests.jl, including RECURSIVEARRAYTOOLS_TEST_GROUP handoff.

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 14, 2026 23:54
@ChrisRackauckas ChrisRackauckas merged commit bbb80ad into SciML:master Jun 14, 2026
28 of 41 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