From 9a447a9718032d7956941397dedcce3ada722cc5 Mon Sep 17 00:00:00 2001 From: Phillip Alday Date: Sat, 19 Aug 2023 17:24:32 -0500 Subject: [PATCH] better test support for Julia <1.9 --- src/regressionmodel.jl | 3 +++ test/delta_method.jl | 30 +++++++++++++++++++----------- test/runtests.jl | 2 +- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/regressionmodel.jl b/src/regressionmodel.jl index 31ab9f0..e1e8a57 100644 --- a/src/regressionmodel.jl +++ b/src/regressionmodel.jl @@ -147,6 +147,9 @@ end function _difference_method!(::Vector{T}, ::Vector{T}, ::RegressionModel, ::AutoInvLink) where {T <: AbstractFloat} + @static if VERSION < v"1.9" + @error "AutoInvLink requires extensions and is thus not available on Julia < 1.9." + end throw(ArgumentError("No appropriate extension is loaded for automatic " * "determination of the inverse link for this model type")) end diff --git a/test/delta_method.jl b/test/delta_method.jl index 417d419..6d61710 100644 --- a/test/delta_method.jl +++ b/test/delta_method.jl @@ -40,6 +40,8 @@ using Test @test isapprox(only(eff_emm_trans.upper), 47.5; atol=0.05) @testset "AutoInvLink fails gracefully" begin + # this should work even pre Julia 1.9 because by definition + # no extension is loaded @test_throws ArgumentError effects(design, model; invlink=AutoInvLink()) end end @@ -52,7 +54,11 @@ end :Neuroticism => [16]) X = [1.0 13.0 16.0 13 * 16] iv = Base.Fix1(GLM.linkinv, Link(model.model)) - invlinks = [iv, AutoInvLink()] + @static if VERSION >= v"1.9" + invlinks = [iv, AutoInvLink()] + else + invlinks = [iv] + end @testset "invlink = $invlink" for invlink in invlinks for level in [0.68, 0.95] eff = effects(design, model; invlink, level) @@ -95,17 +101,19 @@ end end end -@testset "link function in a MixedModel" begin - model = fit(MixedModel, - @formula(use ~ 1 + age + (1|urban)), - MixedModels.dataset(:contra), - Bernoulli(); progress=false) - design = Dict(:age => -10:10) - eff_manual = effects(design, model; - invlink=Base.Fix1(GLM.linkinv, Link(model))) - eff_auto = effects(design, model; invlink=AutoInvLink()) +@static if VERSION >= v"1.9" + @testset "link function in a MixedModel" begin + model = fit(MixedModel, + @formula(use ~ 1 + age + (1|urban)), + MixedModels.dataset(:contra), + Bernoulli(); progress=false) + design = Dict(:age => -10:10) + eff_manual = effects(design, model; + invlink=Base.Fix1(GLM.linkinv, Link(model))) + eff_auto = effects(design, model; invlink=AutoInvLink()) - @test all(isapprox.(Matrix(eff_manual), Matrix(eff_auto))) + @test all(isapprox.(Matrix(eff_manual), Matrix(eff_auto))) + end end @testset "identity by another name" begin diff --git a/test/runtests.jl b/test/runtests.jl index 6dbc1de..94d6117 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -3,7 +3,7 @@ using Effects using Test @testset "Aqua" begin - Aqua.test_all(Effects; ambiguities=false) + Aqua.test_all(Effects; ambiguities=false, project_toml_formatting) end @testset "TypicalTerm" begin