Skip to content

Commit ee7c874

Browse files
Merge branch 'disco-optimizations' of https://github.com/Shreyas-Ekanathan/OrdinaryDiffEq.jl into disco-optimizations
2 parents 31da61e + 1ade4dd commit ee7c874

1 file changed

Lines changed: 141 additions & 57 deletions

File tree

test/runtests.jl

Lines changed: 141 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@ function integrators_i()
9595
@time @safetestset "Event Detection Tests" include("Integrators_I/event_detection_tests.jl")
9696
@time @safetestset "Event Repetition Detection Tests" include("Integrators_I/event_repeat_tests.jl")
9797
@time @safetestset "Multi-VCC Mask Tests" include("Integrators_I/multi_vcc_mask_tests.jl")
98-
return @time @safetestset "Step Limiter Tests" include("Integrators_I/step_limiter_test.jl")
98+
@time @safetestset "Step Limiter Tests" include("Integrators_I/step_limiter_test.jl")
99+
return @time @safetestset "Discontinuity Detection Tests" include("Integrators_I/disco_tests.jl")
99100
end
100101

101102
function integrators_ii()
@@ -252,61 +253,144 @@ end
252253
withenv("ODEDIFFEQ_TEST_GROUP" => test_group) do
253254
Pkg.test(base_group, julia_args = ["--check-bounds=auto", "--compiled-modules=yes", "--depwarn=yes"], force_latest_compatible_version = false, allow_reresolve = true)
254255
end
255-
else
256-
# Root-package group dispatch. `run_tests` owns the All / Interface /
257-
# Integrators / Regression / QA / functional-group routing that the old
258-
# hand-written `if GROUP == ...` ladder expressed. The group bodies
259-
# `@safetestset include` files from the per-group `test/<GroupKey>/`
260-
# folders (the v1.2 folder layout).
261-
run_tests(;
262-
# No root "Core" body: the previous runtests.jl had no Core branch.
263-
# A no-op core keeps GROUP=Core a no-op (matching the old behavior)
264-
# and is excluded from `all`.
265-
core = () -> nothing,
266-
groups = Dict(
267-
"InterfaceI" => interface_i,
268-
"InterfaceII" => interface_ii,
269-
"InterfaceIII" => interface_iii,
270-
"InterfaceIV" => interface_iv,
271-
"InterfaceV" => interface_v,
272-
"Integrators_I" => integrators_i,
273-
"Integrators_II" => integrators_ii,
274-
"Regression_I" => regression_i,
275-
"Regression_II" => regression_ii,
276-
"AlgConvergence_I" => algconvergence_i,
277-
"AlgConvergence_III" => algconvergence_iii,
278-
"Downstream" => downstream_group,
279-
"AD" => ad_group,
280-
"ODEInterfaceRegression" => odeinterface_group,
281-
),
282-
# QA runs in the root test environment (no per-group Project.toml);
283-
# its body is the ExplicitImports testset, not the standard
284-
# Aqua/JET `run_qa`.
285-
qa = qa_group,
286-
# `All` runs exactly the Interface/Integrators/Regression functional
287-
# groups (in this order), matching the previous `GROUP == "All"`
288-
# branches. It deliberately EXCLUDES QA, AlgConvergence_*,
289-
# Downstream, AD, and ODEInterfaceRegression — none of which the old
290-
# `All` branch ran.
291-
all = [
292-
"InterfaceI", "InterfaceII", "InterfaceIII", "InterfaceIV", "InterfaceV",
293-
"Integrators_I", "Integrators_II",
294-
"Regression_I", "Regression_II",
295-
],
296-
# Umbrella groups: one GROUP value triggers several functional
297-
# groups, reproducing the old `GROUP == "Interface"` /
298-
# `"Integrators"` / `"Regression"` branches.
299-
umbrellas = Dict(
300-
"Interface" => ["InterfaceI", "InterfaceII", "InterfaceIII", "InterfaceIV", "InterfaceV"],
301-
"Integrators" => ["Integrators_I", "Integrators_II"],
302-
"Regression" => ["Regression_I", "Regression_II"],
303-
),
304-
# Monorepo sublibrary handoff var: the root reads GROUP, but each
305-
# sublibrary reads ODEDIFFEQ_TEST_GROUP for its sub-group. The
306-
# sublibrary Pkg.test is done explicitly above; sublib_env/lib_dir
307-
# are passed for completeness so the routing config is self-describing.
308-
sublib_env = "ODEDIFFEQ_TEST_GROUP",
309-
lib_dir = LIB_DIR,
310-
)
256+
elseif GROUP == "All" || GROUP == "InterfaceI" || GROUP == "Interface"
257+
# Skip on Julia LTS (oneunit(Type{Any}) not defined) and pre-release (stalls)
258+
# See: https://github.com/SciML/OrdinaryDiffEq.jl/issues/2979
259+
if VERSION >= v"1.11" && isempty(VERSION.prerelease)
260+
@time @safetestset "Null u0 Callbacks Tests" include("interface/null_u0_callbacks_test.jl")
261+
end
262+
@time @safetestset "Tstops Tests" include("interface/ode_tstops_tests.jl")
263+
@time @safetestset "Backwards Tests" include("interface/ode_backwards_test.jl")
264+
@time @safetestset "Initdt Tests" include("interface/ode_initdt_tests.jl")
265+
@time @safetestset "Linear Tests" include("interface/ode_twodimlinear_tests.jl")
266+
@time @safetestset "Inf Tests" include("interface/inf_handling.jl")
267+
@time @safetestset "saveat Tests" include("interface/ode_saveat_tests.jl")
268+
@time @safetestset "save_idxs Tests" include("interface/ode_saveidxs_tests.jl")
269+
@time @safetestset "Scalar Handling Tests" include("interface/scalar_handling_tests.jl")
270+
@time @safetestset "Static Array Tests" include("interface/static_array_tests.jl")
271+
@time @safetestset "derivative_discontinuity Tests" include("interface/derivative_discontinuity_test.jl")
272+
@time @safetestset "Composite Algorithm Tests" include("interface/composite_algorithm_test.jl")
273+
@time @safetestset "Complex Tests" include("interface/complex_tests.jl")
274+
@time @safetestset "Ndim Complex Tests" include("interface/ode_ndim_complex_tests.jl")
275+
@time @safetestset "Number Type Tests" include("interface/ode_numbertype_tests.jl")
276+
@time @safetestset "Interpolation Output Type Tests" include("interface/interpolation_output_types.jl")
277+
@time @safetestset "Stiffness Detection Tests" include("interface/stiffness_detection_test.jl")
278+
@time @safetestset "Composite Interpolation Tests" include("interface/composite_interpolation.jl")
279+
@time @safetestset "Export tests" include("interface/export_tests.jl")
280+
@time @safetestset "Type Handling Tests" include("interface/type_handling.jl")
281+
@time @safetestset "Controller Tests" include("interface/controllers.jl")
282+
@time @safetestset "Inplace Interpolation Tests" include("interface/inplace_interpolation.jl")
283+
@time @safetestset "Algebraic Interpolation Tests" include("interface/algebraic_interpolation.jl")
284+
@time @safetestset "Interpolation and Cache Stripping Tests" include("interface/ode_strip_test.jl")
285+
@time @safetestset "Aliasing Tests" include("interface/aliasing_tests.jl")
286+
@time @safetestset "Solution Memory Release" include("interface/solution_memory_tests.jl")
287+
end
288+
289+
if !is_APPVEYOR && (GROUP == "All" || GROUP == "InterfaceII" || GROUP == "Interface")
290+
#@time @safetestset "No Recompile Tests" include("interface/norecompile.jl") # doesn't work on CI?
291+
@time @safetestset "AutoSparse Detection Tests" include("interface/autosparse_detection_tests.jl")
292+
@time @safetestset "Enum Tests" include("interface/enums.jl")
293+
@time @safetestset "Get du Tests" include("interface/get_du.jl")
294+
end
295+
296+
if !is_APPVEYOR && (GROUP == "All" || GROUP == "InterfaceIII" || GROUP == "Interface")
297+
@time @safetestset "Derivative Utilities Tests" include("interface/utility_tests.jl")
298+
@time @safetestset "stats Tests" include("interface/stats_tests.jl")
299+
@time @safetestset "No Index Tests" include("interface/noindex_tests.jl")
300+
@time @safetestset "Events + DAE addsteps Tests" include("interface/event_dae_addsteps.jl")
301+
@time @safetestset "Units Tests" include("interface/units_tests.jl")
302+
@time @safetestset "DEVerbosity Tests" include("interface/verbosity.jl")
303+
end
304+
305+
if !is_APPVEYOR && (GROUP == "All" || GROUP == "InterfaceIV" || GROUP == "Interface")
306+
@time @safetestset "Ambiguity Tests" include("interface/ambiguity_tests.jl")
307+
@time @safetestset "Precision Mixing Tests" include("interface/precision_mixing.jl")
308+
@time @safetestset "Sized Matrix Tests" include("interface/sized_matrix_tests.jl")
309+
@time @safetestset "Second Order with First Order Solver Tests" include("interface/second_order_with_first_order_solvers.jl")
310+
end
311+
312+
if !is_APPVEYOR && (GROUP == "All" || GROUP == "InterfaceV" || GROUP == "Interface")
313+
@time @safetestset "Interpolation Derivative Error Tests" include("interface/interpolation_derivative_error_tests.jl")
314+
@time @safetestset "GPU AutoDiff Interface Tests" include("interface/gpu_autodiff_interface_tests.jl")
315+
end
316+
317+
if !is_APPVEYOR &&
318+
(GROUP == "All" || GROUP == "Integrators_I" || GROUP == "Integrators")
319+
@time @safetestset "Reinit Tests" include("integrators/reinit_test.jl")
320+
@time @safetestset "Events Tests" include("integrators/ode_event_tests.jl")
321+
@time @safetestset "Alg Events Tests" include("integrators/alg_events_tests.jl")
322+
@time @safetestset "Discrete Callback Dual Tests" include("integrators/discrete_callback_dual_test.jl")
323+
@time @safetestset "Callback Allocation Tests" include("integrators/callback_allocation_tests.jl")
324+
@time @safetestset "Iterator Tests" include("integrators/iterator_tests.jl")
325+
@time @safetestset "Integrator Interface Tests" include("integrators/integrator_interface_tests.jl")
326+
@time @safetestset "Error Check Tests" include("integrators/check_error.jl")
327+
@time @safetestset "Event Detection Tests" include("integrators/event_detection_tests.jl")
328+
@time @safetestset "Event Repetition Detection Tests" include("integrators/event_repeat_tests.jl")
329+
@time @safetestset "Step Limiter Tests" include("integrators/step_limiter_test.jl")
330+
@time @safetestset "Discontinuity Detection Tests" include("integrators/disco_tests.jl")
331+
end
332+
333+
if !is_APPVEYOR &&
334+
(GROUP == "All" || GROUP == "Integrators_II" || GROUP == "Integrators")
335+
@time @safetestset "Integrator RNG Tests" include("integrators/integrator_rng_tests.jl")
336+
@time @safetestset "Reverse Directioned Event Tests" include("integrators/rev_events_tests.jl")
337+
@time @safetestset "Differentiation Direction Tests" include("integrators/diffdir_tests.jl")
338+
@time @safetestset "Resize Tests" include("integrators/resize_tests.jl")
339+
@time @safetestset "Cache Tests" include("integrators/ode_cache_tests.jl")
340+
@time @safetestset "Add Steps Tests" include("integrators/ode_add_steps_tests.jl")
341+
@time @safetestset "IMEX Split Function Tests" include("integrators/split_ode_tests.jl")
342+
end
343+
344+
if !is_APPVEYOR && (GROUP == "All" || GROUP == "Regression_I" || GROUP == "Regression")
345+
@time @safetestset "Dense Tests" include("regression/ode_dense_tests.jl")
346+
@time @safetestset "Special Interp Tests" include("regression/special_interps.jl")
347+
@time @safetestset "Inplace Tests" include("regression/ode_inplace_tests.jl")
348+
@time @safetestset "Adaptive Tests" include("regression/ode_adaptive_tests.jl")
349+
@time @safetestset "Hard DAE Tests" include("regression/hard_dae.jl")
350+
end
351+
352+
if !is_APPVEYOR && (GROUP == "All" || GROUP == "Regression_II" || GROUP == "Regression")
353+
@time @safetestset "PSOS Energy Conservation Tests" include("regression/psos_and_energy_conservation.jl")
354+
@time @safetestset "Unrolled Tests" include("regression/ode_unrolled_comparison_tests.jl")
355+
@time @safetestset "IIP vs OOP Tests" include("regression/iipvsoop_tests.jl")
356+
@time @safetestset "Inference Tests" include("regression/inference.jl")
357+
end
358+
359+
if !is_APPVEYOR && GROUP == "AlgConvergence_I"
360+
@time @safetestset "Non-autonomous Convergence Tests" include("algconvergence/non-autonomous_convergence_tests.jl")
361+
end
362+
363+
if !is_APPVEYOR && GROUP == "AlgConvergence_III"
364+
@time @safetestset "Split Methods Tests" include("algconvergence/split_methods_tests.jl")
365+
end
366+
367+
# ModelingToolkit tests moved to OrdinaryDiffEqDifferentiation and
368+
# OrdinaryDiffEqNonlinearSolve subpackage test groups (ModelingToolkit group).
369+
370+
if !is_APPVEYOR && GROUP == "Downstream"
371+
activate_downstream_env()
372+
@time @safetestset "Measurements Tests" include("downstream/measurements.jl")
373+
@time @safetestset "Time derivative Tests" include("downstream/time_derivative_test.jl")
374+
@time @safetestset "DynamicQuantities + Measurements Tests" include("downstream/dynamicquantities_measurements.jl")
375+
end
376+
377+
# AD tests - Enzyme/Zygote only on Julia <= 1.11 (see https://github.com/EnzymeAD/Enzyme.jl/issues/2699)
378+
# Mooncake works on all Julia versions
379+
if !is_APPVEYOR && GROUP == "AD"
380+
activate_ad_env()
381+
@time @safetestset "AD Tests" include("ad/ad_tests.jl")
382+
@time @safetestset "Autodiff Events Tests" include("ad/autodiff_events.jl")
383+
@time @safetestset "Discrete Adjoint Tests" include("ad/discrete_adjoints.jl")
384+
end
385+
386+
# Don't run ODEInterface tests on prerelease
387+
if !is_APPVEYOR && GROUP == "ODEInterfaceRegression" && isempty(VERSION.prerelease)
388+
activate_odeinterface_env()
389+
@time @safetestset "Init dt vs dorpri tests" include("odeinterface/init_dt_vs_dopri_tests.jl")
390+
@time @safetestset "ODEInterface Regression Tests" include("odeinterface/odeinterface_regression.jl")
391+
end
392+
393+
if !is_APPVEYOR && GROUP == "QA"
394+
@time @safetestset "Quality Assurance Tests" include("qa/qa_tests.jl")
311395
end
312396
end # @time

0 commit comments

Comments
 (0)