From cead5d830f57c08218a079c9a9c6e92d42fb229c Mon Sep 17 00:00:00 2001 From: Chris Rackauckas Date: Thu, 25 Jun 2026 05:48:19 -0400 Subject: [PATCH 1/3] QA: run_qa v1.6 form + ExplicitImports Convert the hand-rolled test/qa/qa.jl to the SciMLTesting 1.6 run_qa form and enable the ExplicitImports check group. - qa.jl: replace the manual Aqua/JET testset (which carried two @test_broken placeholders) with run_qa(FiniteVolumeMethod1D; explicit_imports = true, ...). - The Aqua deps_compat finding (#84) is fixed at the source rather than marked broken: add SparseArrays = "1" to the root [compat]. Aqua test_all (incl. deps_compat) now passes. - The JET finding (#84) does not reproduce under run_qa's canonical config (mode = :typo, target_modules = (FiniteVolumeMethod1D,)); the original 4 reports were artifacts of target_defined_modules = true. JET.test_package now runs and passes, so no jet_broken is needed. - ExplicitImports: all six checks run. Four pass clean; two non-public names from other packages are ignored until they go public: all_qualified_accesses_are_public ignores AutoSpecialize (SciMLBase) and init (CommonSolve); all_explicit_imports_are_public ignores solve (CommonSolve, re-exported). All ignores are other-package non-public names, documented inline with their source package. - Drop ExplicitImports from the root [extras]/[targets].test and the test/ env, and remove the legacy test/explicit_imports.jl (its two checks are subsumed by the QA group's six). ExplicitImports is now a transitive dep via SciMLTesting. - test/qa/Project.toml: bump SciMLTesting compat to "1.6"; keep SafeTestsets (the folder-model @safetestset wrapper needs it as a direct dep of the group env) and Aqua/JET. Verified locally on Julia 1.10 against released SciMLTesting 1.6.0 via GROUP=QA runtests.jl: QA/qa.jl 18/18 pass, 0 fail/error/broken. Closes #84. Co-Authored-By: Chris Rackauckas Co-Authored-By: Claude Opus 4.8 (1M context) --- .gitignore | 1 + Project.toml | 5 ++--- test/Project.toml | 1 - test/explicit_imports.jl | 6 ------ test/qa/Project.toml | 2 +- test/qa/qa.jl | 35 +++++++++++++++++------------------ 6 files changed, 21 insertions(+), 29 deletions(-) delete mode 100644 test/explicit_imports.jl diff --git a/.gitignore b/.gitignore index eb3bd20..2878906 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /Manifest.toml /test/Manifest.toml +/test/qa/Manifest.toml /docs/build/ diff --git a/Project.toml b/Project.toml index 6f204bc..49a44c7 100644 --- a/Project.toml +++ b/Project.toml @@ -11,15 +11,14 @@ SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" [compat] CommonSolve = "0.2" -ExplicitImports = "1" PrecompileTools = "1" SciMLBase = "2.146, 3.1" +SparseArrays = "1" Test = "1" julia = "1.10" [extras] -ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [targets] -test = ["ExplicitImports", "Test"] +test = ["Test"] diff --git a/test/Project.toml b/test/Project.toml index 457b695..bac0c25 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -1,7 +1,6 @@ [deps] CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" DomainSets = "5b8099bc-c8ec-5219-889f-1d9e522a28bf" -ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" LinearSolve = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" MethodOfLines = "94925ecb-adb7-4558-8ed8-f975c56a0bf4" diff --git a/test/explicit_imports.jl b/test/explicit_imports.jl deleted file mode 100644 index 6d9e7ac..0000000 --- a/test/explicit_imports.jl +++ /dev/null @@ -1,6 +0,0 @@ -using ExplicitImports -using FiniteVolumeMethod1D -using Test - -@test check_no_implicit_imports(FiniteVolumeMethod1D) === nothing -@test check_no_stale_explicit_imports(FiniteVolumeMethod1D) === nothing diff --git a/test/qa/Project.toml b/test/qa/Project.toml index fd710c8..1f5f17f 100644 --- a/test/qa/Project.toml +++ b/test/qa/Project.toml @@ -13,6 +13,6 @@ FiniteVolumeMethod1D = {path = "../.."} Aqua = "0.8" JET = "0.9,0.10,0.11" SafeTestsets = "0.0.1, 0.1" -SciMLTesting = "1" +SciMLTesting = "1.6" Test = "1" julia = "1.10" diff --git a/test/qa/qa.jl b/test/qa/qa.jl index 680a68c..ea410d4 100644 --- a/test/qa/qa.jl +++ b/test/qa/qa.jl @@ -1,20 +1,19 @@ -using FiniteVolumeMethod1D -using Aqua +using SciMLTesting, FiniteVolumeMethod1D, Test using JET -using Test -@testset "Quality Assurance" begin - @testset "Aqua" begin - # All Aqua sub-checks pass except deps_compat, which is marked broken below. - Aqua.test_all(FiniteVolumeMethod1D; deps_compat = false) - # deps_compat fails: SparseArrays is a dep with no [compat] entry. - # See https://github.com/SciML/FiniteVolumeMethod1D.jl/issues/84 - @test_broken false # Aqua deps_compat: SparseArrays missing [compat] — see #84 - end - @testset "JET" begin - # JET.report_package reports 4 possible errors (Dirichlet/Neumann kwdef - # inner ctors and CommonSolve.init on the constructed ODEProblem). - # See https://github.com/SciML/FiniteVolumeMethod1D.jl/issues/84 - @test_broken false # JET: report_package errors — see #84 - end -end +run_qa( + FiniteVolumeMethod1D; + explicit_imports = true, + ei_kwargs = (; + # Other packages' not-yet-public names; ignore until they go public. + all_qualified_accesses_are_public = (; + ignore = ( + :AutoSpecialize, # SciMLBase.AutoSpecialize (specialization default) + :init, # CommonSolve.init (extended/forwarded here) + ), + ), + all_explicit_imports_are_public = (; + ignore = (:solve,), # CommonSolve.solve (re-exported) + ), + ), +) From 46bb4533d81d37702b67beea60a2f257d0fc50b5 Mon Sep 17 00:00:00 2001 From: Chris Rackauckas Date: Fri, 26 Jun 2026 15:29:20 -0400 Subject: [PATCH 2/3] QA: drop now-public EI ignores (SciMLTesting 1.7 + base-lib public APIs) SciMLTesting 1.7.0 runs the two public-API ExplicitImports checks (check_all_qualified_accesses_are_public and check_all_explicit_imports_are_public) only on Julia >= 1.11 and skips them on the lts. Combined with the base-lib public-API releases (SciMLBase 3.24.0, CommonSolve 0.2.9), the per-repo public-API ignore entries this PR carried are now redundant. Empty both public-API ignore-lists in test/qa/qa.jl: the previously ignored AutoSpecialize (SciMLBase), init (CommonSolve), and solve (CommonSolve) are all recognized as public on the registered releases, so run_qa(...; explicit_imports = true) passes with no ei_kwargs at all. Verified against registered releases (no dev of base libs; FVM dev'd from this working tree): - Julia 1.12 (public-API checks RUN): QA group 18/18 pass, 0 fail/ error/broken; resolved SciMLTesting 1.7.0, SciMLBase 3.24.0, CommonSolve 0.2.9, ExplicitImports 1.15.0. - Julia 1.10 lts (public-API checks skipped by SciMLTesting 1.7): QA group 16/16 pass, 0 fail/error/broken. No names needed restoring; the ignore-lists are now empty. Co-Authored-By: Chris Rackauckas Co-Authored-By: Claude Opus 4.8 (1M context) --- test/qa/qa.jl | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/test/qa/qa.jl b/test/qa/qa.jl index ea410d4..a1f1b4d 100644 --- a/test/qa/qa.jl +++ b/test/qa/qa.jl @@ -4,16 +4,4 @@ using JET run_qa( FiniteVolumeMethod1D; explicit_imports = true, - ei_kwargs = (; - # Other packages' not-yet-public names; ignore until they go public. - all_qualified_accesses_are_public = (; - ignore = ( - :AutoSpecialize, # SciMLBase.AutoSpecialize (specialization default) - :init, # CommonSolve.init (extended/forwarded here) - ), - ), - all_explicit_imports_are_public = (; - ignore = (:solve,), # CommonSolve.solve (re-exported) - ), - ), ) From 467ec2dc4b84abbe99ccd16a6f9deb23bbee2b12 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Fri, 26 Jun 2026 23:58:19 -0400 Subject: [PATCH 3/3] QA: pin SciMLTesting compat floor to 1.7 (public-API EI gate) The two public-API ExplicitImports checks (check_all_qualified_accesses_are_public, check_all_explicit_imports_are_public) are gated to Julia >= 1.11 only from SciMLTesting 1.7.0. With the now-empty public-API ignore-lists in qa.jl, the QA group relies on that gate so the LTS (1.10) does not spuriously flag public-backported names. Raise the qa-env compat floor from "1.6" to "1.7" so the resolved SciMLTesting always carries the gate. Verified against registered releases (FVM dev'd via [sources], no dev of base libs): - Julia 1.12 (public-API checks RUN, no ignores): QA group 18/18 pass, 0 fail/error/broken. Resolved SciMLBase 3.27.0, SciMLTesting 1.7.0, CommonSolve 0.2.9, ExplicitImports 1.15.0, JET 0.11.5, Aqua 0.8.16. - Julia 1.10 lts (public-API checks skipped by the 1.7 gate): QA group 16/16 pass, 0 fail/error/broken (the 2-test delta is exactly the two gated public-API checks). Co-Authored-By: Chris Rackauckas Co-Authored-By: Claude Opus 4.8 (1M context) --- test/qa/Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/qa/Project.toml b/test/qa/Project.toml index 1f5f17f..905689c 100644 --- a/test/qa/Project.toml +++ b/test/qa/Project.toml @@ -13,6 +13,6 @@ FiniteVolumeMethod1D = {path = "../.."} Aqua = "0.8" JET = "0.9,0.10,0.11" SafeTestsets = "0.0.1, 0.1" -SciMLTesting = "1.6" +SciMLTesting = "1.7" Test = "1" julia = "1.10"