Source code for spack.test.cmd.versions

# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

import sys

import pytest

from spack.main import SpackCommand
from spack.version import Version

versions = SpackCommand('versions')

pytestmark = pytest.mark.skipif(sys.platform == "win32",
                                reason="does not run on windows")


[docs]def test_safe_only_versions(): """Only test the safe versions of a package. (Using the deprecated command line argument) """ versions('--safe-only', 'zlib')
[docs]def test_safe_versions(): """Only test the safe versions of a package.""" versions('--safe', 'zlib')
[docs]@pytest.mark.maybeslow def test_remote_versions(): """Test a package for which remote versions should be available.""" versions('zlib')
[docs]@pytest.mark.maybeslow def test_remote_versions_only(): """Test a package for which remote versions should be available.""" versions('--remote', 'zlib')
[docs]@pytest.mark.usefixtures('mock_packages') def test_new_versions_only(monkeypatch): """Test a package for which new versions should be available.""" from spack.pkg.builtin.mock.brillig import Brillig # type: ignore[import] 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")
[docs]@pytest.mark.maybeslow def test_no_versions(): """Test a package for which no remote versions are available.""" versions('converge')
[docs]@pytest.mark.maybeslow def test_no_unchecksummed_versions(): """Test a package for which no unchecksummed versions are available.""" versions('bzip2')
[docs]@pytest.mark.maybeslow def test_versions_no_url(): """Test a package with versions but without a ``url`` attribute.""" versions('graphviz')
[docs]@pytest.mark.maybeslow def test_no_versions_no_url(): """Test a package without versions or a ``url`` attribute.""" versions('opengl')