Skip to content

Migrate to SciMLTesting v1.2 (off ReTestItems)#108

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

Migrate to SciMLTesting v1.2 (off ReTestItems)#108
ChrisRackauckas merged 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:sciml-testing-rollout

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

What

Migrates the test suite off TestItemRunner (@testitem blocks + @run_package_tests) to SciMLTesting v1.2's folder-discovery run_tests().

ReTestItems/TestItemRunner is the wrong parallelism model for SciML (we parallelize at the CI-matrix level per GROUP via the reusable grouped-tests.yml), it breaks on new Julia releases, and it causes upgrade churn. This removes it.

Changes

  • test/runtests.jlusing SciMLTesting; run_tests() (folder-discovery mode).
  • @testitem "name" tags=[:G] begin BODY end → a self-contained test/<name>.jl (or test/nopre/<name>.jl) running a plain @testset "name" begin BODY end. SciMLTesting runs each file inside its own @safetestset, so file-level isolation replaces @testitem's module isolation. Each file got explicit using CurveFit / using Test / the deps the body references (which @testitem used to provide implicitly).
  • test/test_groups.toml: the two CI matrix cells keep the same versions/os. The former tag-filter split (GROUP=All ran every @testitem except :nopre; GROUP=nopre ran only the :nopre-tagged Aqua item) maps to:
    • Core (1/lts/pre) — the top-level test/*.jl (all functional fits + the ExplicitImports check). All is renamed to Core because SciMLTesting reserves All for the Core+groups aggregate, so a literal All key would collide with that reserved name and look for a nonexistent test/All/ folder.
    • nopre (1/lts, in_all=false) — test/nopre/aqua.jl. Aqua is brittle on prereleases, so it stays off pre, exactly as before.
  • deps: drop TestItemRunner; add SciMLTesting + SafeTestsets to the test target and [compat]. Aqua moves into the new test/nopre/Project.toml sub-env.

This is behavior-preserving: the same tests run under each GROUP cell, with no assertion changes.

Verification

Ran locally on Julia 1.11:

  • GROUP=Core — all functional + ExplicitImports files green (Testing CurveFit tests passed).
  • GROUP=noprenopre/aqua.jl passes in its activated sub-env (Testing CurveFit tests passed).

Static-verified: every Project.toml/test_groups.toml parses via TOML.parsefile; every new test file + runtests.jl parses via Meta.parseall. Runic-clean.


Draft — please ignore until reviewed by @ChrisRackauckas.

🤖 Generated with Claude Code

Replace the TestItemRunner setup (`@testitem` blocks + `@run_package_tests`)
with SciMLTesting's folder-discovery `run_tests()`. Each `@testitem` becomes a
self-contained `test/<group>/<name>.jl` running a plain `@testset`, isolated by
SciMLTesting's per-file `@safetestset`.

- runtests.jl: `using SciMLTesting; run_tests()`.
- test_groups.toml: keep the two CI matrix cells with the same versions/os, but
  rename `All` -> `Core` (SciMLTesting reserves `All` for the Core+groups
  aggregate, so a literal `All` key collides) and keep `nopre` (in_all=false).
  GROUP=Core runs the top-level functional + ExplicitImports files on 1/lts/pre;
  GROUP=nopre runs test/nopre/aqua.jl on 1/lts. Same tests per cell as before.
- deps: drop TestItemRunner; add SciMLTesting + SafeTestsets to the test target
  and compat. Aqua moves into the test/nopre/ sub-env Project.toml.

Verified on Julia 1.11: `GROUP=Core` and `GROUP=nopre` both pass
(`Testing CurveFit tests passed`).

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 15, 2026 02:14
@ChrisRackauckas ChrisRackauckas merged commit fef62a6 into SciML:master Jun 15, 2026
6 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