feature: Add -x|--explicit option to 'spack test run' (#32910)
This commit is contained in:
parent
9d5151ba25
commit
512f8d14d2
3 changed files with 21 additions and 7 deletions
|
@ -54,6 +54,12 @@ def setup_parser(subparser):
|
||||||
run_parser.add_argument(
|
run_parser.add_argument(
|
||||||
"--externals", action="store_true", help="Test packages that are externally installed."
|
"--externals", action="store_true", help="Test packages that are externally installed."
|
||||||
)
|
)
|
||||||
|
run_parser.add_argument(
|
||||||
|
"-x",
|
||||||
|
"--explicit",
|
||||||
|
action="store_true",
|
||||||
|
help="Only test packages that are explicitly installed.",
|
||||||
|
)
|
||||||
run_parser.add_argument(
|
run_parser.add_argument(
|
||||||
"--keep-stage", action="store_true", help="Keep testing directory for debugging"
|
"--keep-stage", action="store_true", help="Keep testing directory for debugging"
|
||||||
)
|
)
|
||||||
|
@ -188,6 +194,9 @@ def test_run(args):
|
||||||
if args.fail_fast:
|
if args.fail_fast:
|
||||||
spack.config.set("config:fail_fast", True, scope="command_line")
|
spack.config.set("config:fail_fast", True, scope="command_line")
|
||||||
|
|
||||||
|
explicit = args.explicit or any
|
||||||
|
explicit_str = "explicitly " if args.explicit else ""
|
||||||
|
|
||||||
# Get specs to test
|
# Get specs to test
|
||||||
env = ev.active_environment()
|
env = ev.active_environment()
|
||||||
hashes = env.all_hashes() if env else None
|
hashes = env.all_hashes() if env else None
|
||||||
|
@ -195,9 +204,13 @@ def test_run(args):
|
||||||
specs = spack.cmd.parse_specs(args.specs) if args.specs else [None]
|
specs = spack.cmd.parse_specs(args.specs) if args.specs else [None]
|
||||||
specs_to_test = []
|
specs_to_test = []
|
||||||
for spec in specs:
|
for spec in specs:
|
||||||
matching = spack.store.db.query_local(spec, hashes=hashes)
|
matching = spack.store.db.query_local(
|
||||||
|
spec,
|
||||||
|
hashes=hashes,
|
||||||
|
explicit=explicit,
|
||||||
|
)
|
||||||
if spec and not matching:
|
if spec and not matching:
|
||||||
tty.warn("No installed packages match spec %s" % spec)
|
tty.warn("No {0}installed packages match spec {1}".format(explicit_str, spec))
|
||||||
"""
|
"""
|
||||||
TODO: Need to write out a log message and/or CDASH Testing
|
TODO: Need to write out a log message and/or CDASH Testing
|
||||||
output that package not installed IF continue to process
|
output that package not installed IF continue to process
|
||||||
|
@ -208,6 +221,7 @@ def test_run(args):
|
||||||
# to ensure report package as skipped (e.g., for CI)
|
# to ensure report package as skipped (e.g., for CI)
|
||||||
specs_to_test.append(spec)
|
specs_to_test.append(spec)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
specs_to_test.extend(matching)
|
specs_to_test.extend(matching)
|
||||||
|
|
||||||
# test_stage_dir
|
# test_stage_dir
|
||||||
|
|
|
@ -467,7 +467,7 @@ def test_affected_specs_on_first_concretization(mutable_mock_env_path, config):
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(
|
@pytest.mark.skipif(
|
||||||
sys.platform == "win32", reason="Reliance on bash script ot supported on Windows"
|
sys.platform == "win32", reason="Reliance on bash script not supported on Windows"
|
||||||
)
|
)
|
||||||
def test_ci_process_command(tmpdir):
|
def test_ci_process_command(tmpdir):
|
||||||
repro_dir = tmpdir.join("repro_dir").strpath
|
repro_dir = tmpdir.join("repro_dir").strpath
|
||||||
|
@ -479,7 +479,7 @@ def test_ci_process_command(tmpdir):
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(
|
@pytest.mark.skipif(
|
||||||
sys.platform == "win32", reason="Reliance on bash script ot supported on Windows"
|
sys.platform == "win32", reason="Reliance on bash script not supported on Windows"
|
||||||
)
|
)
|
||||||
def test_ci_process_command_fail(tmpdir, monkeypatch):
|
def test_ci_process_command_fail(tmpdir, monkeypatch):
|
||||||
import subprocess
|
import subprocess
|
||||||
|
@ -526,7 +526,7 @@ def test_ci_run_standalone_tests_missing_requirements(
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(
|
@pytest.mark.skipif(
|
||||||
sys.platform == "win32", reason="Reliance on bash script ot supported on Windows"
|
sys.platform == "win32", reason="Reliance on bash script not supported on Windows"
|
||||||
)
|
)
|
||||||
def test_ci_run_standalone_tests_not_installed_junit(
|
def test_ci_run_standalone_tests_not_installed_junit(
|
||||||
tmpdir, working_env, config, mock_packages, mock_test_stage, capfd
|
tmpdir, working_env, config, mock_packages, mock_test_stage, capfd
|
||||||
|
@ -547,7 +547,7 @@ def test_ci_run_standalone_tests_not_installed_junit(
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(
|
@pytest.mark.skipif(
|
||||||
sys.platform == "win32", reason="Reliance on bash script ot supported on Windows"
|
sys.platform == "win32", reason="Reliance on bash script not supported on Windows"
|
||||||
)
|
)
|
||||||
def test_ci_run_standalone_tests_not_installed_cdash(
|
def test_ci_run_standalone_tests_not_installed_cdash(
|
||||||
tmpdir, working_env, config, mock_packages, mock_test_stage, capfd
|
tmpdir, working_env, config, mock_packages, mock_test_stage, capfd
|
||||||
|
|
|
@ -1738,7 +1738,7 @@ _spack_test() {
|
||||||
_spack_test_run() {
|
_spack_test_run() {
|
||||||
if $list_options
|
if $list_options
|
||||||
then
|
then
|
||||||
SPACK_COMPREPLY="-h --help --alias --fail-fast --fail-first --externals --keep-stage --log-format --log-file --cdash-upload-url --cdash-build --cdash-site --cdash-track --cdash-buildstamp --help-cdash --clean --dirty"
|
SPACK_COMPREPLY="-h --help --alias --fail-fast --fail-first --externals -x --explicit --keep-stage --log-format --log-file --cdash-upload-url --cdash-build --cdash-site --cdash-track --cdash-buildstamp --help-cdash --clean --dirty"
|
||||||
else
|
else
|
||||||
_installed_packages
|
_installed_packages
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in a new issue