view test/runtests.jl @ 760:e7176fb09e98 test/type_stability

Add utility function for testing type stability using the @inferred macro to allow for tests failing, rather than producing an error.
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Fri, 02 Jul 2021 14:02:45 +0200
parents e279c53eb647
children
line wrap: on
line source

using Test
using Glob

include("test_util.jl")


"""
    run_testfiles()
    run_testfiles(path, globs)

Find and run all files with filenames ending with "_test.jl". If `path` is omitted the test folder is assumed.
The argument `globs` can optionally be supplied to filter which test files are run.
"""
function run_testfiles(args)
    if isempty(args)
        globs = [fn"./*"]
    else
        globs = Glob.FilenameMatch.("./".*args)
    end

    run_testfiles(".", globs)
end

function  run_testfiles(path, globs)
    for name ∈ readdir(path)
        filepath = joinpath(path, name)

        if isdir(filepath)
            @testset "$name" begin
                run_testfiles(filepath, globs)
            end
        end

        if endswith(name, "_test.jl") && any(occursin.(globs, filepath))
            printstyled("Running "; bold=true, color=:green)
            print(filepath)

            t_start = time()
            @testset "$name" begin
                include(filepath)
            end
            t_end = time()

            Δt = t_end - t_start
            printstyled(" ($(round(Δt, digits=2)) s)"; color=:light_black)
            println()
        end
    end
end

testsetname = isempty(ARGS) ? "Sbplib.jl" : "["*join(ARGS, ", ")*"]"

@testset "$testsetname" begin
    run_testfiles(ARGS)
end