Skip to content

QA: run_qa v1.6 form + ExplicitImports#78

Merged
ChrisRackauckas merged 1 commit into
SciML:mainfrom
ChrisRackauckas-Claude:qa-run_qa-v1.6-explicit-imports
Jun 27, 2026
Merged

QA: run_qa v1.6 form + ExplicitImports#78
ChrisRackauckas merged 1 commit into
SciML:mainfrom
ChrisRackauckas-Claude:qa-run_qa-v1.6-explicit-imports

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Please ignore until reviewed by @ChrisRackauckas.

Brings this repo's QA onto the SciMLTesting 1.6.0 run_qa form with ExplicitImports enabled.

What changed

  • Replaced the hand-rolled test/qa/{aqua,explicit_imports,runtests}.jl with a single run_qa(DataInterpolationsND; explicit_imports = true) call in test/qa/qa.jl. Aqua + ExplicitImports come from SciMLTesting's own deps.
  • Kept the bespoke JET targeted analysis (report_call / report_opt on the public entry points) as test/qa/jet.jl, included from qa.jl. It is not routed through run_qa's JET.test_package path — see below.
  • test/runtests.jl: QA group body now points at qa/qa.jl.
  • test/qa/Project.toml: SciMLTesting compat -> "1.6"; dropped ExplicitImports (transitive via SciMLTesting) and SafeTestsets (unused in the new qa.jl); kept Aqua a direct dep and kept JET (see below).

ExplicitImports findings (6 checks)

  • no_implicit_imports, no_stale_explicit_imports, all_explicit_imports_via_owners, all_qualified_accesses_via_owners, all_qualified_accesses_are_public: pass clean — src already imports everything explicitly via using X: ....
  • all_explicit_imports_are_public: flags @adapt_structure, a non-public (un-public-declared) macro of Adapt that src genuinely uses (@adapt_structure NDInterpolation). Ignored via ei_kwargs = (; all_explicit_imports_are_public = (; ignore = (Symbol("@adapt_structure"),))), documented in qa.jl. Goes away once Adapt marks the macro public.

No aqua_broken / jet_broken / ei_broken are needed — there are no tracked-broken findings to preserve.

Why JET stays targeted (not via run_qa)

run_qa's only JET path is JET.test_package(pkg; mode = :typo). On this package that hard-fails with a single toplevel "error" that is a JuliaSyntax parentheses warning on the using EllipsisNotation: EllipsisNotation, (..) import (the (..) parens), which typo-mode promotes to a toplevel error. That is a tooling artifact, not a code defect (and the reason this repo never used test_package). Marking it jet_broken would suppress a non-bug and never auto-clear, so JET keeps the existing targeted report_call/report_opt coverage of the public entry points.

Why Aqua stays a direct dep

Aqua.test_all runs the ambiguities sub-check via a child process that does import Aqua. With Aqua only transitive (via SciMLTesting), that child process fails with "Package Aqua not found in current path" and the Method ambiguity test errors. Keeping Aqua a direct dep of the QA sub-env fixes it.

Verification

Ran the QA group against released SciMLTesting 1.6.0 (Pkg resolves it; no dev-from-branch) on Julia 1.10, 1.11, 1.12 via GROUP=QA Pkg.test:

Test Summary: | Pass  Total
QA            |   29     29     0 fail / 0 error / 0 broken

(Aqua 8 + ExplicitImports 6 + JET static 9 + JET opt 3 + remaining Aqua/project checks = 29.)

🤖 Generated with Claude Code

Replace the hand-rolled test/qa/{aqua,explicit_imports,runtests}.jl with a
single run_qa(DataInterpolationsND; explicit_imports = true) call (Aqua +
ExplicitImports come from SciMLTesting's own deps). The bespoke JET targeted
analysis (report_call/report_opt on the public entry points) is kept as
test/qa/jet.jl: run_qa's JET.test_package typo-mode path false-fails on the
`using EllipsisNotation: EllipsisNotation, (..)` import (a JuliaSyntax
parentheses warning promoted to a toplevel error), so JET stays targeted.

ExplicitImports: 5/6 checks pass clean; all_explicit_imports_are_public flags
Adapt's non-public `@adapt_structure` macro, ignored via ei_kwargs (documented).

test/qa/Project.toml: SciMLTesting compat -> "1.6"; keep Aqua a direct dep
(Aqua.test_ambiguities spawns a child process that `import Aqua`, which needs
Aqua resolvable in the active project, not just transitively via SciMLTesting);
keep JET (the targeted analysis loads it); drop ExplicitImports (transitive)
and SafeTestsets (unused in the new qa.jl).

Verified locally against released SciMLTesting 1.6.0 on Julia 1.10/1.11/1.12:
QA group 29/29 pass, 0 fail/error/broken.

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 27, 2026 13:07
@ChrisRackauckas ChrisRackauckas merged commit 519c87f into SciML:main Jun 27, 2026
13 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