@@ -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" )
99100end
100101
101102function 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
312396end # @time
0 commit comments