From 87d430a939395878eee8ba7f9007ca559b5cb651 Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Mon, 29 Jul 2024 11:40:24 +0200 Subject: [PATCH 1/9] Mark cat tests as broken for > 3 arguments (method ambiguity) --- test/derivatives/ArrayFunctionTests.jl | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/test/derivatives/ArrayFunctionTests.jl b/test/derivatives/ArrayFunctionTests.jl index 3640235b..d521dcf8 100644 --- a/test/derivatives/ArrayFunctionTests.jl +++ b/test/derivatives/ArrayFunctionTests.jl @@ -37,15 +37,20 @@ function testcat(f, args::Tuple, type, kwargs=NamedTuple()) end args = (args..., args...) - x = f(track.(args)...; kwargs...) - @test x isa type - @test value(x) == f(args...; kwargs...) - sizes = size.(args) F = vecx -> sum(f(unpack(sizes, vecx)...; kwargs...)) X = pack(args) - @test ForwardDiff.gradient(F, X) == gradient(F, X) + if length(args) < 4 + @test f(track.(args)...; kwargs...) isa type + @test value(f(track.(args)...; kwargs...)) == f(args...; kwargs...) + @test ForwardDiff.gradient(F, X) == gradient(F, X) + else + @test_broken f(track.(args)...; kwargs...) isa type + @test_broken value(f(track.(args)...; kwargs...)) == f(args...; kwargs...) + @test_broken ForwardDiff.gradient(F, X) == gradient(F, X) + end end + function pack(xs) return mapreduce(vcat, xs) do x x isa Number ? x : vec(x) @@ -67,8 +72,8 @@ end @testset "cat" begin v = rand(3) - m = rand(3,3) - a = rand(3,3,3) + m = rand(3, 3) + a = rand(3, 3, 3) n = rand() testcat(cat, (n,), TrackedVector, (dims=1,)) From c89b4082ae2152cb6f5d957f7e9d620d2ebb67e5 Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Mon, 29 Jul 2024 12:27:53 +0200 Subject: [PATCH 2/9] Put everything inside testset --- test/derivatives/ArrayFunctionTests.jl | 56 +++++++++++++------------- test/runtests.jl | 6 +++ 2 files changed, 35 insertions(+), 27 deletions(-) diff --git a/test/derivatives/ArrayFunctionTests.jl b/test/derivatives/ArrayFunctionTests.jl index d521dcf8..06df6853 100644 --- a/test/derivatives/ArrayFunctionTests.jl +++ b/test/derivatives/ArrayFunctionTests.jl @@ -17,37 +17,39 @@ end end function testcat(f, args::Tuple, type, kwargs=NamedTuple()) - x = f(track.(args)...; kwargs...) - @test x isa type - @test value(x) == f(args...; kwargs...) - - if length(args) == 1 - x = f(track(args[1]); kwargs...) - @test x isa type - @test value(x) == f(args...; kwargs...) - else - @assert length(args) == 2 - x = f(track(args[1]), args[2]; kwargs...) + @testset "$f - $(typeof(args)) - $type - $kwargs" begin + x = f(track.(args)...; kwargs...) @test x isa type @test value(x) == f(args...; kwargs...) - x = f(args[1], track(args[2]); kwargs...) - @test x isa type - @test value(x) == f(args...; kwargs...) - end + if length(args) == 1 + x = f(track(args[1]); kwargs...) + @test x isa type + @test value(x) == f(args...; kwargs...) + else + @assert length(args) == 2 + x = f(track(args[1]), args[2]; kwargs...) + @test x isa type + @test value(x) == f(args...; kwargs...) + + x = f(args[1], track(args[2]); kwargs...) + @test x isa type + @test value(x) == f(args...; kwargs...) + end - args = (args..., args...) - sizes = size.(args) - F = vecx -> sum(f(unpack(sizes, vecx)...; kwargs...)) - X = pack(args) - if length(args) < 4 - @test f(track.(args)...; kwargs...) isa type - @test value(f(track.(args)...; kwargs...)) == f(args...; kwargs...) - @test ForwardDiff.gradient(F, X) == gradient(F, X) - else - @test_broken f(track.(args)...; kwargs...) isa type - @test_broken value(f(track.(args)...; kwargs...)) == f(args...; kwargs...) - @test_broken ForwardDiff.gradient(F, X) == gradient(F, X) + args = (args..., args...) + sizes = size.(args) + F = vecx -> sum(f(unpack(sizes, vecx)...; kwargs...)) + X = pack(args) + if length(args) < 4 + @test f(track.(args)...; kwargs...) isa type + @test value(f(track.(args)...; kwargs...)) == f(args...; kwargs...) + @test ForwardDiff.gradient(F, X) == gradient(F, X) + else + @test_broken f(track.(args)...; kwargs...) isa type + @test_broken value(f(track.(args)...; kwargs...)) == f(args...; kwargs...) + @test_broken ForwardDiff.gradient(F, X) == gradient(F, X) + end end end diff --git a/test/runtests.jl b/test/runtests.jl index 5dbba762..ad1c050d 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,7 +1,11 @@ +using Test + const TESTDIR = dirname(@__FILE__) test_println(kind, f, pad = " ") = println(pad, "testing $(kind): `$(f)`...") +@testset verbose = true "ReverseDiff" begin + println("running TapeTests...") t = @elapsed include(joinpath(TESTDIR, "TapeTests.jl")) println("done (took $t seconds).") @@ -53,3 +57,5 @@ println("done (took $t seconds).") println("running CompatTests...") t = @elapsed include(joinpath(TESTDIR, "compat/CompatTests.jl")) println("done (took $t seconds).") + +end \ No newline at end of file From 21f6e416a5069d968622cfb2a7d0f122e8b34a2a Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Mon, 29 Jul 2024 12:31:44 +0200 Subject: [PATCH 3/9] No testsets on 1.0 --- test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index ad1c050d..71555b92 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -4,7 +4,7 @@ const TESTDIR = dirname(@__FILE__) test_println(kind, f, pad = " ") = println(pad, "testing $(kind): `$(f)`...") -@testset verbose = true "ReverseDiff" begin +@testset "ReverseDiff" begin println("running TapeTests...") t = @elapsed include(joinpath(TESTDIR, "TapeTests.jl")) From 1a506db9e249c894d1c1f8b84a7c541c15755960 Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Mon, 29 Jul 2024 13:16:19 +0200 Subject: [PATCH 4/9] Narrow down on broken tests --- test/derivatives/ArrayFunctionTests.jl | 64 +++++++++++++++----------- 1 file changed, 37 insertions(+), 27 deletions(-) diff --git a/test/derivatives/ArrayFunctionTests.jl b/test/derivatives/ArrayFunctionTests.jl index 06df6853..0616c01c 100644 --- a/test/derivatives/ArrayFunctionTests.jl +++ b/test/derivatives/ArrayFunctionTests.jl @@ -17,40 +17,50 @@ end end function testcat(f, args::Tuple, type, kwargs=NamedTuple()) - @testset "$f - $(typeof(args)) - $type - $kwargs" begin - x = f(track.(args)...; kwargs...) + x = f(track.(args)...; kwargs...) + @test x isa type + @test value(x) == f(args...; kwargs...) + + if length(args) == 1 + x = f(track(args[1]); kwargs...) @test x isa type @test value(x) == f(args...; kwargs...) + else + @assert length(args) == 2 - if length(args) == 1 - x = f(track(args[1]); kwargs...) - @test x isa type - @test value(x) == f(args...; kwargs...) + broken = f == hcat && (args[2] isa AbstractMatrix) + if broken + @test_broken f(track(args[1]), args[2]; kwargs...) isa type + @test_broken value(f(track(args[1]), args[2]; kwargs...)) == f(args...; kwargs...) else - @assert length(args) == 2 - x = f(track(args[1]), args[2]; kwargs...) - @test x isa type - @test value(x) == f(args...; kwargs...) - - x = f(args[1], track(args[2]); kwargs...) - @test x isa type - @test value(x) == f(args...; kwargs...) + @test f(track(args[1]), args[2]; kwargs...) isa type + @test value(f(track(args[1]), args[2]; kwargs...)) == f(args...; kwargs...) end - args = (args..., args...) - sizes = size.(args) - F = vecx -> sum(f(unpack(sizes, vecx)...; kwargs...)) - X = pack(args) - if length(args) < 4 - @test f(track.(args)...; kwargs...) isa type - @test value(f(track.(args)...; kwargs...)) == f(args...; kwargs...) - @test ForwardDiff.gradient(F, X) == gradient(F, X) + broken = f == hcat && (args[1] isa AbstractMatrix) + if broken + @test_broken f(args[1], track(args[2]); kwargs...) isa type + @test_broken value(f(args[1], track(args[2]); kwargs...)) == f(args...; kwargs...) else - @test_broken f(track.(args)...; kwargs...) isa type - @test_broken value(f(track.(args)...; kwargs...)) == f(args...; kwargs...) - @test_broken ForwardDiff.gradient(F, X) == gradient(F, X) + @test f(args[1], track(args[2]); kwargs...) isa type + @test value(f(args[1], track(args[2]); kwargs...)) == f(args...; kwargs...) end end + + args = (args..., args...) + sizes = size.(args) + broken = (f in (vcat, hcat) && (args[2] isa AbstractArray)) + if broken + @test_broken f(track.(args)...; kwargs...) isa type + @test_broken value(f(track.(args)...; kwargs...)) == f(args...; kwargs...) + else + @test f(track.(args)...; kwargs...) isa type + @test value(f(track.(args)...; kwargs...)) == f(args...; kwargs...) + end + + F = vecx -> sum(f(unpack(sizes, vecx)...; kwargs...)) + X = pack(args) + @test ForwardDiff.gradient(F, X) == gradient(F, X) end function pack(xs) @@ -72,7 +82,7 @@ function unpack(sizes, vecx) return out end -@testset "cat" begin +@testset verbose = true "cat" begin v = rand(3) m = rand(3, 3) a = rand(3, 3, 3) @@ -105,4 +115,4 @@ end testcat(hcat, (v, v), TrackedMatrix) testcat(hcat, (v, m), TrackedMatrix) testcat(hcat, (m, v), TrackedMatrix) -end +end; From 43ba5561da9ba110a6c9b21ee039ea3ba19de8c6 Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Mon, 29 Jul 2024 13:17:02 +0200 Subject: [PATCH 5/9] Minimize diff --- test/derivatives/ArrayFunctionTests.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/derivatives/ArrayFunctionTests.jl b/test/derivatives/ArrayFunctionTests.jl index 0616c01c..e8161dfe 100644 --- a/test/derivatives/ArrayFunctionTests.jl +++ b/test/derivatives/ArrayFunctionTests.jl @@ -84,8 +84,8 @@ end @testset verbose = true "cat" begin v = rand(3) - m = rand(3, 3) - a = rand(3, 3, 3) + m = rand(3,3) + a = rand(3,3,3) n = rand() testcat(cat, (n,), TrackedVector, (dims=1,)) @@ -115,4 +115,4 @@ end testcat(hcat, (v, v), TrackedMatrix) testcat(hcat, (v, m), TrackedMatrix) testcat(hcat, (m, v), TrackedMatrix) -end; +end From d23c53703909cf264c45bf97abc2eff0f3767ab5 Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Mon, 29 Jul 2024 13:17:25 +0200 Subject: [PATCH 6/9] Newline --- test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index 71555b92..358d7304 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -58,4 +58,4 @@ println("running CompatTests...") t = @elapsed include(joinpath(TESTDIR, "compat/CompatTests.jl")) println("done (took $t seconds).") -end \ No newline at end of file +end From 18637f10d2290c2d250ad406dd61a7028cb243ea Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Mon, 29 Jul 2024 13:18:05 +0200 Subject: [PATCH 7/9] No verbose --- test/derivatives/ArrayFunctionTests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/derivatives/ArrayFunctionTests.jl b/test/derivatives/ArrayFunctionTests.jl index e8161dfe..df85e2d2 100644 --- a/test/derivatives/ArrayFunctionTests.jl +++ b/test/derivatives/ArrayFunctionTests.jl @@ -82,7 +82,7 @@ function unpack(sizes, vecx) return out end -@testset verbose = true "cat" begin +@testset "cat" begin v = rand(3) m = rand(3,3) a = rand(3,3,3) From bd3f63df940e6885270d1430a45b9c80dcfdf59d Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Mon, 29 Jul 2024 15:34:41 +0200 Subject: [PATCH 8/9] Version check --- test/derivatives/ArrayFunctionTests.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/derivatives/ArrayFunctionTests.jl b/test/derivatives/ArrayFunctionTests.jl index df85e2d2..2a14d7de 100644 --- a/test/derivatives/ArrayFunctionTests.jl +++ b/test/derivatives/ArrayFunctionTests.jl @@ -29,7 +29,7 @@ function testcat(f, args::Tuple, type, kwargs=NamedTuple()) @assert length(args) == 2 broken = f == hcat && (args[2] isa AbstractMatrix) - if broken + if broken && VERSION > v"1.3" @test_broken f(track(args[1]), args[2]; kwargs...) isa type @test_broken value(f(track(args[1]), args[2]; kwargs...)) == f(args...; kwargs...) else @@ -38,7 +38,7 @@ function testcat(f, args::Tuple, type, kwargs=NamedTuple()) end broken = f == hcat && (args[1] isa AbstractMatrix) - if broken + if broken && VERSION > v"1.3" @test_broken f(args[1], track(args[2]); kwargs...) isa type @test_broken value(f(args[1], track(args[2]); kwargs...)) == f(args...; kwargs...) else @@ -50,7 +50,7 @@ function testcat(f, args::Tuple, type, kwargs=NamedTuple()) args = (args..., args...) sizes = size.(args) broken = (f in (vcat, hcat) && (args[2] isa AbstractArray)) - if broken + if broken && VERSION > v"1.3" @test_broken f(track.(args)...; kwargs...) isa type @test_broken value(f(track.(args)...; kwargs...)) == f(args...; kwargs...) else From 1aa0e5f6137cec991029039512912af5b33d404b Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Mon, 29 Jul 2024 16:13:00 +0200 Subject: [PATCH 9/9] 1.4 --- test/derivatives/ArrayFunctionTests.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/derivatives/ArrayFunctionTests.jl b/test/derivatives/ArrayFunctionTests.jl index 2a14d7de..75dcf927 100644 --- a/test/derivatives/ArrayFunctionTests.jl +++ b/test/derivatives/ArrayFunctionTests.jl @@ -29,7 +29,7 @@ function testcat(f, args::Tuple, type, kwargs=NamedTuple()) @assert length(args) == 2 broken = f == hcat && (args[2] isa AbstractMatrix) - if broken && VERSION > v"1.3" + if broken && VERSION >= v"1.4" @test_broken f(track(args[1]), args[2]; kwargs...) isa type @test_broken value(f(track(args[1]), args[2]; kwargs...)) == f(args...; kwargs...) else @@ -38,7 +38,7 @@ function testcat(f, args::Tuple, type, kwargs=NamedTuple()) end broken = f == hcat && (args[1] isa AbstractMatrix) - if broken && VERSION > v"1.3" + if broken && VERSION >= v"1.4" @test_broken f(args[1], track(args[2]); kwargs...) isa type @test_broken value(f(args[1], track(args[2]); kwargs...)) == f(args...; kwargs...) else @@ -50,7 +50,7 @@ function testcat(f, args::Tuple, type, kwargs=NamedTuple()) args = (args..., args...) sizes = size.(args) broken = (f in (vcat, hcat) && (args[2] isa AbstractArray)) - if broken && VERSION > v"1.3" + if broken && VERSION >= v"1.4" @test_broken f(track.(args)...; kwargs...) isa type @test_broken value(f(track.(args)...; kwargs...)) == f(args...; kwargs...) else