add spack test list --all
(#22032)
`spack test list` will show you which *installed* packages can be tested but it won't show you which packages have tests. - [x] add `spack test list --all` to show which packages have test methods - [x] update `has_test_method()` to handle package instances *and* package classes.
This commit is contained in:
@@ -10,15 +10,18 @@
|
|||||||
import fnmatch
|
import fnmatch
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
|
import sys
|
||||||
|
|
||||||
import llnl.util.tty as tty
|
import llnl.util.tty as tty
|
||||||
|
import llnl.util.tty.colify as colify
|
||||||
|
|
||||||
import spack.install_test
|
import spack.install_test
|
||||||
import spack.environment as ev
|
import spack.environment as ev
|
||||||
import spack.cmd
|
import spack.cmd
|
||||||
import spack.cmd.common.arguments as arguments
|
import spack.cmd.common.arguments as arguments
|
||||||
import spack.report
|
|
||||||
import spack.package
|
import spack.package
|
||||||
|
import spack.repo
|
||||||
|
import spack.report
|
||||||
|
|
||||||
description = "run spack's tests for an install"
|
description = "run spack's tests for an install"
|
||||||
section = "admin"
|
section = "admin"
|
||||||
@@ -78,8 +81,11 @@ def setup_parser(subparser):
|
|||||||
arguments.add_common_arguments(run_parser, ['installed_specs'])
|
arguments.add_common_arguments(run_parser, ['installed_specs'])
|
||||||
|
|
||||||
# List
|
# List
|
||||||
sp.add_parser('list', description=test_list.__doc__,
|
list_parser = sp.add_parser('list', description=test_list.__doc__,
|
||||||
help=first_line(test_list.__doc__))
|
help=first_line(test_list.__doc__))
|
||||||
|
list_parser.add_argument(
|
||||||
|
"-a", "--all", action="store_true", dest="list_all",
|
||||||
|
help="list all packages with tests (not just installed)")
|
||||||
|
|
||||||
# Find
|
# Find
|
||||||
find_parser = sp.add_parser('find', description=test_find.__doc__,
|
find_parser = sp.add_parser('find', description=test_find.__doc__,
|
||||||
@@ -188,11 +194,26 @@ def test_run(args):
|
|||||||
|
|
||||||
|
|
||||||
def has_test_method(pkg):
|
def has_test_method(pkg):
|
||||||
return pkg.test.__func__ != spack.package.PackageBase.test
|
pkg_base = spack.package.PackageBase
|
||||||
|
return (
|
||||||
|
(issubclass(pkg, pkg_base) and pkg.test != pkg_base.test) or
|
||||||
|
(isinstance(pkg, pkg_base) and pkg.test.__func__ != pkg_base.test)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_list(args):
|
def test_list(args):
|
||||||
"""List all installed packages with available tests."""
|
"""List installed packages with available tests."""
|
||||||
|
if args.list_all:
|
||||||
|
all_packages_with_tests = [
|
||||||
|
pkg_class.name
|
||||||
|
for pkg_class in spack.repo.path.all_package_classes()
|
||||||
|
if has_test_method(pkg_class)
|
||||||
|
]
|
||||||
|
if sys.stdout.isatty():
|
||||||
|
tty.msg("%d packages with tests." % len(all_packages_with_tests))
|
||||||
|
colify.colify(all_packages_with_tests)
|
||||||
|
return
|
||||||
|
|
||||||
# TODO: This can be extended to have all of the output formatting options
|
# TODO: This can be extended to have all of the output formatting options
|
||||||
# from `spack find`.
|
# from `spack find`.
|
||||||
env = ev.get_env(args, 'test')
|
env = ev.get_env(args, 'test')
|
||||||
|
@@ -181,3 +181,15 @@ def test_test_help_cdash(mock_test_stage):
|
|||||||
"""Make sure `spack test --help-cdash` describes CDash arguments"""
|
"""Make sure `spack test --help-cdash` describes CDash arguments"""
|
||||||
out = spack_test('run', '--help-cdash')
|
out = spack_test('run', '--help-cdash')
|
||||||
assert 'CDash URL' in out
|
assert 'CDash URL' in out
|
||||||
|
|
||||||
|
|
||||||
|
def test_list_all(mock_packages):
|
||||||
|
"""make sure `spack test list --all` returns all packages with tests"""
|
||||||
|
pkgs = spack_test("list", "--all").strip().split()
|
||||||
|
assert set(pkgs) == set([
|
||||||
|
"printing-package",
|
||||||
|
"py-extension1",
|
||||||
|
"py-extension2",
|
||||||
|
"test-error",
|
||||||
|
"test-fail",
|
||||||
|
])
|
||||||
|
@@ -1548,7 +1548,7 @@ _spack_test_run() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_spack_test_list() {
|
_spack_test_list() {
|
||||||
SPACK_COMPREPLY="-h --help"
|
SPACK_COMPREPLY="-h --help -a --all"
|
||||||
}
|
}
|
||||||
|
|
||||||
_spack_test_find() {
|
_spack_test_find() {
|
||||||
|
Reference in New Issue
Block a user