Skip to content

Use SciMLTesting v1.1.0 (run_tests harness)#3752

Draft
ChrisRackauckas-Claude wants to merge 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:sciml-testing-rollout
Draft

Use SciMLTesting v1.1.0 (run_tests harness)#3752
ChrisRackauckas-Claude wants to merge 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:sciml-testing-rollout

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Use SciMLTesting v1.1.0 (run_tests harness)

Replaces the hand-written if GROUP == ... dispatcher in root test/runtests.jl with a single declarative SciMLTesting.run_tests call (v1.1.0). Behavior-equivalent refactor: the exact set of tests run under every GROUP value — including bare/All — is unchanged. No test assertions or test logic were modified.

Richest-monorepo shape (sublib_env + umbrellas + curated all)

This is the richest conversion shape: a monorepo whose root dispatches both to functional groups and to lib/<Sublibrary> sub-packages.

  • Curated all = [InterfaceI..V, Integrators_I, Integrators_II, Regression_I, Regression_II] — the precise membership of the old GROUP == "All" branches, in order. It deliberately excludes QA, AlgConvergence_*, Downstream, AD, and ODEInterfaceRegression, none of which the old All branch ran. (The v1.0.0 all === nothing fallback would have incorrectly folded QA into All — this is the bug this corrected pass fixes.) There is no root Core body, so core = () -> nothing and "Core" is omitted from all.
  • umbrellas = Interface => [I..V], Integrators => [I, II], Regression => [I, II] — reproduce the old GROUP == "Interface"/"Integrators"/"Regression" branches (one GROUP triggers several).
  • sublib_env = "ODEDIFFEQ_TEST_GROUP" + lib_dir = ../lib — reproduce the monorepo sublibrary dispatch: the root reads GROUP to pick lib/<sub>, then Pkg.tests it with the sub-group handed off via ENV["ODEDIFFEQ_TEST_GROUP"].
  • Version/prerelease gates preserved as thin guards inside the group thunks (v1.1.0 exposes no kwarg for these): the Null u0 test stays gated by VERSION >= v"1.11" && isempty(VERSION.prerelease), and ODEInterfaceRegression stays gated by isempty(VERSION.prerelease). The vestigial is_APPVEYOR guard is also preserved.
  • AD / Downstream / ODEInterfaceRegression keep their original Pkg.activate/develop/instantiate thunks (not env = group specs) so their Julia <1.11 dependency resolution stays byte-for-byte identical (the env = path would additionally develop the sub-env's [sources] on 1.10, a behavior change on the lts matrix cell).

Deps

  • Add SciMLTesting (09d9d899-5365-40a9-917a-5f67fddea283) to [extras], the test target, and [compat] (= "1").
  • Pkg is retained in the test deps because the activate_*_env thunks still call it directly.
  • No test/qa/Project.toml exists (QA runs ExplicitImports in the root test env), so nothing was added there.

Verification

  • TOML.parsefile on Project.toml; Meta.parseall on runtests.jl and qa/qa_tests.jl — all clean, no conflict markers.
  • Routing dry-run: drove run_tests with this exact groups/all/umbrellas/sublib_env/lib_dir config under every GROUP value and confirmed the set of group keys run matches the old dispatcher for all of: All, InterfaceI..V, Interface, Integrators_I/II, Integrators, Regression_I/II, Regression, AlgConvergence_I/III, Downstream, AD, ODEInterfaceRegression, QA, Core, AlgConvergence_II, ModelingToolkit. Sublibrary routing was exercised end-to-end (Pkg.test(OrdinaryDiffEqTsit5) passed; OrdinaryDiffEqBDF_QA correctly handed QA off via ODEDIFFEQ_TEST_GROUP).

Draft. Ignore until reviewed by @ChrisRackauckas.

🤖 Generated with Claude Code

Replace the hand-written `if GROUP == ...` dispatcher in test/runtests.jl
with a single declarative `SciMLTesting.run_tests` call (v1.1.0). This is a
behavior-equivalent refactor: the exact set of tests run under every GROUP
value (including bare/All) is unchanged.

Key v1.1.0 wiring for this monorepo:
- all = [InterfaceI..V, Integrators_I/II, Regression_I/II] — the curated,
  ordered membership of the "All"/default group. This deliberately EXCLUDES
  QA, AlgConvergence_*, Downstream, AD, and ODEInterfaceRegression, exactly
  as the old `GROUP == "All"` branches did (the v1.0.0 fallback would have
  incorrectly folded QA into All).
- umbrellas = Interface => [I..V], Integrators => [I, II], Regression => [I, II]
  reproduce the old `GROUP == "Interface"/"Integrators"/"Regression"` branches.
- sublib_env = "ODEDIFFEQ_TEST_GROUP" + lib_dir = ../lib reproduce the
  monorepo sublibrary dispatch: the root reads GROUP to pick lib/<sub>, then
  hands the sub-group off via ODEDIFFEQ_TEST_GROUP.
- The Null u0 (VERSION >= 1.11 && isempty(prerelease)) gate and the
  ODEInterfaceRegression isempty(prerelease) gate are kept as thin guards
  inside their group thunks (v1.1.0 has no kwarg for these).
- AD/Downstream/ODEInterfaceRegression keep their original
  Pkg.activate/develop/instantiate thunks (not `env =` group specs) so their
  Julia <1.11 dependency resolution stays byte-for-byte identical.

Add SciMLTesting (09d9d899-5365-40a9-917a-5f67fddea283) to [extras], the
test target, and [compat] (= "1"). Pkg is retained because the activate_*_env
thunks still use it directly.

Co-Authored-By: Chris Rackauckas <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