Skip to content

Use SciMLTesting v1.2 (folder-based run_tests)#316

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

Use SciMLTesting v1.2 (folder-based run_tests)#316
ChrisRackauckas merged 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:sciml-testing-rollout

Conversation

@ChrisRackauckas-Claude

@ChrisRackauckas-Claude ChrisRackauckas-Claude commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Converts test/runtests.jl to the SciMLTesting v1.2 folder-discovery model. The whole GROUP dispatch ladder collapses to run_tests(); test files are discovered from folders matching test/test_groups.toml:

  • Core = top-level test/*.jl (the 16 core files)
  • QA = test/qa/qa.jl (no per-group Project.toml -> runs in the root test env, as before)
  • NoPre = test/nopre/ (its own Project.toml sub-env, auto-activated and the package root developed by the harness, matching the old explicit Pkg.develop)

Behavior-preserving details:

  • qa.jl is moved into test/qa/ so the Core glob (all top-level *.jl) does not pick it up.
  • The NoPre prerelease gate is preserved: GROUP=NoPre runs nothing on a prerelease Julia (the original && isempty(VERSION.prerelease)), while All globs the NoPre folder unconditionally (as the original GROUP == "All" block always ran NoPre). This is expressed by wrapping the bare run_tests() in the same prerelease if.
  • SciMLTesting + SafeTestsets added to the root test deps and to the NoPre sub-env Project.toml; Pkg dropped (only the old harness used it).
  • test/test_groups.toml is unchanged.

The exact set of files run under each GROUP value (All/Core/QA/NoPre) is unchanged; verified by driving the real run_tests v1.2.0 dispatch over every group value (no-op bodies) and matching the fired-file set against the old dispatcher.

This supersedes the earlier v1.1.0 explicit-args form on this branch.

Ignore until reviewed by @ChrisRackauckas.

Convert test/runtests.jl to the SciMLTesting v1.2 folder-discovery model:
the whole GROUP dispatch ladder collapses to `run_tests()`, with test files
discovered from folders matching test_groups.toml (Core = top-level test/*.jl,
QA = test/qa/, NoPre = test/nopre/).

- Move qa.jl into test/qa/ so the Core glob (all top-level *.jl) does not run
  it. QA has no Project.toml, so it runs in the root test env as before.
- NoPre keeps its sub-env (test/nopre/Project.toml); folder-discovery activates
  it and develops the package root, matching the old explicit Pkg.develop.
- Preserve the NoPre prerelease gate: GROUP=NoPre runs nothing on prerelease
  Julia (the original `&& isempty(VERSION.prerelease)`), while "All" globs NoPre
  unconditionally as before. Wrapped around the bare run_tests().
- Add SciMLTesting + SafeTestsets to the root test deps and to the NoPre sub-env
  Project.toml; drop Pkg (only the old harness used it).

The exact set of files run under each GROUP value (All/Core/QA/NoPre) is
unchanged.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas-Claude ChrisRackauckas-Claude changed the title Use SciMLTesting v1.1.0 (run_tests) with curated All membership Use SciMLTesting v1.2 (folder-based run_tests) Jun 14, 2026
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 14, 2026 23:54
@ChrisRackauckas ChrisRackauckas merged commit f29a694 into SciML:master Jun 14, 2026
12 of 33 checks passed
ChrisRackauckas added a commit that referenced this pull request Jun 17, 2026
… group) (#317)

* Import ReturnCode in independentlylinearizedtests.jl

The SciMLTesting v1.2 folder-based harness (#316) runs each test file in
its own isolated module. `independentlylinearizedtests.jl` references
`ReturnCode.Default` but never imported `ReturnCode`; previously it leaked
in from `periodic_tests.jl` because all files shared one module. Import it
explicitly from SciMLBase, matching the existing pattern in periodic_tests.jl.

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

* Make integrating_GK_sum_tests.jl self-contained (fixes Core test group)

Under the SciMLTesting v1.2 per-file isolated-module harness, the linear-
system helpers (simple_linear_system, adjoint_linear[_inplace],
analytical_derivative, callback_saving_linear[_inplace], compute_dGdp) are
no longer leaked in from integrating_GK_tests.jl, so the file errored with
`UndefVarError: `simple_linear_system` not defined`. Define the helpers it
uses inline, matching the self-contained pattern of the other Core files.

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

* Read integrator error estimate without the removed EEst field

OrdinaryDiffEqCore's ODEIntegrator no longer exposes an `EEst` field; the
scalar error estimate now lives on the controller cache
(`integrator.controller_cache.EEst`, surfaced there as `get_EEst`). Reading
`integrator.EEst` directly threw `FieldError: type ODEIntegrator has no field
EEst`, breaking `AdaptiveProbIntsUncertainty` (src/probints.jl, exercised by
the Core group's probints.jl) and the AD group's saving_tracker_tests.jl.

Add a dependency-free `_integrator_EEst` accessor that uses the `EEst` field
when present (older integrators / SDE integrators) and otherwise reads it off
the controller cache, keeping DiffEqCallbacks free of an OrdinaryDiffEqCore
dependency while supporting both layouts. Apply the same fallback in the AD
test.

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