From 8c12c31abb537fe5c9baecfda81df9c4212fc7ee Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Fri, 2 May 2025 12:49:31 +0100 Subject: [PATCH] Allow any run-for tag to match in single_tag mode. Fixes #57 --- src/manage/installs.py | 2 +- tests/test_installs.py | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/manage/installs.py b/src/manage/installs.py index debd0d2..569ce1b 100644 --- a/src/manage/installs.py +++ b/src/manage/installs.py @@ -170,7 +170,7 @@ def get_matching_install_tags( else: matches.append((i, t)) matched_any = True - if single_tag: + if single_tag and matched_any: break if LOGGER.would_log_to_console(DEBUG): # Don't bother listing all installs unless the user has asked diff --git a/tests/test_installs.py b/tests/test_installs.py index f837620..bfa4bca 100644 --- a/tests/test_installs.py +++ b/tests/test_installs.py @@ -40,9 +40,9 @@ def fake_get_installs(install_dir): def fake_get_installs2(install_dir): yield make_install("1.0-32", sort_version="1.0") - yield make_install("3.0a1-32", sort_version="3.0a1", run_for=["3-32", "3.0-32", "3.0a1-32"]) - yield make_install("3.0a1-64", sort_version="3.0a1", run_for=["3-64", "3.0-64", "3.0a1-64"]) - yield make_install("3.0a1-arm64", sort_version="3.0a1", run_for=["3-arm64", "3.0-arm64", "3.0a1-arm64"]) + yield make_install("3.0a1-32", sort_version="3.0a1", run_for=["3.0.1a1-32", "3.0-32", "3-32"]) + yield make_install("3.0a1-64", sort_version="3.0a1", run_for=["3.0.1a1-64", "3.0-64", "3-64"]) + yield make_install("3.0a1-arm64", sort_version="3.0a1", run_for=["3.0.1a1-arm64", "3.0-arm64", "3-arm64"]) def fake_get_unmanaged_installs(): @@ -102,6 +102,17 @@ def test_get_default_with_default_platform(patched_installs): assert i["id"] == "PythonCore-1.0-32" +def test_get_default_install_prerelease(patched_installs2): + inst = list(installs._get_installs("")) + m = installs.get_matching_install_tags(inst, "1.0", None, "-32", single_tag=True) + assert m and m[0] + assert m[0][0]["id"] == "PythonCore-1.0-32" + + m = installs.get_matching_install_tags(inst, "3.0", None, "-32", single_tag=True) + assert m and m[0] + assert m[0][0]["id"] == "PythonCore-3.0a1-32" + + def test_get_install_to_run(patched_installs): i = installs.get_install_to_run("", None, "1.0") assert i["id"] == "PythonCore-1.0"