From 4ebb11304a75bff29080cdf5fc4033c6ab3ba8b4 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Mon, 15 Jun 2026 10:10:56 -0400 Subject: [PATCH 1/2] Fix QA test group harness wiring for SciMLTesting v1.2 The v1.2 conversion (#384) placed the QA group inside the `groups` Dict passed to `run_tests`. SciMLTesting treats "QA" as a reserved group that must be supplied via the dedicated `qa` keyword argument; with `qa` unset, requesting `GROUP=QA` threw ArgumentError: run_tests: GROUP="QA" was requested but no `qa` body was provided Move the QA spec out of `groups` and into the `qa` keyword. Also add SafeTestsets and SciMLTesting (with compat) to test/qa/Project.toml. The QA body runs in the activated qa env and is wrapped in @safetestset, so that env must provide both packages, matching every other group env (test/Project.toml, test/Autodiff, test/Downstream all declare them). Verified locally on Julia 1.10 via the faithful CI path (GROUP=QA Pkg.test("ComponentArrays")): QA group 22/22 passed. Co-Authored-By: Chris Rackauckas Co-Authored-By: Claude Opus 4.8 (1M context) --- test/qa/Project.toml | 5 +++++ test/runtests.jl | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/test/qa/Project.toml b/test/qa/Project.toml index 30f51b5c..3a8b4b44 100644 --- a/test/qa/Project.toml +++ b/test/qa/Project.toml @@ -2,8 +2,13 @@ Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" ComponentArrays = "b0b7db55-cfe3-40fc-9ded-d10e2dbeff66" JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" +SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" +SciMLTesting = "09d9d899-5365-40a9-917a-5f67fddea283" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [compat] Aqua = "0.8.14" JET = "0.9, 0.10, 0.11" +SafeTestsets = "0.0.1, 0.1" +SciMLTesting = "1" +Test = "1" diff --git a/test/runtests.jl b/test/runtests.jl index 432028a5..79fac949 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -19,10 +19,10 @@ run_tests(; env = joinpath(@__DIR__, "Reactant"), body = joinpath(@__DIR__, "Reactant", "reactant_tests.jl"), ), - "QA" => (; - env = joinpath(@__DIR__, "qa"), - body = joinpath(@__DIR__, "qa", "qa.jl"), - ), + ), + qa = (; + env = joinpath(@__DIR__, "qa"), + body = joinpath(@__DIR__, "qa", "qa.jl"), ), all = ["Core"], ) From 8d4602709fa112bfb810b73a70fa1362597f8905 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Tue, 16 Jun 2026 05:15:10 -0400 Subject: [PATCH 2/2] Restructure Core/QA to SciMLTesting v1.2 folder-discovery MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the explicit-args run_tests(core=..., groups=..., qa=..., all=["Core"]) with pure folder-discovery: test/runtests.jl is now just using SciMLTesting run_tests() Behavior is preserved exactly: - Core: delete test/core_tests.jl. The 19 self-contained top-level test/*.jl files (each begins with include("shared/test_setup.jl")) are discovered as Core, each run in its own isolated @safetestset (Core/) — identical isolation to what core_tests.jl did manually. Local Core run matches the pre-change aggregate exactly: 459 Pass, 9 Broken, 468 Total, each file once (no double-run). - QA: delete test/qa/qa.jl so test/qa/{aqua_tests,jet_tests}.jl are discovered directly (qa.jl was a bare include-aggregator; both files are already self-contained with their own using Aqua/JET/ComponentArrays/Test, so no shared usings needed migrating). Each runs once: QA/aqua_tests.jl, QA/jet_tests.jl. - All = Core only: the old all=["Core"] excluded Autodiff/GPU/Downstream/ Reactant from the All lane. In discovery mode this is in_all = false on each of those four groups (QA is auto-excluded from All). Verified GROUP=All runs the 19 Core testsets only — no Autodiff/GPU/Downstream/Reactant/QA. test/shared/ is a helper folder (not in test_groups.toml, a subdir not a top-level *.jl) so discovery auto-excludes it. Existing per-group versions are unchanged. GROUP=Autodiff still dispatches its sub-env (sanity-checked). Co-Authored-By: Chris Rackauckas Co-Authored-By: Claude Opus 4.8 (1M context) --- test/core_tests.jl | 77 ------------------------------------------- test/qa/qa.jl | 3 -- test/runtests.jl | 27 +-------------- test/test_groups.toml | 4 +++ 4 files changed, 5 insertions(+), 106 deletions(-) delete mode 100644 test/core_tests.jl delete mode 100644 test/qa/qa.jl diff --git a/test/core_tests.jl b/test/core_tests.jl deleted file mode 100644 index 196fa159..00000000 --- a/test/core_tests.jl +++ /dev/null @@ -1,77 +0,0 @@ -using SafeTestsets - -@safetestset "Allocations and Inference" begin - include("allocations_inference_tests.jl") -end - -@safetestset "Utilities" begin - include("utilities_tests.jl") -end - -@safetestset "Construction" begin - include("construction_tests.jl") -end - -@safetestset "Attributes" begin - include("attributes_tests.jl") -end - -@safetestset "Get" begin - include("get_tests.jl") -end - -@safetestset "Set" begin - include("set_tests.jl") -end - -@safetestset "Properties" begin - include("properties_tests.jl") -end - -@safetestset "Component Index" begin - include("component_index_tests.jl") -end - -@safetestset "Similar" begin - include("similar_tests.jl") -end - -@safetestset "Copy" begin - include("copy_tests.jl") -end - -@safetestset "Convert" begin - include("convert_tests.jl") -end - -@safetestset "Broadcasting" begin - include("broadcasting_tests.jl") -end - -@safetestset "Math" begin - include("math_tests.jl") -end - -@safetestset "Static Unpack" begin - include("static_unpack_tests.jl") -end - -@safetestset "Plot Utilities" begin - include("plot_utilities_tests.jl") -end - -@safetestset "Uncategorized Issues" begin - include("uncategorized_issues_tests.jl") -end - -@safetestset "axpy! / axpby!" begin - include("axpy_axpby_tests.jl") -end - -@safetestset "Empty NamedTuple" begin - include("empty_namedtuple_tests.jl") -end - -@safetestset "Functors" begin - include("functors_tests.jl") -end diff --git a/test/qa/qa.jl b/test/qa/qa.jl deleted file mode 100644 index cc79ef25..00000000 --- a/test/qa/qa.jl +++ /dev/null @@ -1,3 +0,0 @@ -# QA group entry: runs Aqua and JET checks (deps in test/qa/Project.toml). -include("aqua_tests.jl") -include("jet_tests.jl") diff --git a/test/runtests.jl b/test/runtests.jl index 79fac949..80ba0993 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,28 +1,3 @@ using SciMLTesting -run_tests(; - core = joinpath(@__DIR__, "core_tests.jl"), - groups = Dict( - "Autodiff" => (; - env = joinpath(@__DIR__, "Autodiff"), - body = joinpath(@__DIR__, "Autodiff", "autodiff_tests.jl"), - ), - "GPU" => (; - env = joinpath(@__DIR__, "GPU"), - body = joinpath(@__DIR__, "GPU", "gpu_tests.jl"), - ), - "Downstream" => (; - env = joinpath(@__DIR__, "Downstream"), - body = joinpath(@__DIR__, "Downstream", "diffeq_tests.jl"), - ), - "Reactant" => (; - env = joinpath(@__DIR__, "Reactant"), - body = joinpath(@__DIR__, "Reactant", "reactant_tests.jl"), - ), - ), - qa = (; - env = joinpath(@__DIR__, "qa"), - body = joinpath(@__DIR__, "qa", "qa.jl"), - ), - all = ["Core"], -) +run_tests() diff --git a/test/test_groups.toml b/test/test_groups.toml index bad7f20a..78d669d0 100644 --- a/test/test_groups.toml +++ b/test/test_groups.toml @@ -3,15 +3,19 @@ versions = ["lts", "1", "pre"] [Autodiff] versions = ["lts", "1", "pre"] +in_all = false [GPU] versions = ["lts", "1", "pre"] +in_all = false [Downstream] versions = ["lts", "1"] +in_all = false [Reactant] versions = ["lts", "1"] +in_all = false [QA] versions = ["lts", "1"]