Simplify fixture used to test spack info (#30456)

This commit is contained in:
Massimiliano Culpo 2022-05-03 18:39:00 +02:00 committed by GitHub
parent bdef031d4e
commit a5e92893d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -26,18 +26,14 @@ def parser():
@pytest.fixture()
def info_lines():
lines = []
return lines
@pytest.fixture()
def mock_print(monkeypatch, info_lines):
def print_buffer(monkeypatch):
buffer = []
def _print(*args):
info_lines.extend(args)
buffer.extend(args)
monkeypatch.setattr(spack.cmd.info.color, 'cprint', _print, raising=False)
return buffer
@pytest.mark.parametrize('pkg', [
@ -52,11 +48,11 @@ def test_it_just_runs(pkg):
info(pkg)
def test_info_noversion(mock_packages, info_lines, mock_print):
def test_info_noversion(mock_packages, print_buffer):
"""Check that a mock package with no versions or variants outputs None."""
info('noversion')
line_iter = info_lines.__iter__()
line_iter = iter(print_buffer)
for line in line_iter:
if 'version' in line:
has = [desc in line for desc in ['Preferred', 'Safe', 'Deprecated']]
@ -72,12 +68,11 @@ def test_info_noversion(mock_packages, info_lines, mock_print):
('zlib', 'False'),
('gcc', 'True (version, variants)'),
])
@pytest.mark.usefixtures('mock_print')
def test_is_externally_detectable(pkg_query, expected, parser, info_lines):
def test_is_externally_detectable(pkg_query, expected, parser, print_buffer):
args = parser.parse_args(['--detectable', pkg_query])
spack.cmd.info.info(parser, args)
line_iter = info_lines.__iter__()
line_iter = iter(print_buffer)
for line in line_iter:
if 'Externally Detectable' in line:
is_externally_detectable = next(line_iter).strip()
@ -90,9 +85,7 @@ def test_is_externally_detectable(pkg_query, expected, parser, info_lines):
'trilinos',
'gcc' # This should ensure --test's c_names processing loop covered
])
@pytest.mark.usefixtures('mock_print')
def test_info_fields(pkg_query, parser, info_lines):
def test_info_fields(pkg_query, parser, print_buffer):
expected_fields = (
'Description:',
'Homepage:',
@ -108,5 +101,4 @@ def test_info_fields(pkg_query, parser, info_lines):
spack.cmd.info.info(parser, args)
for text in expected_fields:
match = [x for x in info_lines if text in x]
assert match
assert any(x for x in print_buffer if text in x)