diff --git a/Project.toml b/Project.toml index b7ba701..f49d2cb 100644 --- a/Project.toml +++ b/Project.toml @@ -23,6 +23,7 @@ ModelingToolkit = "9.7.1, 10, 11.27" NonlinearSolve = "4.12" OptimizationOptimJL = "0.3, 0.4" OrdinaryDiffEq = "6.80.0, 7" +OrdinaryDiffEqCore = "4.4" OrdinaryDiffEqSDIRK = "1.7, 2" Random = "1" SafeTestsets = "0.1" @@ -36,9 +37,10 @@ Lux = "b2108857-7c20-44ae-9111-449ecde12c47" MethodOfLines = "94925ecb-adb7-4558-8ed8-f975c56a0bf4" NonlinearSolve = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" OptimizationOptimJL = "36348300-93cb-4f02-beb5-3c3902f8871e" +OrdinaryDiffEqCore = "bbf590c4-e513-4bbe-9b18-05decba2e5d8" SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" SciMLTesting = "09d9d899-5365-40a9-917a-5f67fddea283" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [targets] -test = ["Test", "MethodOfLines", "Lux", "NonlinearSolve", "OptimizationOptimJL", "SafeTestsets", "SciMLTesting"] +test = ["Test", "MethodOfLines", "Lux", "NonlinearSolve", "OptimizationOptimJL", "OrdinaryDiffEqCore", "SafeTestsets", "SciMLTesting"] diff --git a/test/qa/Project.toml b/test/qa/Project.toml index 8d42226..025db42 100644 --- a/test/qa/Project.toml +++ b/test/qa/Project.toml @@ -11,5 +11,5 @@ PDESystemLibrary = {path = "../.."} [compat] SafeTestsets = "0.1, 1" -SciMLTesting = "1" +SciMLTesting = "1.6" julia = "1.10" diff --git a/test/qa/qa.jl b/test/qa/qa.jl index 2c50f5d..5bcefde 100644 --- a/test/qa/qa.jl +++ b/test/qa/qa.jl @@ -1,5 +1,6 @@ -using PDESystemLibrary, Aqua, JET +using PDESystemLibrary, Test using SciMLTesting +using JET # JET runs in `:typo` mode (the SciMLTesting `run_qa` default). The library's # problem builders construct symbolic expressions from `@variables`/`@parameters`; @@ -8,7 +9,23 @@ using SciMLTesting # analysis emits spurious `no matching method found` union-split reports for `+/-/*/cos/sin` # on scalar variables that are always `Num` at runtime. Typo mode still catches real # undefined-name errors without these dependency-inference false positives. +# +# ExplicitImports findings: +# * no_implicit_imports: tracked-broken. The module `using`s the symbolic/solver +# umbrellas (ModelingToolkit, DomainSets, OrdinaryDiffEq, Interpolations) that +# re-export from Symbolics/ModelingToolkitBase/IntervalSets/SciMLBase/CommonSolve, +# so a `using X: name` rewrite would pin owner packages that reshuffle names across +# releases. Two entries (`limit`, `domain`) are also local definitions EI flags +# conservatively, so a blanket explicit-import rewrite would be wrong. Tracked in +# https://github.com/SciML/PDESystemLibrary.jl/issues/63 ; kept broken +# (auto-flags Unexpected Pass once resolved). +# * all_qualified_accesses_are_public: `Random.seed!` is the canonical seeding API +# but the Random stdlib does not declare it `public`; ignored. run_qa( - PDESystemLibrary; Aqua = Aqua, JET = JET, jet = true, - jet_kwargs = (; target_modules = (PDESystemLibrary,), mode = :typo) + PDESystemLibrary; explicit_imports = true, + jet_kwargs = (; target_modules = (PDESystemLibrary,), mode = :typo), + ei_kwargs = (; + all_qualified_accesses_are_public = (; ignore = (:seed!,)), # Random.seed! (Random stdlib, not declared public) + ), + ei_broken = (:no_implicit_imports,) )