From 4765d9c54936139dad874a9fcc44acf19b7e68fb Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sat, 19 Jul 2025 09:51:18 -0400 Subject: [PATCH 01/12] Exclude Enzyme from pre-release tests --- .../test/rootfind_tests.jl | 77 ++++++++++++++++--- .../test/test_utilities.jl | 30 ++++++++ .../test/allroots.jl | 33 +++++--- .../test/single_root.jl | 29 +++++-- .../test/test_utilities.jl | 17 ++++ .../test/core_tests.jl | 48 ++++++++++-- .../test/test_utilities.jl | 30 ++++++++ lib/SciMLJacobianOperators/test/core_tests.jl | 60 +++++++++++---- .../test/test_utilities.jl | 17 ++++ .../test/core/rootfind_tests.jl | 19 ++++- .../test/test_utilities.jl | 30 ++++++++ test/test_utilities.jl | 30 ++++++++ 12 files changed, 368 insertions(+), 52 deletions(-) create mode 100644 lib/NonlinearSolveFirstOrder/test/test_utilities.jl create mode 100644 lib/NonlinearSolveHomotopyContinuation/test/test_utilities.jl create mode 100644 lib/NonlinearSolveQuasiNewton/test/test_utilities.jl create mode 100644 lib/SciMLJacobianOperators/test/test_utilities.jl create mode 100644 lib/SimpleNonlinearSolve/test/test_utilities.jl create mode 100644 test/test_utilities.jl diff --git a/lib/NonlinearSolveFirstOrder/test/rootfind_tests.jl b/lib/NonlinearSolveFirstOrder/test/rootfind_tests.jl index 3aa61b256..1c4f7071e 100644 --- a/lib/NonlinearSolveFirstOrder/test/rootfind_tests.jl +++ b/lib/NonlinearSolveFirstOrder/test/rootfind_tests.jl @@ -9,11 +9,23 @@ end using LineSearches: LineSearches using BenchmarkTools: @ballocated using StaticArrays: @SVector - using Zygote, Enzyme, ForwardDiff, FiniteDiff + using Zygote, ForwardDiff, FiniteDiff + + # Conditionally import Enzyme only if not on Julia prerelease + include("test_utilities.jl") + if !is_julia_prerelease() + using Enzyme + end u0s = ([1.0, 1.0], @SVector[1.0, 1.0], 1.0) - @testset for ad in (AutoForwardDiff(), AutoZygote(), AutoFiniteDiff(), AutoEnzyme()) + # Filter autodiff backends based on Julia version + autodiff_backends = [AutoForwardDiff(), AutoZygote(), AutoFiniteDiff()] + if !is_julia_prerelease() + push!(autodiff_backends, AutoEnzyme()) + end + + @testset for ad in autodiff_backends @testset "$(nameof(typeof(linesearch)))" for linesearch in ( LineSearchesJL(; method = LineSearches.Static(), autodiff = ad), LineSearchesJL(; method = LineSearches.BackTracking(), autodiff = ad), @@ -93,14 +105,26 @@ end using ADTypes, Random, LinearSolve, LinearAlgebra using BenchmarkTools: @ballocated using StaticArrays: @SVector - using Zygote, Enzyme, ForwardDiff, FiniteDiff + using Zygote, ForwardDiff, FiniteDiff + + # Conditionally import Enzyme only if not on Julia prerelease + include("test_utilities.jl") + if !is_julia_prerelease() + using Enzyme + end preconditioners = [ (u0) -> nothing, u0 -> ((args...) -> (Diagonal(rand!(similar(u0))), nothing)) ] - @testset for ad in (AutoForwardDiff(), AutoZygote(), AutoFiniteDiff(), AutoEnzyme()) + # Filter autodiff backends based on Julia version + autodiff_backends = [AutoForwardDiff(), AutoZygote(), AutoFiniteDiff()] + if !is_julia_prerelease() + push!(autodiff_backends, AutoEnzyme()) + end + + @testset for ad in autodiff_backends u0s = ([1.0, 1.0], @SVector[1.0, 1.0], 1.0) @testset "[OOP] u0: $(typeof(u0))" for u0 in u0s @@ -176,7 +200,13 @@ end using ADTypes, LinearSolve, LinearAlgebra using BenchmarkTools: @ballocated using StaticArrays: @SVector - using Zygote, Enzyme, ForwardDiff, FiniteDiff + using Zygote, ForwardDiff, FiniteDiff + + # Conditionally import Enzyme only if not on Julia prerelease + include("test_utilities.jl") + if !is_julia_prerelease() + using Enzyme + end radius_update_schemes = [ RadiusUpdateSchemes.Simple, RadiusUpdateSchemes.NocedalWright, @@ -184,7 +214,13 @@ end RadiusUpdateSchemes.Yuan, RadiusUpdateSchemes.Fan, RadiusUpdateSchemes.Bastin ] - @testset for ad in (AutoForwardDiff(), AutoZygote(), AutoFiniteDiff(), AutoEnzyme()) + # Filter autodiff backends based on Julia version + autodiff_backends = [AutoForwardDiff(), AutoZygote(), AutoFiniteDiff()] + if !is_julia_prerelease() + push!(autodiff_backends, AutoEnzyme()) + end + + @testset for ad in autodiff_backends @testset for radius_update_scheme in radius_update_schemes, linsolve in (nothing, LUFactorization(), KrylovJL_GMRES(), \) @@ -296,9 +332,21 @@ end using ADTypes, LinearSolve, LinearAlgebra using BenchmarkTools: @ballocated using StaticArrays: SVector, @SVector - using Zygote, Enzyme, ForwardDiff, FiniteDiff + using Zygote, ForwardDiff, FiniteDiff + + # Conditionally import Enzyme only if not on Julia prerelease + include("test_utilities.jl") + if !is_julia_prerelease() + using Enzyme + end - @testset for ad in (AutoForwardDiff(), AutoZygote(), AutoFiniteDiff(), AutoEnzyme()) + # Filter autodiff backends based on Julia version + autodiff_backends = [AutoForwardDiff(), AutoZygote(), AutoFiniteDiff()] + if !is_julia_prerelease() + push!(autodiff_backends, AutoEnzyme()) + end + + @testset for ad in autodiff_backends solver = LevenbergMarquardt(; autodiff = ad) @testset "[OOP] u0: $(typeof(u0))" for u0 in ([1.0, 1.0], 1.0, @SVector([1.0, 1.0])) @@ -394,8 +442,17 @@ end @testitem "Simple Sparse AutoDiff" setup=[CoreRootfindTesting] tags=[:core] begin using ADTypes, SparseConnectivityTracer, SparseMatrixColorings - - @testset for ad in (AutoForwardDiff(), AutoFiniteDiff(), AutoZygote(), AutoEnzyme()) + + # Include utility functions for prerelease detection + include("test_utilities.jl") + + # Filter autodiff backends based on Julia version + autodiff_backends = [AutoForwardDiff(), AutoFiniteDiff(), AutoZygote()] + if !is_julia_prerelease() + push!(autodiff_backends, AutoEnzyme()) + end + + @testset for ad in autodiff_backends @testset for u0 in ([1.0, 1.0], 1.0) prob = NonlinearProblem( NonlinearFunction(quadratic_f; sparsity = TracerSparsityDetector()), u0, 2.0 diff --git a/lib/NonlinearSolveFirstOrder/test/test_utilities.jl b/lib/NonlinearSolveFirstOrder/test/test_utilities.jl new file mode 100644 index 000000000..95d71025d --- /dev/null +++ b/lib/NonlinearSolveFirstOrder/test/test_utilities.jl @@ -0,0 +1,30 @@ +# Test utilities for NonlinearSolveFirstOrder + +""" + is_julia_prerelease() + +Check if the current Julia version is a prerelease version (e.g., DEV, alpha, beta, rc). +""" +function is_julia_prerelease() + version_string = string(VERSION) + # Check for DEV versions (e.g., "1.12.0-DEV.1234") + contains(version_string, "DEV") && return true + # Check for alpha/beta/rc versions + contains(version_string, "alpha") && return true + contains(version_string, "beta") && return true + contains(version_string, "rc") && return true + return false +end + +""" + filter_autodiff_backends(backends) + +Filter out AutoEnzyme from the list of autodiff backends if running on Julia prerelease. +""" +function filter_autodiff_backends(backends) + if is_julia_prerelease() + return filter(ad -> !isa(ad, AutoEnzyme), backends) + else + return backends + end +end \ No newline at end of file diff --git a/lib/NonlinearSolveHomotopyContinuation/test/allroots.jl b/lib/NonlinearSolveHomotopyContinuation/test/allroots.jl index 79a874a49..9295c026b 100644 --- a/lib/NonlinearSolveHomotopyContinuation/test/allroots.jl +++ b/lib/NonlinearSolveHomotopyContinuation/test/allroots.jl @@ -2,9 +2,14 @@ using NonlinearSolve using NonlinearSolveHomotopyContinuation using SciMLBase: NonlinearSolution using ADTypes -using Enzyme import NaNMath +# Conditionally import Enzyme only if not on Julia prerelease +include("test_utilities.jl") +if !is_julia_prerelease() + using Enzyme +end + alg = HomotopyContinuationJL{true}(; threading = false) @testset "scalar u" begin @@ -14,9 +19,13 @@ alg = HomotopyContinuationJL{true}(; threading = false) jac = function (u, p) return 2u - p[1] end - @testset "`NonlinearProblem` - $name" for (jac_or_autodiff, name) in [ - (AutoForwardDiff(), "no jac - forwarddiff"), (AutoEnzyme(), "no jac - enzyme"), ( - jac, "jac")] + # Filter autodiff backends based on Julia version + autodiff_backends = [(AutoForwardDiff(), "no jac - forwarddiff"), (jac, "jac")] + if !is_julia_prerelease() + push!(autodiff_backends, (AutoEnzyme(), "no jac - enzyme")) + end + + @testset "`NonlinearProblem` - $name" for (jac_or_autodiff, name) in autodiff_backends if jac_or_autodiff isa Function jac = jac_or_autodiff autodiff = nothing @@ -107,11 +116,17 @@ fjac = function (u, p) 2*p[2]*u[2] 3*u[2]^2+2*p[2]*u[1]+1] end -@testset "vector u - $name" for (rhs, jac_or_autodiff, name) in [ - (f, AutoForwardDiff(), "oop + forwarddiff"), (f, AutoEnzyme(), "oop + enzyme"), ( - f, fjac, "oop + jac"), - (f!, AutoForwardDiff(), "iip + forwarddiff"), (f!, AutoEnzyme(), "iip + enzyme"), ( - f!, fjac!, "iip + jac")] +# Filter test cases based on Julia version +vector_test_cases = [ + (f, AutoForwardDiff(), "oop + forwarddiff"), (f, fjac, "oop + jac"), + (f!, AutoForwardDiff(), "iip + forwarddiff"), (f!, fjac!, "iip + jac") +] +if !is_julia_prerelease() + push!(vector_test_cases, (f, AutoEnzyme(), "oop + enzyme")) + push!(vector_test_cases, (f!, AutoEnzyme(), "iip + enzyme")) +end + +@testset "vector u - $name" for (rhs, jac_or_autodiff, name) in vector_test_cases sol = nothing if jac_or_autodiff isa Function jac = jac_or_autodiff diff --git a/lib/NonlinearSolveHomotopyContinuation/test/single_root.jl b/lib/NonlinearSolveHomotopyContinuation/test/single_root.jl index 615c433e6..8abf0530e 100644 --- a/lib/NonlinearSolveHomotopyContinuation/test/single_root.jl +++ b/lib/NonlinearSolveHomotopyContinuation/test/single_root.jl @@ -3,6 +3,9 @@ using NonlinearSolveHomotopyContinuation using SciMLBase: NonlinearSolution import NaNMath +# Include utility functions for prerelease detection +include("test_utilities.jl") + alg = HomotopyContinuationJL{false}(; threading = false) @testset "scalar u" begin @@ -12,9 +15,13 @@ alg = HomotopyContinuationJL{false}(; threading = false) jac = function (u, p) return 2u - (p + 3) end - @testset "`NonlinearProblem` - $name" for (jac_or_autodiff, name) in [ - (AutoForwardDiff(), "no jac - forwarddiff"), (AutoEnzyme(), "no jac - enzyme"), ( - jac, "jac")] + # Filter autodiff backends based on Julia version + autodiff_backends = [(AutoForwardDiff(), "no jac - forwarddiff"), (jac, "jac")] + if !is_julia_prerelease() + push!(autodiff_backends, (AutoEnzyme(), "no jac - enzyme")) + end + + @testset "`NonlinearProblem` - $name" for (jac_or_autodiff, name) in autodiff_backends if jac_or_autodiff isa Function jac = jac_or_autodiff autodiff = nothing @@ -96,11 +103,17 @@ jac = function (u, p) 2*p[2]*u[2] 3*u[2]^2+2*p[2]*u[1]+1] end -@testset "vector u - $name" for (rhs, jac_or_autodiff, name) in [ - (f, AutoForwardDiff(), "oop + forwarddiff"), (f, AutoEnzyme(), "oop + enzyme"), ( - f, jac, "oop + jac"), - (f!, AutoForwardDiff(), "iip + forwarddiff"), (f!, AutoEnzyme(), "iip + enzyme"), ( - f!, jac!, "iip + jac")] +# Filter test cases based on Julia version +vector_test_cases = [ + (f, AutoForwardDiff(), "oop + forwarddiff"), (f, jac, "oop + jac"), + (f!, AutoForwardDiff(), "iip + forwarddiff"), (f!, jac!, "iip + jac") +] +if !is_julia_prerelease() + push!(vector_test_cases, (f, AutoEnzyme(), "oop + enzyme")) + push!(vector_test_cases, (f!, AutoEnzyme(), "iip + enzyme")) +end + +@testset "vector u - $name" for (rhs, jac_or_autodiff, name) in vector_test_cases if jac_or_autodiff isa Function jac = jac_or_autodiff autodiff = nothing diff --git a/lib/NonlinearSolveHomotopyContinuation/test/test_utilities.jl b/lib/NonlinearSolveHomotopyContinuation/test/test_utilities.jl new file mode 100644 index 000000000..c460402cc --- /dev/null +++ b/lib/NonlinearSolveHomotopyContinuation/test/test_utilities.jl @@ -0,0 +1,17 @@ +# Test utilities for NonlinearSolveHomotopyContinuation + +""" + is_julia_prerelease() + +Check if the current Julia version is a prerelease version (e.g., DEV, alpha, beta, rc). +""" +function is_julia_prerelease() + version_string = string(VERSION) + # Check for DEV versions (e.g., "1.12.0-DEV.1234") + contains(version_string, "DEV") && return true + # Check for alpha/beta/rc versions + contains(version_string, "alpha") && return true + contains(version_string, "beta") && return true + contains(version_string, "rc") && return true + return false +end \ No newline at end of file diff --git a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl index d22481b4c..cb161dafd 100644 --- a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl +++ b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl @@ -9,11 +9,23 @@ end using LineSearches: LineSearches using BenchmarkTools: @ballocated using StaticArrays: @SVector - using Zygote, Enzyme, ForwardDiff, FiniteDiff + using Zygote, ForwardDiff, FiniteDiff + + # Conditionally import Enzyme only if not on Julia prerelease + include("test_utilities.jl") + if !is_julia_prerelease() + using Enzyme + end u0s = ([1.0, 1.0], @SVector[1.0, 1.0], 1.0) - @testset for ad in (AutoForwardDiff(), AutoZygote(), AutoFiniteDiff(), AutoEnzyme()) + # Filter autodiff backends based on Julia version + autodiff_backends = [AutoForwardDiff(), AutoZygote(), AutoFiniteDiff()] + if !is_julia_prerelease() + push!(autodiff_backends, AutoEnzyme()) + end + + @testset for ad in autodiff_backends @testset "$(nameof(typeof(linesearch)))" for linesearch in ( # LineSearchesJL(; method = LineSearches.Static(), autodiff = ad), # LineSearchesJL(; method = LineSearches.BackTracking(), autodiff = ad), @@ -84,9 +96,21 @@ end using LineSearches: LineSearches using BenchmarkTools: @ballocated using StaticArrays: @SVector - using Zygote, Enzyme, ForwardDiff, FiniteDiff + using Zygote, ForwardDiff, FiniteDiff + + # Conditionally import Enzyme only if not on Julia prerelease + include("test_utilities.jl") + if !is_julia_prerelease() + using Enzyme + end - @testset for ad in (AutoForwardDiff(), AutoZygote(), AutoFiniteDiff(), AutoEnzyme()) + # Filter autodiff backends based on Julia version + autodiff_backends = [AutoForwardDiff(), AutoZygote(), AutoFiniteDiff()] + if !is_julia_prerelease() + push!(autodiff_backends, AutoEnzyme()) + end + + @testset for ad in autodiff_backends @testset "$(nameof(typeof(linesearch)))" for linesearch in ( # LineSearchesJL(; method = LineSearches.Static(), autodiff = ad), # LineSearchesJL(; method = LineSearches.BackTracking(), autodiff = ad), @@ -157,9 +181,21 @@ end using LineSearches: LineSearches using BenchmarkTools: @ballocated using StaticArrays: @SVector - using Zygote, Enzyme, ForwardDiff, FiniteDiff + using Zygote, ForwardDiff, FiniteDiff + + # Conditionally import Enzyme only if not on Julia prerelease + include("test_utilities.jl") + if !is_julia_prerelease() + using Enzyme + end - @testset for ad in (AutoForwardDiff(), AutoZygote(), AutoFiniteDiff(), AutoEnzyme()) + # Filter autodiff backends based on Julia version + autodiff_backends = [AutoForwardDiff(), AutoZygote(), AutoFiniteDiff()] + if !is_julia_prerelease() + push!(autodiff_backends, AutoEnzyme()) + end + + @testset for ad in autodiff_backends @testset "$(nameof(typeof(linesearch)))" for linesearch in ( # LineSearchesJL(; method = LineSearches.Static(), autodiff = ad), # LineSearchesJL(; method = LineSearches.BackTracking(), autodiff = ad), diff --git a/lib/NonlinearSolveQuasiNewton/test/test_utilities.jl b/lib/NonlinearSolveQuasiNewton/test/test_utilities.jl new file mode 100644 index 000000000..0f84aa57e --- /dev/null +++ b/lib/NonlinearSolveQuasiNewton/test/test_utilities.jl @@ -0,0 +1,30 @@ +# Test utilities for NonlinearSolveQuasiNewton + +""" + is_julia_prerelease() + +Check if the current Julia version is a prerelease version (e.g., DEV, alpha, beta, rc). +""" +function is_julia_prerelease() + version_string = string(VERSION) + # Check for DEV versions (e.g., "1.12.0-DEV.1234") + contains(version_string, "DEV") && return true + # Check for alpha/beta/rc versions + contains(version_string, "alpha") && return true + contains(version_string, "beta") && return true + contains(version_string, "rc") && return true + return false +end + +""" + filter_autodiff_backends(backends) + +Filter out AutoEnzyme from the list of autodiff backends if running on Julia prerelease. +""" +function filter_autodiff_backends(backends) + if is_julia_prerelease() + return filter(ad -> !isa(ad, AutoEnzyme), backends) + else + return backends + end +end \ No newline at end of file diff --git a/lib/SciMLJacobianOperators/test/core_tests.jl b/lib/SciMLJacobianOperators/test/core_tests.jl index e3b595221..2daf19b94 100644 --- a/lib/SciMLJacobianOperators/test/core_tests.jl +++ b/lib/SciMLJacobianOperators/test/core_tests.jl @@ -1,23 +1,33 @@ @testitem "Scalar Ops" begin using ADTypes, SciMLBase - using Enzyme, Zygote, ForwardDiff, FiniteDiff, ReverseDiff, Tracker + using Zygote, ForwardDiff, FiniteDiff, ReverseDiff, Tracker using SciMLJacobianOperators + + # Conditionally import Enzyme only if not on Julia prerelease + include("test_utilities.jl") + if !is_julia_prerelease() + using Enzyme + end reverse_ADs = [ - AutoEnzyme(), - AutoEnzyme(; mode = Enzyme.Reverse), AutoZygote(), AutoReverseDiff(), AutoTracker(), AutoFiniteDiff() ] + if !is_julia_prerelease() + push!(reverse_ADs, AutoEnzyme()) + push!(reverse_ADs, AutoEnzyme(; mode = Enzyme.Reverse)) + end forward_ADs = [ - AutoEnzyme(), - AutoEnzyme(; mode = Enzyme.Forward), AutoForwardDiff(), AutoFiniteDiff() ] + if !is_julia_prerelease() + push!(forward_ADs, AutoEnzyme()) + push!(forward_ADs, AutoEnzyme(; mode = Enzyme.Forward)) + end prob = NonlinearProblem(NonlinearFunction{false}((u, p) -> u^2 - p), 1.0, 2.0) @@ -85,22 +95,32 @@ end @testitem "Inplace Problems" begin using ADTypes, SciMLBase - using Enzyme, ForwardDiff, FiniteDiff, ReverseDiff + using ForwardDiff, FiniteDiff, ReverseDiff using SciMLJacobianOperators + + # Conditionally import Enzyme only if not on Julia prerelease + include("test_utilities.jl") + if !is_julia_prerelease() + using Enzyme + end reverse_ADs = [ - AutoEnzyme(), - AutoEnzyme(; mode = Enzyme.Reverse), AutoReverseDiff(), AutoFiniteDiff() ] + if !is_julia_prerelease() + push!(reverse_ADs, AutoEnzyme()) + push!(reverse_ADs, AutoEnzyme(; mode = Enzyme.Reverse)) + end forward_ADs = [ - AutoEnzyme(), - AutoEnzyme(; mode = Enzyme.Forward), AutoForwardDiff(), AutoFiniteDiff() ] + if !is_julia_prerelease() + push!(forward_ADs, AutoEnzyme()) + push!(forward_ADs, AutoEnzyme(; mode = Enzyme.Forward)) + end prob = NonlinearProblem( NonlinearFunction{true}((du, u, p) -> du .= u .^ 2 .- p .+ u[2] * u[1]), [1.0, 3.0], 2.0) @@ -174,24 +194,34 @@ end @testitem "Out-of-place Problems" begin using ADTypes, SciMLBase - using Enzyme, ForwardDiff, FiniteDiff, ReverseDiff, Zygote, Tracker + using ForwardDiff, FiniteDiff, ReverseDiff, Zygote, Tracker using SciMLJacobianOperators + + # Conditionally import Enzyme only if not on Julia prerelease + include("test_utilities.jl") + if !is_julia_prerelease() + using Enzyme + end reverse_ADs = [ - AutoEnzyme(), - AutoEnzyme(; mode = Enzyme.Reverse), AutoZygote(), AutoTracker(), AutoReverseDiff(), AutoFiniteDiff() ] + if !is_julia_prerelease() + push!(reverse_ADs, AutoEnzyme()) + push!(reverse_ADs, AutoEnzyme(; mode = Enzyme.Reverse)) + end forward_ADs = [ - AutoEnzyme(), - AutoEnzyme(; mode = Enzyme.Forward), AutoForwardDiff(), AutoFiniteDiff() ] + if !is_julia_prerelease() + push!(forward_ADs, AutoEnzyme()) + push!(forward_ADs, AutoEnzyme(; mode = Enzyme.Forward)) + end prob = NonlinearProblem( NonlinearFunction{false}((u, p) -> u .^ 2 .- p .+ u[2] * u[1]), [1.0, 3.0], 2.0) diff --git a/lib/SciMLJacobianOperators/test/test_utilities.jl b/lib/SciMLJacobianOperators/test/test_utilities.jl new file mode 100644 index 000000000..0aaa896b8 --- /dev/null +++ b/lib/SciMLJacobianOperators/test/test_utilities.jl @@ -0,0 +1,17 @@ +# Test utilities for SciMLJacobianOperators + +""" + is_julia_prerelease() + +Check if the current Julia version is a prerelease version (e.g., DEV, alpha, beta, rc). +""" +function is_julia_prerelease() + version_string = string(VERSION) + # Check for DEV versions (e.g., "1.12.0-DEV.1234") + contains(version_string, "DEV") && return true + # Check for alpha/beta/rc versions + contains(version_string, "alpha") && return true + contains(version_string, "beta") && return true + contains(version_string, "rc") && return true + return false +end \ No newline at end of file diff --git a/lib/SimpleNonlinearSolve/test/core/rootfind_tests.jl b/lib/SimpleNonlinearSolve/test/core/rootfind_tests.jl index 468e04916..79c74c7dc 100644 --- a/lib/SimpleNonlinearSolve/test/core/rootfind_tests.jl +++ b/lib/SimpleNonlinearSolve/test/core/rootfind_tests.jl @@ -1,6 +1,12 @@ @testsnippet RootfindTestSnippet begin using StaticArrays, Random, LinearAlgebra, ForwardDiff, NonlinearSolveBase, SciMLBase - using ADTypes, PolyesterForwardDiff, Enzyme, ReverseDiff + using ADTypes, PolyesterForwardDiff, ReverseDiff + + # Conditionally import Enzyme only if not on Julia prerelease + include("../test_utilities.jl") + if !is_julia_prerelease() + using Enzyme + end quadratic_f(u, p) = u .* u .- p quadratic_f!(du, u, p) = (du .= u .* u .- p) @@ -47,13 +53,18 @@ end SimpleTrustRegion, (; kwargs...) -> SimpleTrustRegion(; kwargs..., nlsolve_update_rule = Val(true)) ) - @testset for autodiff in ( + # Filter autodiff backends based on Julia version + autodiff_backends = [ AutoForwardDiff(), AutoFiniteDiff(), AutoReverseDiff(), - AutoEnzyme(), nothing - ) + ] + if !is_julia_prerelease() + push!(autodiff_backends, AutoEnzyme()) + end + + @testset for autodiff in autodiff_backends @testset "[OOP] u0: $(typeof(u0))" for u0 in ( [1.0, 1.0], @SVector[1.0, 1.0], 1.0) broken_inferred = u0 isa StaticArray && (autodiff isa AutoFiniteDiff || diff --git a/lib/SimpleNonlinearSolve/test/test_utilities.jl b/lib/SimpleNonlinearSolve/test/test_utilities.jl new file mode 100644 index 000000000..fe822c31a --- /dev/null +++ b/lib/SimpleNonlinearSolve/test/test_utilities.jl @@ -0,0 +1,30 @@ +# Test utilities for SimpleNonlinearSolve + +""" + is_julia_prerelease() + +Check if the current Julia version is a prerelease version (e.g., DEV, alpha, beta, rc). +""" +function is_julia_prerelease() + version_string = string(VERSION) + # Check for DEV versions (e.g., "1.12.0-DEV.1234") + contains(version_string, "DEV") && return true + # Check for alpha/beta/rc versions + contains(version_string, "alpha") && return true + contains(version_string, "beta") && return true + contains(version_string, "rc") && return true + return false +end + +""" + filter_autodiff_backends(backends) + +Filter out AutoEnzyme from the list of autodiff backends if running on Julia prerelease. +""" +function filter_autodiff_backends(backends) + if is_julia_prerelease() + return filter(ad -> !isa(ad, AutoEnzyme), backends) + else + return backends + end +end \ No newline at end of file diff --git a/test/test_utilities.jl b/test/test_utilities.jl new file mode 100644 index 000000000..06cd68532 --- /dev/null +++ b/test/test_utilities.jl @@ -0,0 +1,30 @@ +# Test utilities for NonlinearSolve.jl + +""" + is_julia_prerelease() + +Check if the current Julia version is a prerelease version (e.g., DEV, alpha, beta, rc). +""" +function is_julia_prerelease() + version_string = string(VERSION) + # Check for DEV versions (e.g., "1.12.0-DEV.1234") + contains(version_string, "DEV") && return true + # Check for alpha/beta/rc versions + contains(version_string, "alpha") && return true + contains(version_string, "beta") && return true + contains(version_string, "rc") && return true + return false +end + +""" + filter_autodiff_backends(backends) + +Filter out AutoEnzyme from the list of autodiff backends if running on Julia prerelease. +""" +function filter_autodiff_backends(backends) + if is_julia_prerelease() + return filter(ad -> !isa(ad, AutoEnzyme), backends) + else + return backends + end +end \ No newline at end of file From ba59b584730fc85d03d694a30200467d4001bbeb Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sat, 19 Jul 2025 10:17:07 -0400 Subject: [PATCH 02/12] Make prerelease checking simpler --- .../test/rootfind_tests.jl | 25 +++++++--------- .../test/test_utilities.jl | 30 ------------------- .../test/allroots.jl | 7 ++--- .../test/single_root.jl | 5 ++-- .../test/test_utilities.jl | 17 ----------- .../test/test_utilities.jl | 30 ------------------- lib/SciMLJacobianOperators/test/core_tests.jl | 21 ++++++------- .../test/test_utilities.jl | 17 ----------- .../test/core/rootfind_tests.jl | 5 ++-- .../test/test_utilities.jl | 30 ------------------- test/test_utilities.jl | 30 ------------------- 11 files changed, 26 insertions(+), 191 deletions(-) delete mode 100644 lib/NonlinearSolveFirstOrder/test/test_utilities.jl delete mode 100644 lib/NonlinearSolveHomotopyContinuation/test/test_utilities.jl delete mode 100644 lib/NonlinearSolveQuasiNewton/test/test_utilities.jl delete mode 100644 lib/SciMLJacobianOperators/test/test_utilities.jl delete mode 100644 lib/SimpleNonlinearSolve/test/test_utilities.jl delete mode 100644 test/test_utilities.jl diff --git a/lib/NonlinearSolveFirstOrder/test/rootfind_tests.jl b/lib/NonlinearSolveFirstOrder/test/rootfind_tests.jl index 1c4f7071e..d885b01fb 100644 --- a/lib/NonlinearSolveFirstOrder/test/rootfind_tests.jl +++ b/lib/NonlinearSolveFirstOrder/test/rootfind_tests.jl @@ -12,8 +12,7 @@ end using Zygote, ForwardDiff, FiniteDiff # Conditionally import Enzyme only if not on Julia prerelease - include("test_utilities.jl") - if !is_julia_prerelease() + if isempty(VERSION.prerelease) using Enzyme end @@ -21,7 +20,7 @@ end # Filter autodiff backends based on Julia version autodiff_backends = [AutoForwardDiff(), AutoZygote(), AutoFiniteDiff()] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(autodiff_backends, AutoEnzyme()) end @@ -108,8 +107,7 @@ end using Zygote, ForwardDiff, FiniteDiff # Conditionally import Enzyme only if not on Julia prerelease - include("test_utilities.jl") - if !is_julia_prerelease() + if isempty(VERSION.prerelease) using Enzyme end @@ -120,7 +118,7 @@ end # Filter autodiff backends based on Julia version autodiff_backends = [AutoForwardDiff(), AutoZygote(), AutoFiniteDiff()] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(autodiff_backends, AutoEnzyme()) end @@ -203,8 +201,7 @@ end using Zygote, ForwardDiff, FiniteDiff # Conditionally import Enzyme only if not on Julia prerelease - include("test_utilities.jl") - if !is_julia_prerelease() + if isempty(VERSION.prerelease) using Enzyme end @@ -216,7 +213,7 @@ end # Filter autodiff backends based on Julia version autodiff_backends = [AutoForwardDiff(), AutoZygote(), AutoFiniteDiff()] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(autodiff_backends, AutoEnzyme()) end @@ -335,14 +332,13 @@ end using Zygote, ForwardDiff, FiniteDiff # Conditionally import Enzyme only if not on Julia prerelease - include("test_utilities.jl") - if !is_julia_prerelease() + if isempty(VERSION.prerelease) using Enzyme end # Filter autodiff backends based on Julia version autodiff_backends = [AutoForwardDiff(), AutoZygote(), AutoFiniteDiff()] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(autodiff_backends, AutoEnzyme()) end @@ -444,11 +440,10 @@ end using ADTypes, SparseConnectivityTracer, SparseMatrixColorings # Include utility functions for prerelease detection - include("test_utilities.jl") - + # Filter autodiff backends based on Julia version autodiff_backends = [AutoForwardDiff(), AutoFiniteDiff(), AutoZygote()] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(autodiff_backends, AutoEnzyme()) end diff --git a/lib/NonlinearSolveFirstOrder/test/test_utilities.jl b/lib/NonlinearSolveFirstOrder/test/test_utilities.jl deleted file mode 100644 index 95d71025d..000000000 --- a/lib/NonlinearSolveFirstOrder/test/test_utilities.jl +++ /dev/null @@ -1,30 +0,0 @@ -# Test utilities for NonlinearSolveFirstOrder - -""" - is_julia_prerelease() - -Check if the current Julia version is a prerelease version (e.g., DEV, alpha, beta, rc). -""" -function is_julia_prerelease() - version_string = string(VERSION) - # Check for DEV versions (e.g., "1.12.0-DEV.1234") - contains(version_string, "DEV") && return true - # Check for alpha/beta/rc versions - contains(version_string, "alpha") && return true - contains(version_string, "beta") && return true - contains(version_string, "rc") && return true - return false -end - -""" - filter_autodiff_backends(backends) - -Filter out AutoEnzyme from the list of autodiff backends if running on Julia prerelease. -""" -function filter_autodiff_backends(backends) - if is_julia_prerelease() - return filter(ad -> !isa(ad, AutoEnzyme), backends) - else - return backends - end -end \ No newline at end of file diff --git a/lib/NonlinearSolveHomotopyContinuation/test/allroots.jl b/lib/NonlinearSolveHomotopyContinuation/test/allroots.jl index 9295c026b..9031c5c01 100644 --- a/lib/NonlinearSolveHomotopyContinuation/test/allroots.jl +++ b/lib/NonlinearSolveHomotopyContinuation/test/allroots.jl @@ -5,8 +5,7 @@ using ADTypes import NaNMath # Conditionally import Enzyme only if not on Julia prerelease -include("test_utilities.jl") -if !is_julia_prerelease() +if isempty(VERSION.prerelease) using Enzyme end @@ -21,7 +20,7 @@ alg = HomotopyContinuationJL{true}(; threading = false) end # Filter autodiff backends based on Julia version autodiff_backends = [(AutoForwardDiff(), "no jac - forwarddiff"), (jac, "jac")] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(autodiff_backends, (AutoEnzyme(), "no jac - enzyme")) end @@ -121,7 +120,7 @@ vector_test_cases = [ (f, AutoForwardDiff(), "oop + forwarddiff"), (f, fjac, "oop + jac"), (f!, AutoForwardDiff(), "iip + forwarddiff"), (f!, fjac!, "iip + jac") ] -if !is_julia_prerelease() +if isempty(VERSION.prerelease) push!(vector_test_cases, (f, AutoEnzyme(), "oop + enzyme")) push!(vector_test_cases, (f!, AutoEnzyme(), "iip + enzyme")) end diff --git a/lib/NonlinearSolveHomotopyContinuation/test/single_root.jl b/lib/NonlinearSolveHomotopyContinuation/test/single_root.jl index 8abf0530e..28aaf1cc0 100644 --- a/lib/NonlinearSolveHomotopyContinuation/test/single_root.jl +++ b/lib/NonlinearSolveHomotopyContinuation/test/single_root.jl @@ -4,7 +4,6 @@ using SciMLBase: NonlinearSolution import NaNMath # Include utility functions for prerelease detection -include("test_utilities.jl") alg = HomotopyContinuationJL{false}(; threading = false) @@ -17,7 +16,7 @@ alg = HomotopyContinuationJL{false}(; threading = false) end # Filter autodiff backends based on Julia version autodiff_backends = [(AutoForwardDiff(), "no jac - forwarddiff"), (jac, "jac")] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(autodiff_backends, (AutoEnzyme(), "no jac - enzyme")) end @@ -108,7 +107,7 @@ vector_test_cases = [ (f, AutoForwardDiff(), "oop + forwarddiff"), (f, jac, "oop + jac"), (f!, AutoForwardDiff(), "iip + forwarddiff"), (f!, jac!, "iip + jac") ] -if !is_julia_prerelease() +if isempty(VERSION.prerelease) push!(vector_test_cases, (f, AutoEnzyme(), "oop + enzyme")) push!(vector_test_cases, (f!, AutoEnzyme(), "iip + enzyme")) end diff --git a/lib/NonlinearSolveHomotopyContinuation/test/test_utilities.jl b/lib/NonlinearSolveHomotopyContinuation/test/test_utilities.jl deleted file mode 100644 index c460402cc..000000000 --- a/lib/NonlinearSolveHomotopyContinuation/test/test_utilities.jl +++ /dev/null @@ -1,17 +0,0 @@ -# Test utilities for NonlinearSolveHomotopyContinuation - -""" - is_julia_prerelease() - -Check if the current Julia version is a prerelease version (e.g., DEV, alpha, beta, rc). -""" -function is_julia_prerelease() - version_string = string(VERSION) - # Check for DEV versions (e.g., "1.12.0-DEV.1234") - contains(version_string, "DEV") && return true - # Check for alpha/beta/rc versions - contains(version_string, "alpha") && return true - contains(version_string, "beta") && return true - contains(version_string, "rc") && return true - return false -end \ No newline at end of file diff --git a/lib/NonlinearSolveQuasiNewton/test/test_utilities.jl b/lib/NonlinearSolveQuasiNewton/test/test_utilities.jl deleted file mode 100644 index 0f84aa57e..000000000 --- a/lib/NonlinearSolveQuasiNewton/test/test_utilities.jl +++ /dev/null @@ -1,30 +0,0 @@ -# Test utilities for NonlinearSolveQuasiNewton - -""" - is_julia_prerelease() - -Check if the current Julia version is a prerelease version (e.g., DEV, alpha, beta, rc). -""" -function is_julia_prerelease() - version_string = string(VERSION) - # Check for DEV versions (e.g., "1.12.0-DEV.1234") - contains(version_string, "DEV") && return true - # Check for alpha/beta/rc versions - contains(version_string, "alpha") && return true - contains(version_string, "beta") && return true - contains(version_string, "rc") && return true - return false -end - -""" - filter_autodiff_backends(backends) - -Filter out AutoEnzyme from the list of autodiff backends if running on Julia prerelease. -""" -function filter_autodiff_backends(backends) - if is_julia_prerelease() - return filter(ad -> !isa(ad, AutoEnzyme), backends) - else - return backends - end -end \ No newline at end of file diff --git a/lib/SciMLJacobianOperators/test/core_tests.jl b/lib/SciMLJacobianOperators/test/core_tests.jl index 2daf19b94..fbbd51844 100644 --- a/lib/SciMLJacobianOperators/test/core_tests.jl +++ b/lib/SciMLJacobianOperators/test/core_tests.jl @@ -4,8 +4,7 @@ using SciMLJacobianOperators # Conditionally import Enzyme only if not on Julia prerelease - include("test_utilities.jl") - if !is_julia_prerelease() + if isempty(VERSION.prerelease) using Enzyme end @@ -15,7 +14,7 @@ AutoTracker(), AutoFiniteDiff() ] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(reverse_ADs, AutoEnzyme()) push!(reverse_ADs, AutoEnzyme(; mode = Enzyme.Reverse)) end @@ -24,7 +23,7 @@ AutoForwardDiff(), AutoFiniteDiff() ] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(forward_ADs, AutoEnzyme()) push!(forward_ADs, AutoEnzyme(; mode = Enzyme.Forward)) end @@ -99,8 +98,7 @@ end using SciMLJacobianOperators # Conditionally import Enzyme only if not on Julia prerelease - include("test_utilities.jl") - if !is_julia_prerelease() + if isempty(VERSION.prerelease) using Enzyme end @@ -108,7 +106,7 @@ end AutoReverseDiff(), AutoFiniteDiff() ] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(reverse_ADs, AutoEnzyme()) push!(reverse_ADs, AutoEnzyme(; mode = Enzyme.Reverse)) end @@ -117,7 +115,7 @@ end AutoForwardDiff(), AutoFiniteDiff() ] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(forward_ADs, AutoEnzyme()) push!(forward_ADs, AutoEnzyme(; mode = Enzyme.Forward)) end @@ -198,8 +196,7 @@ end using SciMLJacobianOperators # Conditionally import Enzyme only if not on Julia prerelease - include("test_utilities.jl") - if !is_julia_prerelease() + if isempty(VERSION.prerelease) using Enzyme end @@ -209,7 +206,7 @@ end AutoReverseDiff(), AutoFiniteDiff() ] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(reverse_ADs, AutoEnzyme()) push!(reverse_ADs, AutoEnzyme(; mode = Enzyme.Reverse)) end @@ -218,7 +215,7 @@ end AutoForwardDiff(), AutoFiniteDiff() ] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(forward_ADs, AutoEnzyme()) push!(forward_ADs, AutoEnzyme(; mode = Enzyme.Forward)) end diff --git a/lib/SciMLJacobianOperators/test/test_utilities.jl b/lib/SciMLJacobianOperators/test/test_utilities.jl deleted file mode 100644 index 0aaa896b8..000000000 --- a/lib/SciMLJacobianOperators/test/test_utilities.jl +++ /dev/null @@ -1,17 +0,0 @@ -# Test utilities for SciMLJacobianOperators - -""" - is_julia_prerelease() - -Check if the current Julia version is a prerelease version (e.g., DEV, alpha, beta, rc). -""" -function is_julia_prerelease() - version_string = string(VERSION) - # Check for DEV versions (e.g., "1.12.0-DEV.1234") - contains(version_string, "DEV") && return true - # Check for alpha/beta/rc versions - contains(version_string, "alpha") && return true - contains(version_string, "beta") && return true - contains(version_string, "rc") && return true - return false -end \ No newline at end of file diff --git a/lib/SimpleNonlinearSolve/test/core/rootfind_tests.jl b/lib/SimpleNonlinearSolve/test/core/rootfind_tests.jl index 79c74c7dc..a0f29c819 100644 --- a/lib/SimpleNonlinearSolve/test/core/rootfind_tests.jl +++ b/lib/SimpleNonlinearSolve/test/core/rootfind_tests.jl @@ -3,8 +3,7 @@ using ADTypes, PolyesterForwardDiff, ReverseDiff # Conditionally import Enzyme only if not on Julia prerelease - include("../test_utilities.jl") - if !is_julia_prerelease() + if isempty(VERSION.prerelease) using Enzyme end @@ -60,7 +59,7 @@ end AutoReverseDiff(), nothing ] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(autodiff_backends, AutoEnzyme()) end diff --git a/lib/SimpleNonlinearSolve/test/test_utilities.jl b/lib/SimpleNonlinearSolve/test/test_utilities.jl deleted file mode 100644 index fe822c31a..000000000 --- a/lib/SimpleNonlinearSolve/test/test_utilities.jl +++ /dev/null @@ -1,30 +0,0 @@ -# Test utilities for SimpleNonlinearSolve - -""" - is_julia_prerelease() - -Check if the current Julia version is a prerelease version (e.g., DEV, alpha, beta, rc). -""" -function is_julia_prerelease() - version_string = string(VERSION) - # Check for DEV versions (e.g., "1.12.0-DEV.1234") - contains(version_string, "DEV") && return true - # Check for alpha/beta/rc versions - contains(version_string, "alpha") && return true - contains(version_string, "beta") && return true - contains(version_string, "rc") && return true - return false -end - -""" - filter_autodiff_backends(backends) - -Filter out AutoEnzyme from the list of autodiff backends if running on Julia prerelease. -""" -function filter_autodiff_backends(backends) - if is_julia_prerelease() - return filter(ad -> !isa(ad, AutoEnzyme), backends) - else - return backends - end -end \ No newline at end of file diff --git a/test/test_utilities.jl b/test/test_utilities.jl deleted file mode 100644 index 06cd68532..000000000 --- a/test/test_utilities.jl +++ /dev/null @@ -1,30 +0,0 @@ -# Test utilities for NonlinearSolve.jl - -""" - is_julia_prerelease() - -Check if the current Julia version is a prerelease version (e.g., DEV, alpha, beta, rc). -""" -function is_julia_prerelease() - version_string = string(VERSION) - # Check for DEV versions (e.g., "1.12.0-DEV.1234") - contains(version_string, "DEV") && return true - # Check for alpha/beta/rc versions - contains(version_string, "alpha") && return true - contains(version_string, "beta") && return true - contains(version_string, "rc") && return true - return false -end - -""" - filter_autodiff_backends(backends) - -Filter out AutoEnzyme from the list of autodiff backends if running on Julia prerelease. -""" -function filter_autodiff_backends(backends) - if is_julia_prerelease() - return filter(ad -> !isa(ad, AutoEnzyme), backends) - else - return backends - end -end \ No newline at end of file From b035953463456edefab4bd375abe5fe254aaa989 Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sat, 19 Jul 2025 13:29:19 -0400 Subject: [PATCH 03/12] Update lib/NonlinearSolveQuasiNewton/test/core_tests.jl --- lib/NonlinearSolveQuasiNewton/test/core_tests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl index cb161dafd..293ab8c04 100644 --- a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl +++ b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl @@ -185,7 +185,7 @@ end # Conditionally import Enzyme only if not on Julia prerelease include("test_utilities.jl") - if !is_julia_prerelease() + if isempty(VERSION.prerelease) using Enzyme end From 98f56d7cc165f748a98ca2edca66e6d03e66182a Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sat, 19 Jul 2025 13:29:56 -0400 Subject: [PATCH 04/12] Update lib/NonlinearSolveQuasiNewton/test/core_tests.jl --- lib/NonlinearSolveQuasiNewton/test/core_tests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl index 293ab8c04..7522bbfce 100644 --- a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl +++ b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl @@ -21,7 +21,7 @@ end # Filter autodiff backends based on Julia version autodiff_backends = [AutoForwardDiff(), AutoZygote(), AutoFiniteDiff()] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(autodiff_backends, AutoEnzyme()) end From 4bc910c02ec47794e2858d867d408217a3ce4cef Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sat, 19 Jul 2025 13:30:10 -0400 Subject: [PATCH 05/12] Update lib/NonlinearSolveQuasiNewton/test/core_tests.jl --- lib/NonlinearSolveQuasiNewton/test/core_tests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl index 7522bbfce..8f31c0813 100644 --- a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl +++ b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl @@ -13,7 +13,7 @@ end # Conditionally import Enzyme only if not on Julia prerelease include("test_utilities.jl") - if !is_julia_prerelease() + if isempty(VERSION.prerelease) using Enzyme end From 7b897455b3c51684dc04945bd59f0575a403a482 Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sat, 19 Jul 2025 13:30:39 -0400 Subject: [PATCH 06/12] Update lib/NonlinearSolveQuasiNewton/test/core_tests.jl --- lib/NonlinearSolveQuasiNewton/test/core_tests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl index 8f31c0813..aa0606334 100644 --- a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl +++ b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl @@ -106,7 +106,7 @@ end # Filter autodiff backends based on Julia version autodiff_backends = [AutoForwardDiff(), AutoZygote(), AutoFiniteDiff()] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(autodiff_backends, AutoEnzyme()) end From 7fee346bd022410c82dc806e8d4a034ecbd84e36 Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sat, 19 Jul 2025 13:30:58 -0400 Subject: [PATCH 07/12] Update lib/NonlinearSolveQuasiNewton/test/core_tests.jl --- lib/NonlinearSolveQuasiNewton/test/core_tests.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl index aa0606334..4dc9cc203 100644 --- a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl +++ b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl @@ -12,7 +12,6 @@ end using Zygote, ForwardDiff, FiniteDiff # Conditionally import Enzyme only if not on Julia prerelease - include("test_utilities.jl") if isempty(VERSION.prerelease) using Enzyme end From b8519ab7eb16d42606a880b8e014f66dc0f25270 Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sat, 19 Jul 2025 13:31:17 -0400 Subject: [PATCH 08/12] Update lib/NonlinearSolveHomotopyContinuation/test/single_root.jl --- lib/NonlinearSolveHomotopyContinuation/test/single_root.jl | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/NonlinearSolveHomotopyContinuation/test/single_root.jl b/lib/NonlinearSolveHomotopyContinuation/test/single_root.jl index 28aaf1cc0..a9057e731 100644 --- a/lib/NonlinearSolveHomotopyContinuation/test/single_root.jl +++ b/lib/NonlinearSolveHomotopyContinuation/test/single_root.jl @@ -3,8 +3,6 @@ using NonlinearSolveHomotopyContinuation using SciMLBase: NonlinearSolution import NaNMath -# Include utility functions for prerelease detection - alg = HomotopyContinuationJL{false}(; threading = false) @testset "scalar u" begin From 2f4b19f07e48cf53091f4a67ac05995ab7142e3a Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sat, 19 Jul 2025 13:31:35 -0400 Subject: [PATCH 09/12] Update lib/NonlinearSolveFirstOrder/test/rootfind_tests.jl --- lib/NonlinearSolveFirstOrder/test/rootfind_tests.jl | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/NonlinearSolveFirstOrder/test/rootfind_tests.jl b/lib/NonlinearSolveFirstOrder/test/rootfind_tests.jl index d885b01fb..393399589 100644 --- a/lib/NonlinearSolveFirstOrder/test/rootfind_tests.jl +++ b/lib/NonlinearSolveFirstOrder/test/rootfind_tests.jl @@ -439,8 +439,6 @@ end @testitem "Simple Sparse AutoDiff" setup=[CoreRootfindTesting] tags=[:core] begin using ADTypes, SparseConnectivityTracer, SparseMatrixColorings - # Include utility functions for prerelease detection - # Filter autodiff backends based on Julia version autodiff_backends = [AutoForwardDiff(), AutoFiniteDiff(), AutoZygote()] if isempty(VERSION.prerelease) From 549dad710931836d3ddaff6ef459c5089085b7cc Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sat, 19 Jul 2025 13:31:49 -0400 Subject: [PATCH 10/12] Update lib/NonlinearSolveQuasiNewton/test/core_tests.jl --- lib/NonlinearSolveQuasiNewton/test/core_tests.jl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl index 4dc9cc203..440619be4 100644 --- a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl +++ b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl @@ -98,8 +98,7 @@ end using Zygote, ForwardDiff, FiniteDiff # Conditionally import Enzyme only if not on Julia prerelease - include("test_utilities.jl") - if !is_julia_prerelease() + if isempty(VERSION.prerelease) using Enzyme end From 1b83c9aaa50eb6829415cab9bc8bdeb03569441f Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sat, 19 Jul 2025 13:32:08 -0400 Subject: [PATCH 11/12] Update lib/NonlinearSolveQuasiNewton/test/core_tests.jl --- lib/NonlinearSolveQuasiNewton/test/core_tests.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl index 440619be4..a3b6c011c 100644 --- a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl +++ b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl @@ -182,7 +182,6 @@ end using Zygote, ForwardDiff, FiniteDiff # Conditionally import Enzyme only if not on Julia prerelease - include("test_utilities.jl") if isempty(VERSION.prerelease) using Enzyme end From d70639d178e2ded534fe6170f25fd36caff55d9f Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Sat, 19 Jul 2025 13:32:41 -0400 Subject: [PATCH 12/12] Update lib/NonlinearSolveQuasiNewton/test/core_tests.jl --- lib/NonlinearSolveQuasiNewton/test/core_tests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl index a3b6c011c..d8b4c49cd 100644 --- a/lib/NonlinearSolveQuasiNewton/test/core_tests.jl +++ b/lib/NonlinearSolveQuasiNewton/test/core_tests.jl @@ -188,7 +188,7 @@ end # Filter autodiff backends based on Julia version autodiff_backends = [AutoForwardDiff(), AutoZygote(), AutoFiniteDiff()] - if !is_julia_prerelease() + if isempty(VERSION.prerelease) push!(autodiff_backends, AutoEnzyme()) end