From 7afd5b49e06fa3ea802c877932e8079ef964922c Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Thu, 25 Jun 2026 05:51:10 -0400 Subject: [PATCH] QA: run_qa v1.6 form + ExplicitImports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a `test/qa` QA group built on SciMLTesting 1.6.0's `run_qa`, wired via the run_tests folder model (qa = (; env, body) + [QA] in test_groups.toml). The group runs Aqua (test_all), JET (auto-detected via `using JET`, test_package mode :typo), and the six ExplicitImports checks. ExplicitImports findings (explicit_imports = true), all resolved to 0 hard fail / 0 broken: - no_implicit_imports: made the four implicit names explicit in src — `using FunctionWrappers: FunctionWrappers` and `using PrecompileTools: @compile_workload, @setup_workload`. - all_qualified_accesses_are_public: ignore `Base.tail`, `FunctionWrappers.FunctionWrapper`, and `TruncatedStacktraces.@truncate_stacktrace` — long-standing core API of those modules that predates the `public` keyword. - the other four EI checks pass unmodified. Because src now explicit-imports only PrecompileTools' macros, bump the PrecompileTools compat floor to 1.1 (first self-contained-macro release) so the downgrade lane does not hit an UndefVarError on the bare module name. Aqua deps_compat surfaced a missing `Test` compat entry (Test is in [extras] without a [compat] bound); add `Test = "1"` to the root [compat]. Verified locally against released SciMLTesting 1.6.0 (no dev-from-branch): QA group 18/18 pass on Julia 1.10 (lts) and 1.11; Core 58/58; package loads and precompiles at the downgrade floors (PrecompileTools 1.1.0, FunctionWrappers 1.1.2, TruncatedStacktraces 1.1.0). Co-Authored-By: Chris Rackauckas Co-Authored-By: Claude Opus 4.8 (1M context) --- Project.toml | 3 ++- src/FunctionWrappersWrappers.jl | 4 ++-- test/qa/Project.toml | 18 ++++++++++++++++++ test/qa/qa.jl | 17 +++++++++++++++++ test/runtests.jl | 1 + test/test_groups.toml | 3 +++ 6 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 test/qa/Project.toml create mode 100644 test/qa/qa.jl diff --git a/Project.toml b/Project.toml index f139297..711883f 100644 --- a/Project.toml +++ b/Project.toml @@ -22,9 +22,10 @@ Enzyme = "0.13" EnzymeCore = "0.8" FunctionWrappers = "1.1.2" Mooncake = "0.5" -PrecompileTools = "1" +PrecompileTools = "1.1" SafeTestsets = "0.1, 1" SciMLTesting = "1" +Test = "1" TruncatedStacktraces = "1.1" julia = "1.10" diff --git a/src/FunctionWrappersWrappers.jl b/src/FunctionWrappersWrappers.jl index 8b5ef0a..a99d624 100644 --- a/src/FunctionWrappersWrappers.jl +++ b/src/FunctionWrappersWrappers.jl @@ -1,6 +1,6 @@ module FunctionWrappersWrappers -using FunctionWrappers +using FunctionWrappers: FunctionWrappers import TruncatedStacktraces export FunctionWrappersWrapper, unwrap, wrapped_signatures, wrapped_return_types @@ -303,7 +303,7 @@ end # Precompilation # ============================================================================ -using PrecompileTools +using PrecompileTools: @compile_workload, @setup_workload @setup_workload begin @compile_workload begin diff --git a/test/qa/Project.toml b/test/qa/Project.toml new file mode 100644 index 0000000..754f8b8 --- /dev/null +++ b/test/qa/Project.toml @@ -0,0 +1,18 @@ +[deps] +Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" +FunctionWrappersWrappers = "77dc65aa-8811-40c2-897b-53d922fa7daf" +JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" +SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" +SciMLTesting = "09d9d899-5365-40a9-917a-5f67fddea283" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[sources] +FunctionWrappersWrappers = {path = "../.."} + +[compat] +Aqua = "0.8" +JET = "0.9, 0.10, 0.11" +SafeTestsets = "0.0.1, 0.1, 1" +SciMLTesting = "1.6" +Test = "1" +julia = "1.10" diff --git a/test/qa/qa.jl b/test/qa/qa.jl new file mode 100644 index 0000000..0cbadbc --- /dev/null +++ b/test/qa/qa.jl @@ -0,0 +1,17 @@ +using SciMLTesting, FunctionWrappersWrappers, Test +using JET + +run_qa( + FunctionWrappersWrappers; + explicit_imports = true, + ei_kwargs = (; + # Qualified accesses to names that are not (yet) declared `public` in their + # owning module: `Base.tail`, `FunctionWrappers.FunctionWrapper`, and + # `TruncatedStacktraces.@truncate_stacktrace`. These are core, long-standing + # API of Base / FunctionWrappers / TruncatedStacktraces that predate the + # `public` keyword; ignore until those packages mark them public. + all_qualified_accesses_are_public = (; + ignore = (:tail, :FunctionWrapper, Symbol("@truncate_stacktrace")), + ), + ), +) diff --git a/test/runtests.jl b/test/runtests.jl index 232bc9f..e4da1f8 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -10,6 +10,7 @@ run_tests(; include(joinpath(@__DIR__, "shared", "bigfloat_unionall_tests.jl")) end end, + qa = (; env = joinpath(@__DIR__, "qa"), body = joinpath(@__DIR__, "qa", "qa.jl")), groups = Dict( "nopre" => (; env = joinpath(@__DIR__, "nopre"), diff --git a/test/test_groups.toml b/test/test_groups.toml index 2568f58..ab28124 100644 --- a/test/test_groups.toml +++ b/test/test_groups.toml @@ -1,6 +1,9 @@ [Core] versions = ["lts", "1", "pre"] +[QA] +versions = ["lts", "1"] + [nopre] versions = ["lts", "1"]