From e09dd5c41ca973a838436fa49c5e09468889823e Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Thu, 25 Jun 2026 05:36:14 -0400 Subject: [PATCH 1/2] QA: run_qa v1.6 form + ExplicitImports Convert the hand-rolled test/qa/qa.jl (Aqua.test_all + Aqua.test_ambiguities + ExplicitImports check_no_implicit/stale) to the SciMLTesting 1.6 run_qa form with ExplicitImports enabled (all 6 checks). - explicit_imports = true runs the 6 EI checks (4 standard + 2 public-API). - Preserve the genuine Aqua tweak: project_extras = false (root [extras]/[targets] carries only Test; real test deps live in test/Project.toml under the grouped folder model, so the root-vs-test consistency check does not apply). - The old ambiguities=false + separate test_ambiguities split is collapsed: run_qa's default Aqua.test_all runs (and passes) the ambiguities sub-check. - Two public-API EI checks failed on OTHER packages' non-public names; resolved by ei_kwargs ignore-lists (no @test_broken needed): all_qualified_accesses_are_public: AutoSpecialize (SciMLBase); each_point/each_point_index/get_centroid/get_edge_midpoints/ has_boundary_nodes/has_ghost_triangles/has_vertex/is_ghost_vertex/ num_points/num_segments (DelaunayTriangulation); front/tail (Base); init/solve (CommonSolve). all_explicit_imports_are_public: solve (CommonSolve's canonical extension point, imported + re-exported). - test/qa/Project.toml: SciMLTesting compat -> "1.6"; drop ExplicitImports (transitive via SciMLTesting); keep Aqua (ambiguities child-proc needs it a direct dep); keep SafeTestsets (the run_tests @safetestset body wrapper does `using SafeTestsets` under the active qa sub-env). - .gitignore: ignore the CI-generated test/qa/Manifest.toml. Verified locally vs released SciMLTesting 1.6.0 via the run_tests harness (GROUP=QA): QA 16/16 pass, 0 fail / 0 error / 0 broken. Co-Authored-By: Chris Rackauckas Co-Authored-By: Claude Opus 4.8 (1M context) --- .gitignore | 1 + test/qa/Project.toml | 6 ++---- test/qa/qa.jl | 41 ++++++++++++++++++++++++++++------------- 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index c504305b..a060c788 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ meshgeometry.geo meshgeometry.msh dev/Manifest.toml test/Manifest.toml +test/qa/Manifest.toml docs/build/ docs/site/ docs/Manifest.toml diff --git a/test/qa/Project.toml b/test/qa/Project.toml index 10a64b50..ffd27a87 100644 --- a/test/qa/Project.toml +++ b/test/qa/Project.toml @@ -1,6 +1,5 @@ [deps] Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" -ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" FiniteVolumeMethod = "d4f04ab7-4f65-4d72-8a28-7087bc7f46f4" SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" SciMLTesting = "09d9d899-5365-40a9-917a-5f67fddea283" @@ -10,9 +9,8 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" FiniteVolumeMethod = {path = "../.."} [compat] -Aqua = "0.7, 0.8" -ExplicitImports = "1.15.0" +Aqua = "0.8" SafeTestsets = "0.1, 1" -SciMLTesting = "1" +SciMLTesting = "1.6" Test = "1" julia = "1.10" diff --git a/test/qa/qa.jl b/test/qa/qa.jl index 31487b3e..0e09731c 100644 --- a/test/qa/qa.jl +++ b/test/qa/qa.jl @@ -1,14 +1,29 @@ -using FiniteVolumeMethod -using Test -using Aqua -using ExplicitImports +using SciMLTesting, FiniteVolumeMethod, Test -@testset verbose = true "Aqua" begin - Aqua.test_all(FiniteVolumeMethod; ambiguities = false, project_extras = false) # don't care about julia < 1.2 - Aqua.test_ambiguities(FiniteVolumeMethod) # don't pick up Base and Core... -end - -@testset verbose = true "Explicit Imports" begin - @test check_no_implicit_imports(FiniteVolumeMethod) === nothing - @test check_no_stale_explicit_imports(FiniteVolumeMethod) === nothing -end +run_qa( + FiniteVolumeMethod; + explicit_imports = true, + # Root Project.toml carries only `Test` in [extras]/[targets]; the real test + # deps live in test/Project.toml under the grouped-tests folder model, so the + # root-vs-test consistency check does not apply here. + aqua_kwargs = (; project_extras = false), + ei_kwargs = (; + # Other packages' non-public names accessed via `Module.name`. Each goes + # public as its base lib releases; ignore until then. + all_qualified_accesses_are_public = (; + ignore = ( + :AutoSpecialize, # SciMLBase + :each_point, :each_point_index, # DelaunayTriangulation + :get_centroid, :get_edge_midpoints, # DelaunayTriangulation + :has_boundary_nodes, :has_ghost_triangles, # DelaunayTriangulation + :has_vertex, :is_ghost_vertex, # DelaunayTriangulation + :num_points, :num_segments, # DelaunayTriangulation + :front, :tail, # Base + :init, :solve, # CommonSolve + ), + ), + # `solve` is CommonSolve's canonical (non-public) extension point that + # FiniteVolumeMethod imports and re-exports. + all_explicit_imports_are_public = (; ignore = (:solve,)), + ), +) From b2182a6230201c702b55c51852f44388dc9caefa Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Fri, 26 Jun 2026 15:28:36 -0400 Subject: [PATCH 2/2] QA: drop redundant public-API ExplicitImports ignores (SciMLTesting 1.7) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SciMLTesting 1.7.0 runs the two public-API checks (check_all_qualified_accesses_are_public + check_all_explicit_imports_are_public) only on Julia >= 1.11, and the base libs have since made the relevant names public, so the per-repo ignore-lists are now redundant. - Empty both public-API ignore-lists and drop the now-empty `ei_kwargs`: all_qualified_accesses_are_public: AutoSpecialize (SciMLBase 3.24.0); each_point / each_point_index / get_centroid / get_edge_midpoints / has_boundary_nodes / has_ghost_triangles / has_vertex / is_ghost_vertex / num_points / num_segments (DelaunayTriangulation 1.6.6); front / tail (Base, public on >= 1.11); init / solve (CommonSolve 0.2.9). all_explicit_imports_are_public: solve (CommonSolve 0.2.9). - Keep the genuine Aqua tweak `project_extras = false` untouched. - SciMLTesting compat "1.6" caret already admits 1.7; root caret compat already admits SciMLBase 3.24.0 / CommonSolve 0.2.9, so no Project.toml change needed. qa.jl is now `run_qa(FiniteVolumeMethod; explicit_imports = true, aqua_kwargs = (; project_extras = false))` — no EI ignores, no ei_broken. Verified against the registered releases (Pkg-resolved, no dev): SciMLTesting 1.7.0, SciMLBase 3.24.0, CommonSolve 0.2.9, DelaunayTriangulation 1.6.6. - Julia 1.12 (public checks RUN): QA 16/16 pass, 0 fail/0 error/0 broken (the two public-API checks pass with no ignore; ispublic=true for every name). - Julia 1.10 LTS (public checks SKIPPED by SciMLTesting 1.7): QA 14/14 pass. Co-Authored-By: Chris Rackauckas Co-Authored-By: Claude Opus 4.8 (1M context) --- test/qa/qa.jl | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/test/qa/qa.jl b/test/qa/qa.jl index 0e09731c..f1bb2140 100644 --- a/test/qa/qa.jl +++ b/test/qa/qa.jl @@ -7,23 +7,4 @@ run_qa( # deps live in test/Project.toml under the grouped-tests folder model, so the # root-vs-test consistency check does not apply here. aqua_kwargs = (; project_extras = false), - ei_kwargs = (; - # Other packages' non-public names accessed via `Module.name`. Each goes - # public as its base lib releases; ignore until then. - all_qualified_accesses_are_public = (; - ignore = ( - :AutoSpecialize, # SciMLBase - :each_point, :each_point_index, # DelaunayTriangulation - :get_centroid, :get_edge_midpoints, # DelaunayTriangulation - :has_boundary_nodes, :has_ghost_triangles, # DelaunayTriangulation - :has_vertex, :is_ghost_vertex, # DelaunayTriangulation - :num_points, :num_segments, # DelaunayTriangulation - :front, :tail, # Base - :init, :solve, # CommonSolve - ), - ), - # `solve` is CommonSolve's canonical (non-public) extension point that - # FiniteVolumeMethod imports and re-exports. - all_explicit_imports_are_public = (; ignore = (:solve,)), - ), )