From 7cf33a16807931fb6bc5ee8e1c3d902bd9f76b1f Mon Sep 17 00:00:00 2001 From: Rafael dos Santos Date: Nov 20 2018 15:59:04 +0000 Subject: module-summarizer: add tests Signed-off-by: Rafael dos Santos --- diff --git a/tests/test_module_summary.py b/tests/test_module_summary.py new file mode 100644 index 0000000..2ccd201 --- /dev/null +++ b/tests/test_module_summary.py @@ -0,0 +1,54 @@ +"""In-process tests for the module summary functionality""" + +import re +import pytest +import os.path +from _fedmod.modulemd_summarizer import summarize_modules + + +testfiles_dir = os.path.join(os.path.dirname(__file__), 'files') +spec_v1_yaml_path = os.path.join(testfiles_dir, 'spec.v1.yaml') + + +@pytest.mark.needs_metadata +class TestModuleSummary(object): + + def matches(self, mod, strm, prof, out): + return re.search(fr'^{mod}\s+{strm}\s+{prof}$', out, re.M) is not None + + # FIXME: we should mock the fetched metadata so that these tests do not + # fail when the metadata changes + def test_summarize_modules(self, capfd): + summarize_modules() + out, err = capfd.readouterr() + + assert self.matches('reviewboard', '2.5', + r'server, default \[d\]', + out) + assert self.matches('reviewboard', '3.0', + r'server, default \[d\]', + out) + assert self.matches('testmodule', 'master', 'default', out) + + def test_summarize_modules_restricted(self, capfd): + summarize_modules(['reviewboard', 'django']) + out, err = capfd.readouterr() + + assert self.matches('reviewboard', '2.5', + r'server, default \[d\]', + out) + assert self.matches('reviewboard', '3.0', + r'server, default \[d\]', + out) + assert self.matches('django', '1.6', + r'python2_development, default \[d\]', + out) + assert not self.matches('testmodule', 'master', 'default', out) + + def test_summarize_modules_local_files(self, capfd): + summarize_modules(yaml_files=[spec_v1_yaml_path]) + out, err = capfd.readouterr() + + assert self.matches('testmodule', 'master', 'default', out) + assert self.matches('foo', 'stream-name', 'minimal, buildroot, ' + + 'container, srpm-buildroot, default', out)