spack checksum: handle all versions dropped better (#40530)
* spack checksum: fix error when all versions are dropped * add test
This commit is contained in:
parent
718aa8b82f
commit
a9cfa32c34
@ -154,7 +154,7 @@ def checksum(parser, args):
|
|||||||
filtered_url_dict = spack.stage.interactive_version_filter(
|
filtered_url_dict = spack.stage.interactive_version_filter(
|
||||||
url_dict, pkg.versions, url_changes=url_changed_for_version
|
url_dict, pkg.versions, url_changes=url_changed_for_version
|
||||||
)
|
)
|
||||||
if filtered_url_dict is None:
|
if not filtered_url_dict:
|
||||||
exit(0)
|
exit(0)
|
||||||
url_dict = filtered_url_dict
|
url_dict = filtered_url_dict
|
||||||
else:
|
else:
|
||||||
|
@ -893,7 +893,9 @@ def interactive_version_filter(
|
|||||||
if print_header:
|
if print_header:
|
||||||
has_filter = version_filter != VersionList([":"])
|
has_filter = version_filter != VersionList([":"])
|
||||||
header = []
|
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(
|
header.append(
|
||||||
f"Selected {llnl.string.plural(len(sorted_and_filtered), 'version')}"
|
f"Selected {llnl.string.plural(len(sorted_and_filtered), 'version')}"
|
||||||
)
|
)
|
||||||
@ -901,7 +903,7 @@ def interactive_version_filter(
|
|||||||
header.append(
|
header.append(
|
||||||
f"Selected {len(sorted_and_filtered)} of {len(orig_url_dict)} versions"
|
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)
|
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')}")
|
header.append(f"{llnl.string.plural(num_new, 'new version')}")
|
||||||
if has_filter:
|
if has_filter:
|
||||||
|
@ -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():
|
def test_checksum_interactive_new_only():
|
||||||
# The 1.0 version is known already, and should be dropped on `n`.
|
# The 1.0 version is known already, and should be dropped on `n`.
|
||||||
input = input_from_commands("n", "c")
|
input = input_from_commands("n", "c")
|
||||||
|
Loading…
Reference in New Issue
Block a user