1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# Copyright 2013-2023 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 os.path
import pytest
import spack.container
@pytest.mark.parametrize(
"image,spack_version,expected",
[
("ubuntu:18.04", "develop", ("spack/ubuntu-bionic", "latest")),
("ubuntu:18.04", "0.14.0", ("spack/ubuntu-bionic", "0.14.0")),
],
)
def test_build_info(image, spack_version, expected):
output = spack.container.images.build_info(image, spack_version)
assert output == expected
@pytest.mark.parametrize("image", ["ubuntu:18.04"])
def test_package_info(image):
pkg_manager = spack.container.images.os_package_manager_for(image)
update, install, clean = spack.container.images.commands_for(pkg_manager)
assert update
assert install
assert clean
@pytest.mark.parametrize(
"extra_config,expected_msg",
[
({"modules": {"enable": ["tcl"]}}, 'the subsection "modules" in'),
({"concretizer": {"unify": False}}, '"concretizer:unify" is not set to "true"'),
(
{"config": {"install_tree": "/some/dir"}},
'the "config:install_tree" attribute has been set',
),
({"view": "/some/dir"}, 'the "view" attribute has been set'),
],
)
def test_validate(extra_config, expected_msg, minimal_configuration, config_dumper):
minimal_configuration["spack"].update(extra_config)
spack_yaml_dir = config_dumper(minimal_configuration)
spack_yaml = os.path.join(spack_yaml_dir, "spack.yaml")
with pytest.warns(UserWarning) as w:
spack.container.validate(spack_yaml)
# Tests are designed to raise only one warning
assert len(w) == 1
assert expected_msg in str(w.pop().message)
|