QA: run_qa v1.6 form + ExplicitImports#96
Conversation
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 (SciML#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 (SciML#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 SciML#84. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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 <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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 <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
8521751 to
467ec2d
Compare
EI cleanup finished against the live make-public releasesRe-verified this PR's ExplicitImports cleanup against the now-registered public-API releases (SciMLBase 3.27.0, CommonSolve 0.2.9, SciMLTesting 1.7.0), no dev of base libs (FVM dev'd via Source migration: none needed. Public-API ignore-lists: already emptied (the entire
No names needed restoring. Compat: bumped the qa-env floor Verification (registered releases, Pkg resolve, no dev of base libs):
qaFullyClean: no EI ignore-lists and no Rebased onto Ignore until reviewed by @ChrisRackauckas. |
Ignore until reviewed by @ChrisRackauckas.
Brings this repo's QA onto the SciMLTesting 1.6
run_qaform and enables the ExplicitImports check group. Converts the hand-rolledtest/qa/qa.jl(which carried two@test_brokenplaceholders) to a single declarativerun_qacall.What changed
test/qa/qa.jl: manual Aqua/JET@testset->run_qa(FiniteVolumeMethod1D; explicit_imports = true, ei_kwargs = ...).deps_compat(QA: Aqua/JET findings marked @test_broken pending fix #84): fixed at the source rather than marked broken — addedSparseArrays = "1"to the root[compat].Aqua.test_all(incl.deps_compat) now passes.run_qa's canonical config (mode = :typo,target_modules = (FiniteVolumeMethod1D,)). The original 4 reports were artifacts oftarget_defined_modules = true(whole-world analysis).JET.test_packagenow runs and passes, so nojet_brokenis needed.test/explicit_imports.jlremoved + ExplicitImports dropped from root[extras]/[targets].testand thetest/env. Its two checks are subsumed by the QA group's six; ExplicitImports is now transitive via SciMLTesting.test/qa/Project.toml: SciMLTesting compat"1"->"1.6". SafeTestsets kept (the folder-model@safetestsetwrapper needs it as a direct dep of the group env); Aqua/JET kept.ExplicitImports findings summary
All 6 checks run. 4 pass clean (
no_implicit_imports,no_stale_explicit_imports,all_explicit_imports_via_owners,all_qualified_accesses_via_owners). 2 carry documented ignore-lists for other packages' not-yet-public names (no own-package findings, nothing broken):all_qualified_accesses_are_publicAutoSpecializesolve.jlall_qualified_accesses_are_publicinitCommonSolve.initextended/forwardedall_explicit_imports_are_publicsolveThese ignores can be dropped once the upstream packages mark those names public.
Verification
Run locally on Julia 1.10 against released SciMLTesting 1.6.0 (Pkg resolves it; no dev-from-branch) via the exact CI path (
GROUP=QAthroughtest/runtests.jl):18/18 pass, 0 fail / 0 error / 0 broken (11 Aqua sub-checks + 1 JET + 6 ExplicitImports).
Closes #84.
🤖 Generated with Claude Code