versions: do not drop 2.0.X if 2.0 is a declared version in the package (#23217)
This commit is contained in:
parent
1d10245fd4
commit
b27ccd524e
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
import spack.cmd.common.arguments as arguments
|
import spack.cmd.common.arguments as arguments
|
||||||
import spack.repo
|
import spack.repo
|
||||||
from spack.version import VersionList, ver
|
from spack.version import ver, infinity_versions
|
||||||
|
|
||||||
description = "list available versions of a package"
|
description = "list available versions of a package"
|
||||||
section = "packaging"
|
section = "packaging"
|
||||||
@ -66,7 +66,10 @@ def versions(parser, args):
|
|||||||
if args.new:
|
if args.new:
|
||||||
if sys.stdout.isatty():
|
if sys.stdout.isatty():
|
||||||
tty.msg('New remote versions (not yet checksummed):')
|
tty.msg('New remote versions (not yet checksummed):')
|
||||||
highest_safe_version = VersionList(safe_versions).highest_numeric()
|
numeric_safe_versions = list(filter(
|
||||||
|
lambda v: str(v) not in infinity_versions,
|
||||||
|
safe_versions))
|
||||||
|
highest_safe_version = max(numeric_safe_versions)
|
||||||
remote_versions = set([ver(v) for v in set(fetched_versions)
|
remote_versions = set([ver(v) for v in set(fetched_versions)
|
||||||
if v > highest_safe_version])
|
if v > highest_safe_version])
|
||||||
else:
|
else:
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from spack.main import SpackCommand
|
from spack.main import SpackCommand
|
||||||
|
from spack.version import Version
|
||||||
|
|
||||||
versions = SpackCommand('versions')
|
versions = SpackCommand('versions')
|
||||||
|
|
||||||
@ -37,12 +38,32 @@ def test_remote_versions_only():
|
|||||||
versions('--remote', 'zlib')
|
versions('--remote', 'zlib')
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.maybeslow
|
|
||||||
@pytest.mark.usefixtures('mock_packages')
|
@pytest.mark.usefixtures('mock_packages')
|
||||||
def test_new_versions_only():
|
def test_new_versions_only(monkeypatch):
|
||||||
"""Test a package for which new versions should be available."""
|
"""Test a package for which new versions should be available."""
|
||||||
|
from spack.pkg.builtin.mock.brillig import Brillig
|
||||||
|
|
||||||
versions('--new', 'brillig')
|
def mock_fetch_remote_versions(*args, **kwargs):
|
||||||
|
mock_remote_versions = {
|
||||||
|
# new version, we expect this to be in output:
|
||||||
|
Version('99.99.99'): {},
|
||||||
|
# some packages use '3.2' equivalently to '3.2.0'
|
||||||
|
# thus '3.2.1' is considered to be a new version
|
||||||
|
# and expected in the output also
|
||||||
|
Version('3.2.1'): {}, # new version, we expect this to be in output
|
||||||
|
Version('3.2'): {},
|
||||||
|
Version('1.0.0'): {},
|
||||||
|
}
|
||||||
|
return mock_remote_versions
|
||||||
|
mock_versions = {
|
||||||
|
# already checksummed versions:
|
||||||
|
Version('3.2'): {},
|
||||||
|
Version('1.0.0'): {},
|
||||||
|
}
|
||||||
|
monkeypatch.setattr(Brillig, 'versions', mock_versions)
|
||||||
|
monkeypatch.setattr(Brillig, 'fetch_remote_versions', mock_fetch_remote_versions)
|
||||||
|
v = versions('--new', 'brillig')
|
||||||
|
assert(v.strip(' \n\t') == "99.99.99\n 3.2.1")
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.maybeslow
|
@pytest.mark.maybeslow
|
||||||
|
Loading…
Reference in New Issue
Block a user