From 5854e381b2dd91604323c55d8a824300b61fd5f5 Mon Sep 17 00:00:00 2001 From: Michael Abbott <32575566+mcabbott@users.noreply.github.com> Date: Wed, 25 Aug 2021 14:59:08 -0400 Subject: [PATCH 1/4] use test_args --- test/runtests.jl | 49 ++++++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index cd6a15334..23e78ca03 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -22,24 +22,29 @@ union!(JuliaInterpreter.compiled_modules, Any[Base, Base.Broadcast, Compat, Line Random.seed!(1) # Set seed that all testsets should reset to. -function include_test(path::String) - println("Testing $path:") # print so TravisCI doesn't timeout due to no output - @time Base.include(@__MODULE__(), path) do ex - Meta.isexpr(ex, :macrocall) && ex.args[1] == Symbol("@testset") || return ex - return :(@interpret (() -> $ex)()) # interpret testsets using JuliaInterpreter +function include_test(path) + if isempty(ARGS) || any(occursin(a, w) for w in split(path, '/'), a in ARGS) + println("Testing $path:") # print so TravisCI doesn't timeout due to no output + @time include(path) # show basic timing, (this will print a newline at end) + else + # If you provide ARGS like so, then it runs only matching testsets: + # Pkg.test("ChainRules", test_args = ["index", "LinearAlgebra"]) + println("(Not testing $path)") end end -println("Testing ChainRules.jl") -@testset "ChainRules" begin - include_test("test_helpers.jl") - println() - @testset "rulesets" begin - @testset "Core" begin - include_test("rulesets/Core/core.jl") - end +if isempty(ARGS) + println("Testing ChainRules.jl") +else + println("Testing ChainRules.jl with test_args = ", ARGS) +end - @testset "Base" begin +@testset "ChainRules" begin # one overall @testset ensures it keeps going after failures + include("test_helpers.jl") + println() + # @testset "rulesets" begin + # @testset "Base" begin + # Each file puts all tests inside one or more @testset blocks include_test("rulesets/Base/base.jl") include_test("rulesets/Base/fastmath_able.jl") include_test("rulesets/Base/evalpoly.jl") @@ -48,15 +53,15 @@ println("Testing ChainRules.jl") include_test("rulesets/Base/indexing.jl") include_test("rulesets/Base/mapreduce.jl") include_test("rulesets/Base/sort.jl") - end + # end println() - @testset "Statistics" begin + # @testset "Statistics" begin include_test("rulesets/Statistics/statistics.jl") - end + # end println() - @testset "LinearAlgebra" begin + # @testset "LinearAlgebra" begin include_test("rulesets/LinearAlgebra/dense.jl") include_test("rulesets/LinearAlgebra/norm.jl") include_test("rulesets/LinearAlgebra/matfun.jl") @@ -65,12 +70,12 @@ println("Testing ChainRules.jl") include_test("rulesets/LinearAlgebra/factorization.jl") include_test("rulesets/LinearAlgebra/blas.jl") include_test("rulesets/LinearAlgebra/lapack.jl") - end + # end println() - @testset "Random" begin + # @testset "Random" begin include_test("rulesets/Random/random.jl") - end + # end println() - end + # end end From 152b3b2139e5edc54121919147c5f7f8a00ea914 Mon Sep 17 00:00:00 2001 From: Michael Abbott <32575566+mcabbott@users.noreply.github.com> Date: Wed, 25 Aug 2021 15:20:59 -0400 Subject: [PATCH 2/4] oops --- test/runtests.jl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 23e78ca03..bd47a6d09 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -23,9 +23,12 @@ union!(JuliaInterpreter.compiled_modules, Any[Base, Base.Broadcast, Compat, Line Random.seed!(1) # Set seed that all testsets should reset to. function include_test(path) - if isempty(ARGS) || any(occursin(a, w) for w in split(path, '/'), a in ARGS) + if isempty(ARGS) || any(occursin(a, path) for a in ARGS) println("Testing $path:") # print so TravisCI doesn't timeout due to no output - @time include(path) # show basic timing, (this will print a newline at end) + @time Base.include(@__MODULE__(), path) do ex + Meta.isexpr(ex, :macrocall) && ex.args[1] == Symbol("@testset") || return ex + return :(@interpret (() -> $ex)()) # interpret testsets using JuliaInterpreter + end else # If you provide ARGS like so, then it runs only matching testsets: # Pkg.test("ChainRules", test_args = ["index", "LinearAlgebra"]) From 9fe336603f6f69cd6242264f3e91c81b99486dba Mon Sep 17 00:00:00 2001 From: Michael Abbott <32575566+mcabbott@users.noreply.github.com> Date: Wed, 25 Aug 2021 16:12:08 -0400 Subject: [PATCH 3/4] some testset titles --- test/rulesets/Base/array.jl | 2 +- test/rulesets/LinearAlgebra/dense.jl | 2 +- test/rulesets/Random/random.jl | 2 +- test/runtests.jl | 63 +++++++++++++--------------- 4 files changed, 32 insertions(+), 37 deletions(-) diff --git a/test/rulesets/Base/array.jl b/test/rulesets/Base/array.jl index 233a85125..d6e379e50 100644 --- a/test/rulesets/Base/array.jl +++ b/test/rulesets/Base/array.jl @@ -1,4 +1,4 @@ -@testset "constructors" begin +@testset "Array constructors" begin # We can't use test_rrule here (as it's currently implemented) because the elements of # the array have arbitrary values. The only thing we can do is ensure that we're getting diff --git a/test/rulesets/LinearAlgebra/dense.jl b/test/rulesets/LinearAlgebra/dense.jl index da6fbf0d4..c7413dbb3 100644 --- a/test/rulesets/LinearAlgebra/dense.jl +++ b/test/rulesets/LinearAlgebra/dense.jl @@ -1,4 +1,4 @@ -@testset "dense" begin +@testset "dense LinearAlgebra" begin @testset "dot" begin @testset "Vector{$T}" for T in (Float64, ComplexF64) test_frule(dot, randn(T, 3), randn(T, 3)) diff --git a/test/rulesets/Random/random.jl b/test/rulesets/Random/random.jl index cf2a41595..4f1ccd3a8 100644 --- a/test/rulesets/Random/random.jl +++ b/test/rulesets/Random/random.jl @@ -5,7 +5,7 @@ struct NormalDistribution end Random.rand(d::NormalDistribution) = d.μ + d.σ*randn() -@testset "random" begin +@testset "Random" begin rng_types = [MersenneTwister] isdefined(Random, :Xoshiro) && push!(rng_types, getfield(Random, :Xoshiro)) diff --git a/test/runtests.jl b/test/runtests.jl index bd47a6d09..61548644b 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -42,43 +42,38 @@ else println("Testing ChainRules.jl with test_args = ", ARGS) end -@testset "ChainRules" begin # one overall @testset ensures it keeps going after failures +@testset "ChainRules" begin # One overall @testset ensures it keeps going after failures include("test_helpers.jl") println() - # @testset "rulesets" begin - # @testset "Base" begin - # Each file puts all tests inside one or more @testset blocks - include_test("rulesets/Base/base.jl") - include_test("rulesets/Base/fastmath_able.jl") - include_test("rulesets/Base/evalpoly.jl") - include_test("rulesets/Base/array.jl") - include_test("rulesets/Base/arraymath.jl") - include_test("rulesets/Base/indexing.jl") - include_test("rulesets/Base/mapreduce.jl") - include_test("rulesets/Base/sort.jl") - # end - println() - # @testset "Statistics" begin - include_test("rulesets/Statistics/statistics.jl") - # end - println() + # Each file puts all tests inside one or more @testset blocks + include_test("rulesets/Base/base.jl") + include_test("rulesets/Base/fastmath_able.jl") + include_test("rulesets/Base/evalpoly.jl") + include_test("rulesets/Base/array.jl") + include_test("rulesets/Base/arraymath.jl") + include_test("rulesets/Base/indexing.jl") + include_test("rulesets/Base/mapreduce.jl") + include_test("rulesets/Base/sort.jl") - # @testset "LinearAlgebra" begin - include_test("rulesets/LinearAlgebra/dense.jl") - include_test("rulesets/LinearAlgebra/norm.jl") - include_test("rulesets/LinearAlgebra/matfun.jl") - include_test("rulesets/LinearAlgebra/structured.jl") - include_test("rulesets/LinearAlgebra/symmetric.jl") - include_test("rulesets/LinearAlgebra/factorization.jl") - include_test("rulesets/LinearAlgebra/blas.jl") - include_test("rulesets/LinearAlgebra/lapack.jl") - # end - println() + println() + + include_test("rulesets/Statistics/statistics.jl") + + println() + + include_test("rulesets/LinearAlgebra/dense.jl") + include_test("rulesets/LinearAlgebra/norm.jl") + include_test("rulesets/LinearAlgebra/matfun.jl") + include_test("rulesets/LinearAlgebra/structured.jl") + include_test("rulesets/LinearAlgebra/symmetric.jl") + include_test("rulesets/LinearAlgebra/factorization.jl") + include_test("rulesets/LinearAlgebra/blas.jl") + include_test("rulesets/LinearAlgebra/lapack.jl") - # @testset "Random" begin - include_test("rulesets/Random/random.jl") - # end - println() - # end + println() + + include_test("rulesets/Random/random.jl") + + println() end From 2aae1c44849fe0c632c99f99cf3ce0015879e606 Mon Sep 17 00:00:00 2001 From: Michael Abbott <32575566+mcabbott@users.noreply.github.com> Date: Wed, 25 Aug 2021 17:13:36 -0400 Subject: [PATCH 4/4] titles --- test/rulesets/Base/arraymath.jl | 2 +- test/rulesets/Base/base.jl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/rulesets/Base/arraymath.jl b/test/rulesets/Base/arraymath.jl index 4b30eafab..9f4df7428 100644 --- a/test/rulesets/Base/arraymath.jl +++ b/test/rulesets/Base/arraymath.jl @@ -1,4 +1,4 @@ -@testset "arraymath" begin +@testset "arraymath.jl" begin @testset "inv(::Matrix{$T})" for T in (Float64, ComplexF64) B = generate_well_conditioned_matrix(T, 3) test_frule(inv, B) diff --git a/test/rulesets/Base/base.jl b/test/rulesets/Base/base.jl index e6dadaf47..820c1a3de 100644 --- a/test/rulesets/Base/base.jl +++ b/test/rulesets/Base/base.jl @@ -1,4 +1,4 @@ -@testset "base" begin +@testset "base.jl" begin @testset "copysign" begin # don't go too close to zero as the numerics may jump over it yielding wrong results @testset "at $y" for y in (-1.1, 0.1, 100.0)