diff --git a/src/ParallelTestRunner.jl b/src/ParallelTestRunner.jl index 4f6105c..0dee6a6 100644 --- a/src/ParallelTestRunner.jl +++ b/src/ParallelTestRunner.jl @@ -242,9 +242,11 @@ function runtests(mod::Module, args::ParsedArgs; # set-up # + + historical_durations, historical_failures = load_test_history(mod, history_key) + # list tests, if requested if args.list !== nothing - historical_durations, historical_failures = load_test_history(mod, history_key) sorted_tests = sort(collect(keys(testsuite))) name_align = isempty(sorted_tests) ? 0 : maximum(textwidth, sorted_tests) duration_strs = Dict( @@ -270,13 +272,21 @@ function runtests(mod::Module, args::ParsedArgs; # filter tests filter_tests!(testsuite, args) + # remove tests that previously passed + if args.skippassed !== nothing + for test in keys(testsuite) + if test in keys(historical_durations) && test ∉ historical_failures + delete!(testsuite, test) + end + end + end + # filter serial list to only include tests that survived filtering serial = filter(t -> haskey(testsuite, t), serial) # determine test order tests = collect(keys(testsuite)) Random.shuffle!(tests) - historical_durations, historical_failures = load_test_history(mod, history_key) get_historical_duration(test) = TestHistoryEntry(get(historical_durations, test, Inf), test in historical_failures) sort!(tests, by = x -> get_historical_duration(x), rev = true) diff --git a/src/args.jl b/src/args.jl index 5f20c4b..24bc768 100644 --- a/src/args.jl +++ b/src/args.jl @@ -63,6 +63,7 @@ struct ParsedArgs verbose::Union{Some{Nothing}, Nothing} quickfail::Union{Some{Nothing}, Nothing} list::Union{Some{Nothing}, Nothing} + skippassed::Union{Some{Nothing}, Nothing} custom::Dict{String,Any} @@ -145,6 +146,7 @@ function parse_args(args; custom::Array{String} = String[]) verbose = extract_flag!(args, "--verbose") quickfail = extract_flag!(args, "--quickfail") list = extract_flag!(args, "--list") + skippassed = extract_flag!(args, "--skippassed") # Experimental # boolean flags don't take values for (flag, val) in (("--verbose", verbose), ("--quickfail", quickfail), ("--list", list)) @@ -164,7 +166,7 @@ function parse_args(args; custom::Array{String} = String[]) error("Unknown test options `$(join(optlike_args, " "))` (try `--help` for usage instructions)") end - return ParsedArgs(jobs, verbose, quickfail, list, custom_args, args) + return ParsedArgs(jobs, verbose, quickfail, list, skippassed, custom_args, args) end """