# 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 argparse
import sys
import pytest
import llnl.util.tty as tty
import spack.cmd.checksum
import spack.repo
from spack.main import SpackCommand
spack_checksum = SpackCommand('checksum')
[docs]@pytest.mark.parametrize('arguments,expected', [
(['--batch', 'patch'], (True, False, False)),
(['--latest', 'patch'], (False, True, False)),
(['--preferred', 'patch'], (False, False, True)),
])
def test_checksum_args(arguments, expected):
parser = argparse.ArgumentParser()
spack.cmd.checksum.setup_parser(parser)
args = parser.parse_args(arguments)
check = args.batch, args.latest, args.preferred
assert check == expected
[docs]@pytest.mark.skipif(sys.platform == 'win32',
reason="Not supported on Windows (yet)")
@pytest.mark.parametrize('arguments,expected', [
(['--batch', 'preferred-test'], 'version of preferred-test'),
(['--latest', 'preferred-test'], 'Found 1 version'),
(['--preferred', 'preferred-test'], 'Found 1 version'),
])
def test_checksum(arguments, expected, mock_packages, mock_stage):
output = spack_checksum(*arguments)
assert expected in output
assert 'version(' in output
[docs]@pytest.mark.skipif(sys.platform == 'win32',
reason="Not supported on Windows (yet)")
def test_checksum_interactive(
mock_packages, mock_fetch, mock_stage, monkeypatch):
def _get_number(*args, **kwargs):
return 1
monkeypatch.setattr(tty, 'get_number', _get_number)
output = spack_checksum('preferred-test')
assert 'version of preferred-test' in output
assert 'version(' in output
[docs]def test_checksum_versions(mock_packages, mock_fetch, mock_stage):
pkg = spack.repo.get('preferred-test')
versions = [str(v) for v in pkg.versions if not v.isdevelop()]
output = spack_checksum('preferred-test', versions[0])
assert 'Found 1 version' in output
assert 'version(' in output