From 7196833bf79994e69d9cb477d6bf6bdad5ca665c Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Fri, 12 Sep 2025 16:46:08 -0400 Subject: [PATCH 1/2] Create solver_missing_error_messages.jl --- .../test/solver_missing_error_messages.jl | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 lib/OptimizationBase/test/solver_missing_error_messages.jl diff --git a/lib/OptimizationBase/test/solver_missing_error_messages.jl b/lib/OptimizationBase/test/solver_missing_error_messages.jl new file mode 100644 index 000000000..f20efb44b --- /dev/null +++ b/lib/OptimizationBase/test/solver_missing_error_messages.jl @@ -0,0 +1,26 @@ +using OptimizationBase, Test +prob = OptimizationProblem((x, p) -> sum(x), zeros(2)) +@test_throws OptimizationBase.OptimizerMissingError solve(prob, nothing) + +struct OptAlg end + +SciMLBase.allowscallback(::OptAlg) = false +@test_throws OptimizationBase.IncompatibleOptimizerError solve(prob, OptAlg(), + callback = (args...) -> false) + +SciMLBase.requiresbounds(::OptAlg) = true +@test_throws OptimizationBase.IncompatibleOptimizerError solve(prob, OptAlg()) +SciMLBase.requiresbounds(::OptAlg) = false + +prob = OptimizationProblem((x, p) -> sum(x), zeros(2), lb = [-1.0, -1.0], ub = [1.0, 1.0]) +@test_throws OptimizationBase.IncompatibleOptimizerError solve(prob, OptAlg()) #by default allowsbounds is false + +cons = (res, x, p) -> (res .= [x[1]^2 + x[2]^2]) +optf = OptimizationFunction((x, p) -> sum(x), SciMLBase.NoAD(), cons = cons) +prob = OptimizationProblem(optf, zeros(2)) +@test_throws OptimizationBase.IncompatibleOptimizerError solve(prob, OptAlg()) #by default allowsconstraints is false + +SciMLBase.requiresconstraints(::OptAlg) = true +optf = OptimizationFunction((x, p) -> sum(x), SciMLBase.NoAD()) +prob = OptimizationProblem(optf, zeros(2)) +@test_throws OptimizationBase.IncompatibleOptimizerError solve(prob, OptAlg()) From 1a4d1946f9e21492bd8c853a4ef188931d1ef595 Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Fri, 12 Sep 2025 16:47:04 -0400 Subject: [PATCH 2/2] Update runtests.jl --- lib/OptimizationBase/test/runtests.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/OptimizationBase/test/runtests.jl b/lib/OptimizationBase/test/runtests.jl index fad4b35ef..70e378b3c 100644 --- a/lib/OptimizationBase/test/runtests.jl +++ b/lib/OptimizationBase/test/runtests.jl @@ -5,4 +5,5 @@ using Test include("adtests.jl") include("cvxtest.jl") include("matrixvalued.jl") + include("solver_missing_error_messages.jl") end