diff --git a/renderspec/__init__.py b/renderspec/__init__.py index 684246a..30ab651 100644 --- a/renderspec/__init__.py +++ b/renderspec/__init__.py @@ -157,11 +157,20 @@ def generate_spec(spec_style, epochs, requirements, input_template_path): requirements=requirements) +def _is_fedora(distname): + """detect Fedora-based distro (e.g Fedora, CentOS, RHEL)""" + distname = distname.lower() + for x in ["fedora", "centos", "red hat"]: + if x in distname: + return True + return False + + def _get_default_distro(): distname, version, id_ = platform.linux_distribution() if "suse" in distname.lower(): return "suse" - elif "fedora" in distname.lower(): + elif _is_fedora(distname): return "fedora" else: return "unknown" diff --git a/test-requirements.txt b/test-requirements.txt index 8ad06e5..66f6610 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -6,6 +6,7 @@ testrepository>=0.0.18 # Apache-2.0/BSD testresources>=0.2.4 # Apache-2.0/BSD testtools>=1.4.0 # MIT ddt>=1.0.1 # MIT +mock>=2.0 # BSD sphinx!=1.3b1,<1.3,>=1.2.1 # BSD oslosphinx!=3.4.0,>=2.5.0 # Apache-2.0 diff --git a/tests.py b/tests.py index e7920c8..5b7169c 100644 --- a/tests.py +++ b/tests.py @@ -24,6 +24,7 @@ from ddt import data, ddt, unpack from jinja2 import Environment +from mock import Mock import os import renderspec import renderspec.versions @@ -268,5 +269,33 @@ class RenderspecCommonTests(unittest.TestCase): finally: shutil.rmtree(tmpdir) + +class RenderspecDistroDetection(unittest.TestCase): + def test_is_fedora(self): + self.assertTrue(renderspec._is_fedora("CentOS Linux")) + self.assertTrue(renderspec._is_fedora("Fedora")) + self.assertTrue(renderspec._is_fedora("Red Hat Enterprise Linux 7.2")) + self.assertFalse(renderspec._is_fedora("SUSE Linux Enterprise Server")) + + def test_get_default_distro(self): + import platform + platform.linux_distribution = Mock( + return_value=('SUSE Linux Enterprise Server ', '12', 'x86_64')) + self.assertEqual(renderspec._get_default_distro(), + "suse") + platform.linux_distribution = Mock( + return_value=('Fedora', '24', 'x86_64')) + self.assertEqual(renderspec._get_default_distro(), "fedora") + platform.linux_distribution = Mock( + return_value=('Red Hat Enterprise Linux Server', '7.3', 'x86_64')) + self.assertEqual(renderspec._get_default_distro(), "fedora") + platform.linux_distribution = Mock( + return_value=('CentOS Linux', '7.3', 'x86_64')) + self.assertEqual(renderspec._get_default_distro(), "fedora") + platform.linux_distribution = Mock( + return_value=('debian', '7.0', 'x86_64')) + self.assertEqual(renderspec._get_default_distro(), "unknown") + + if __name__ == '__main__': unittest.main()