spack checksum: handle all versions dropped better (#40530)

* spack checksum: fix error when all versions are dropped

* add test
This commit is contained in:
Harmen Stoppels 2023-10-16 00:08:11 +02:00 committed by GitHub
parent 718aa8b82f
commit a9cfa32c34
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 3 deletions

View File

@ -154,7 +154,7 @@ def checksum(parser, args):
filtered_url_dict = spack.stage.interactive_version_filter(
url_dict, pkg.versions, url_changes=url_changed_for_version
)
if filtered_url_dict is None:
if not filtered_url_dict:
exit(0)
url_dict = filtered_url_dict
else:

View File

@ -893,7 +893,9 @@ def interactive_version_filter(
if print_header:
has_filter = version_filter != VersionList([":"])
header = []
if len(sorted_and_filtered) == len(orig_url_dict):
if not sorted_and_filtered:
header.append("No versions selected")
elif len(sorted_and_filtered) == len(orig_url_dict):
header.append(
f"Selected {llnl.string.plural(len(sorted_and_filtered), 'version')}"
)
@ -901,7 +903,7 @@ def interactive_version_filter(
header.append(
f"Selected {len(sorted_and_filtered)} of {len(orig_url_dict)} versions"
)
if known_versions:
if sorted_and_filtered and known_versions:
num_new = sum(1 for v in sorted_and_filtered if v not in known_versions)
header.append(f"{llnl.string.plural(num_new, 'new version')}")
if has_filter:

View File

@ -169,6 +169,22 @@ def test_checksum_interactive_quit_from_ask_each():
}
def test_checksum_interactive_nothing_left():
"""If nothing is left after interactive filtering, return an empty dict."""
input = input_from_commands("f", "@2", "c")
assert (
interactive_version_filter(
{
Version("1.1"): "https://www.example.com/pkg-1.1.tar.gz",
Version("1.0"): "https://www.example.com/pkg-1.0.tar.gz",
Version("0.9"): "https://www.example.com/pkg-0.9.tar.gz",
},
input=input,
)
== {}
)
def test_checksum_interactive_new_only():
# The 1.0 version is known already, and should be dropped on `n`.
input = input_from_commands("n", "c")