Skip to content

QA: run_qa v1.6 form + ExplicitImports#177

Merged
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:qa-run_qa-v1.6
Jun 27, 2026
Merged

QA: run_qa v1.6 form + ExplicitImports#177
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:qa-run_qa-v1.6

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Ignore until reviewed by @ChrisRackauckas.

Brings PreallocationTools' QA onto the SciMLTesting 1.6.0 run_qa v1.6 form, with ExplicitImports enabled, moved into a dedicated qa group sub-env (test/qa/) per the folder model.

What changed

  • test/qa/qa.jl (new): replaces the two hand-rolled QA files (test/qa.jl raw Aqua sub-checks + test/explicit_imports.jl raw ExplicitImports). Now:
    run_qa(
        PreallocationTools;
        explicit_imports = true,
        aqua_kwargs = (; ambiguities = (; recursive = false)),
        ei_kwargs = (; all_qualified_accesses_are_public = (; ignore = (:depwarn, :parameterless_type, :restructure))),
    )
    • Preserves the non-default test_ambiguities(recursive = false) tweak via aqua_kwargs.
    • Aqua now runs the full test_all (the old file ran a manual 7-check subset) and all sub-checks pass.
  • test/qa/Project.toml (new): QA sub-env. PreallocationTools via [sources] = ../.., Aqua kept (its ambiguities sub-check spawns a child process that needs Aqua as a direct dep), SciMLTesting = "1.6", Test, SafeTestsets. ExplicitImports dropped here — it is transitive via SciMLTesting.
  • test/runtests.jl: move QA out of the core thunk into the qa = (; env, body) group.
  • test/test_groups.toml: add [QA] (versions = ["lts", "1"]).
  • root Project.toml: drop Aqua and ExplicitImports from [compat]/[extras]/[targets].test (now QA-sub-env-only). Required so Aqua.test_deps_compat's extras sub-check stays green.

ExplicitImports findings (6 checks)

  • no_implicit_imports, no_stale_explicit_imports, all_explicit_imports_via_owners, all_qualified_accesses_via_owners, all_explicit_imports_are_publicpass clean.
  • all_qualified_accesses_are_public — flags qualified accesses to non-public names of other packages, ignored via ei_kwargs (each documented with its source):
    • :depwarnBase.depwarn (src/PreallocationTools.jl:128)
    • :parameterless_typeArrayInterface.parameterless_type (:90)
    • :restructureArrayInterface.restructure (:177)

No stale/implicit-import findings, no @test_broken markers, no JET (none in the prior QA).

Verification (local, vs released SciMLTesting 1.6.0; no dev-from-branch)

QA group 17/17 pass, 0 fail / 0 error / 0 broken on Julia 1.10 (lts), 1.11, and 1.12. The full GROUP=QA harness path (Pkg.test) also passes (Testing PreallocationTools tests passed).

🤖 Generated with Claude Code

ChrisRackauckas and others added 2 commits June 25, 2026 06:34
Convert the hand-rolled QA (test/qa.jl raw Aqua sub-checks +
test/explicit_imports.jl raw ExplicitImports) onto SciMLTesting 1.6.0
`run_qa`, moved into a dedicated `qa` group sub-env (test/qa/) per the
folder model, with ExplicitImports enabled.

- test/qa/qa.jl: run_qa(PreallocationTools; explicit_imports = true,
  aqua_kwargs = (; ambiguities = (; recursive = false))) preserving the
  non-default `test_ambiguities(recursive = false)` tweak. Aqua now runs
  the full test_all (was a manual 7-check subset) and all checks pass.
- ExplicitImports: 5/6 checks pass clean. all_qualified_accesses_are_public
  flags qualified accesses to non-public names of other packages
  (Base.depwarn, ArrayInterface.parameterless_type,
  ArrayInterface.restructure); ignored via ei_kwargs (documented per
  source pkg). No stale/implicit-import findings, no broken markers, no JET.
- test/qa/Project.toml: QA sub-env (PreallocationTools via [sources],
  Aqua kept for the ambiguities child-proc, SciMLTesting "1.6", Test,
  SafeTestsets). ExplicitImports dropped (transitive via SciMLTesting).
- runtests.jl: move QA out of `core` into the `qa` group; test_groups.toml
  adds [QA] (lts, 1).
- root Project.toml: drop Aqua + ExplicitImports from [compat]/[extras]/
  [targets].test (now QA-sub-env-only).

Verified locally vs released SciMLTesting 1.6.0 (no dev-from-branch):
QA group 17/17 pass, 0 fail/error/broken on Julia 1.10/1.11/1.12, and the
full GROUP=QA harness path (Pkg.test) passes.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
When QA runs alongside Core (e.g. the Windows lanes have no dedicated QA
lane, so run_tests folds QA into the Core run), the core safetestsets have
already loaded ForwardDiff and SparseConnectivityTracer into the session.
ExplicitImports then analyzes the loaded extension modules, surfacing three
findings that the dedicated ubuntu QA lane never saw (its qa env has no
weakdeps, so the extensions stay unloaded):

  - no_implicit_imports: PreallocationToolsForwardDiffExt's `using` of its
    parent + weakdeps (used qualified).
  - all_qualified_accesses_are_public: the ext extends PreallocationTools'
    own non-exported internals across the package/extension boundary and
    uses non-public-but-stable ForwardDiff names.
  - all_explicit_imports_are_public: PreallocationToolsSparseConnectivity-
    TracerExt imports the non-public AbstractTracer/Dual.

Extend the ei_kwargs ignore lists (each name documented with its source
package) so these legitimate extension-module uses are accepted. Verified
17/17 QA on Julia 1.10/1.11/1.12 with the extensions loaded and on the
dedicated QA env with them absent, against released SciMLTesting 1.6.0.

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:06
@ChrisRackauckas ChrisRackauckas merged commit f7c8d8e into SciML:master Jun 27, 2026
17 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