# This file is a part of Julia. License is MIT: http://julialang.org/license
@doc """
`tests, net_on = choosetests(choices)` selects a set of tests to be
run. `choices` should be a vector of test names; if empty or set to
`["all"]`, all tests are selected.
This function also supports "test collections": specifically, "linalg"
refers to collections of tests in the correspondingly-named
directories.
Upon return, `tests` is a vector of fully-expanded test names, and
`net_on` is true if networking is available (required for some tests).
""" ->
function choosetests(choices = [])
testnames = [
"linalg", "core", "keywordargs", "numbers", "strings",
"dates", "dict", "hashing", "remote", "iobuffer", "staged",
"arrayops", "tuple", "subarray", "reduce", "reducedim", "random",
"abstractarray", "intfuncs", "simdloop", "blas", "sparse",
"bitarray", "copy", "math", "fastmath", "functional",
"operators", "path", "ccall", "unicode",
"bigint", "sorting", "statistics", "spawn", "backtrace",
"priorityqueue", "file", "version", "resolve",
"pollfd", "mpfr", "broadcast", "complex", "socket",
"floatapprox", "readdlm", "reflection", "regex", "float16",
"combinatorics", "sysinfo", "rounding", "ranges", "mod2pi",
"euler", "show", "lineedit", "replcompletions", "repl",
"replutil", "sets", "test", "goto", "llvmcall", "grisu",
"nullable", "meta", "profile", "libgit2", "docs", "markdown",
"base64", "parser", "serialize", "functors", "char", "misc",
"enums", "cmdlineargs", "i18n"
]
if Base.USE_GPL_LIBS
testnames = [testnames, "fft", "dsp"; ]
end
if isdir(joinpath(JULIA_HOME, Base.DOCDIR, "examples"))
push!(testnames, "examples")
end
# parallel tests depend on other workers - do them last
push!(testnames, "parallel")
tests = []
skip_tests = []
for (i, t) in enumerate(choices)
if t == "--skip"
skip_tests = choices[i + 1:end]
break
else
push!(tests, t)
end
end
if tests == ["all"] || isempty(tests)
tests = testnames
end
linalgtests = ["linalg1", "linalg2", "linalg3", "linalg4",
"linalg/lapack", "linalg/triangular", "linalg/tridiag",
"linalg/bidiag", "linalg/diagonal",
"linalg/pinv", "linalg/givens", "linalg/cholesky",
"linalg/lu", "linalg/symmetric", "linalg/generic"]
if Base.USE_GPL_LIBS
push!(linalgtests, "linalg/arnoldi")
end
if "linalg" in skip_tests
filter!(x -> (x != "linalg" && !(x in linalgtests)), tests)
elseif "linalg" in tests
# specifically selected case
filter!(x -> x != "linalg", tests)
prepend!(tests, linalgtests)
end
net_required_for = ["socket", "parallel"]
net_on = true
try
getipaddr()
catch
warn("Networking unavailable: Skipping tests [" * join(net_required_for, ", ") * "]")
net_on = false
end
if ccall(:jl_running_on_valgrind,Cint,()) != 0 && "rounding" in tests
warn("Running under valgrind: Skipping rounding tests")
filter!(x -> x != "rounding", tests)
end
if !net_on
filter!(x -> !(x in net_required_for), tests)
end
filter!(x -> !(x in skip_tests), tests)
tests, net_on
end