Source code for spack.test.cmd.maintainers

# 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)

from __future__ import print_function

import re

import pytest

import spack.main
import spack.repo

maintainers = spack.main.SpackCommand("maintainers")


[docs]def split(output): """Split command line output into an array.""" output = output.strip() return re.split(r"\s+", output) if output else []
[docs]def test_maintained(mock_packages): out = split(maintainers("--maintained")) assert out == ["maintainers-1", "maintainers-2"]
[docs]def test_unmaintained(mock_packages): out = split(maintainers("--unmaintained")) assert out == sorted( set(spack.repo.all_package_names()) - set(["maintainers-1", "maintainers-2"]) )
[docs]def test_all(mock_packages, capfd): with capfd.disabled(): out = split(maintainers("--all")) assert out == [ "maintainers-1:", "user1,", "user2", "maintainers-2:", "user2,", "user3", ] with capfd.disabled(): out = split(maintainers("--all", "maintainers-1")) assert out == [ "maintainers-1:", "user1,", "user2", ]
[docs]def test_all_by_user(mock_packages, capfd): with capfd.disabled(): out = split(maintainers("--all", "--by-user")) assert out == [ "user1:", "maintainers-1", "user2:", "maintainers-1,", "maintainers-2", "user3:", "maintainers-2", ] with capfd.disabled(): out = split(maintainers("--all", "--by-user", "user1", "user2")) assert out == [ "user1:", "maintainers-1", "user2:", "maintainers-1,", "maintainers-2", ]
[docs]def test_no_args(mock_packages): with pytest.raises(spack.main.SpackCommandError): maintainers()
[docs]def test_no_args_by_user(mock_packages): with pytest.raises(spack.main.SpackCommandError): maintainers("--by-user")
[docs]def test_mutex_args_fail(mock_packages): with pytest.raises(SystemExit): maintainers("--maintained", "--unmaintained")
[docs]def test_maintainers_list_packages(mock_packages, capfd): with capfd.disabled(): out = split(maintainers("maintainers-1")) assert out == ["user1", "user2"] with capfd.disabled(): out = split(maintainers("maintainers-1", "maintainers-2")) assert out == ["user1", "user2", "user3"] with capfd.disabled(): out = split(maintainers("maintainers-2")) assert out == ["user2", "user3"]
[docs]def test_maintainers_list_fails(mock_packages, capfd): out = maintainers("a", fail_on_error=False) assert not out assert maintainers.returncode == 1
[docs]def test_maintainers_list_by_user(mock_packages, capfd): with capfd.disabled(): out = split(maintainers("--by-user", "user1")) assert out == ["maintainers-1"] with capfd.disabled(): out = split(maintainers("--by-user", "user1", "user2")) assert out == ["maintainers-1", "maintainers-2"] with capfd.disabled(): out = split(maintainers("--by-user", "user2")) assert out == ["maintainers-1", "maintainers-2"] with capfd.disabled(): out = split(maintainers("--by-user", "user3")) assert out == ["maintainers-2"]