From 9be67764706cc3f5d647d043da9f9f760f08fda7 Mon Sep 17 00:00:00 2001 From: Daniel Ingraham Date: Tue, 20 Feb 2024 14:35:14 -0500 Subject: [PATCH] Fix `J_fwd` vs `J_rev` problem in OpenMDAO.jl tests --- julia/OpenMDAO.jl/test/runtests.jl | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/julia/OpenMDAO.jl/test/runtests.jl b/julia/OpenMDAO.jl/test/runtests.jl index 090f1d3..ef3bb4b 100644 --- a/julia/OpenMDAO.jl/test/runtests.jl +++ b/julia/OpenMDAO.jl/test/runtests.jl @@ -1044,9 +1044,26 @@ end for (pyvar, pywrt) in keys(ctd) var = pyconvert(Any, pyvar) wrt = pyconvert(Any, pywrt) - J_fwd = pyconvert(Dict, ctd[var, wrt])["J_fwd"] + # In OpenMDAO 3.26.0, the correct key is always `"J_fwd"`, but in 3.30.0 it depends on the `mode` argument to `problem.setup()`. + try + J_actual = pyconvert(Dict, ctd[var, wrt])["J_fwd"] + catch e1 + if isa(e1, KeyError) + try + J_actual = pyconvert(Dict, ctd[var, wrt])["J_rev"] + catch e2 + if isa(e2, KeyError) + throw(KeyError("ctd[$(var), $(wrt)] contains neither \"J_fwd\" nor \"J_rev\"")) + else + rethrow(e2) + end + end + else + rethrow(e1) + end + end J_fd = pyconvert(Dict, ctd[var, wrt])["J_fd"] - @test J_fwd ≈ J_fd + @test J_actual ≈ J_fd end end