From 18a4e992945822e9d4248077861ee6f083bfba70 Mon Sep 17 00:00:00 2001 From: Lucas Holt Date: Thu, 27 Feb 2020 11:43:36 -0500 Subject: [PATCH 1/3] Add MidnightBSD support. --- distro.py | 1 + setup.py | 1 + tests/test_distro.py | 98 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+) diff --git a/distro.py b/distro.py index 3ce45af..395a1d3 100755 --- a/distro.py +++ b/distro.py @@ -163,6 +163,7 @@ def id(): "openbsd" OpenBSD "netbsd" NetBSD "freebsd" FreeBSD + "midnightbsd" MidnightBSD ============== ========================================= If you have a need to get distros for reliable IDs added into this set, diff --git a/setup.py b/setup.py index 0657449..2db6825 100644 --- a/setup.py +++ b/setup.py @@ -53,6 +53,7 @@ def read(*parts): 'Operating System :: POSIX :: Linux', 'Operating System :: POSIX :: BSD', 'Operating System :: POSIX :: BSD :: FreeBSD', + 'Operating System :: POSIX :: BSD :: MidnightBSD', 'Operating System :: POSIX :: BSD :: NetBSD', 'Operating System :: POSIX :: BSD :: OpenBSD', 'Programming Language :: Python :: 2', diff --git a/tests/test_distro.py b/tests/test_distro.py index 5521068..71632fb 100644 --- a/tests/test_distro.py +++ b/tests/test_distro.py @@ -520,6 +520,104 @@ def test_freebsd111_uname(self): 'best_version': '11.1' }) + def test_midnightbsd12_uname(self): + self._test_outcome({ + 'id': 'midnightbsd', + 'name': 'MidnightBSD', + 'version': '1.2', + 'pretty_name': 'MidnightBSD 1.2', + 'pretty_version': '1.2', + 'best_version': '1.2' + }) + + def test_ubuntu14normal_lsb_release(self): + self._setup_for_distro(os.path.join(TESTDISTROS, 'lsb', + 'ubuntu14_normal')) + + self.distro = distro.LinuxDistribution(True, 'non', 'non') + + desired_outcome = { + 'id': 'ubuntu', + 'name': 'Ubuntu', + 'pretty_name': 'Ubuntu 14.04.3 LTS', + 'version': '14.04', + 'pretty_version': '14.04 (trusty)', + 'best_version': '14.04.3', + 'codename': 'trusty' + } + self._test_outcome(desired_outcome) + + def test_ubuntu14nomodules_lsb_release(self): + self._setup_for_distro(os.path.join(TESTDISTROS, 'lsb', + 'ubuntu14_nomodules')) + + self.distro = distro.LinuxDistribution(True, 'non', 'non') + + desired_outcome = { + 'id': 'ubuntu', + 'name': 'Ubuntu', + 'pretty_name': 'Ubuntu 14.04.3 LTS', + 'version': '14.04', + 'pretty_version': '14.04 (trusty)', + 'best_version': '14.04.3', + 'codename': 'trusty' + } + self._test_outcome(desired_outcome) + + def test_trailingblanks_lsb_release(self): + self._setup_for_distro(os.path.join(TESTDISTROS, 'lsb', + 'ubuntu14_trailingblanks')) + + self.distro = distro.LinuxDistribution(True, 'non', 'non') + + desired_outcome = { + 'id': 'ubuntu', + 'name': 'Ubuntu', + 'pretty_name': 'Ubuntu 14.04.3 LTS', + 'version': '14.04', + 'pretty_version': '14.04 (trusty)', + 'best_version': '14.04.3', + 'codename': 'trusty' + } + self._test_outcome(desired_outcome) + + @pytest.mark.parametrize('errnum', ('001', '002', '126', '130', '255')) + def test_lsb_release_error_level(self, errnum): + self._setup_for_distro(os.path.join( + TESTDISTROS, 'lsb', 'lsb_rc{0}'.format(errnum))) + with pytest.raises(subprocess.CalledProcessError) as excinfo: + distro.LinuxDistribution(True, 'non', 'non')._lsb_release_info + assert excinfo.value.returncode == int(errnum) + + +@pytest.mark.skipif(not IS_LINUX, reason='Irrelevant on non-linux') +class TestSpecialRelease(DistroTestCase): + def _test_outcome(self, outcome): + assert self.distro.id() == outcome.get('id', '') + assert self.distro.name() == outcome.get('name', '') + assert self.distro.name(pretty=True) == outcome.get('pretty_name', '') + assert self.distro.version() == outcome.get('version', '') + assert self.distro.version(pretty=True) == \ + outcome.get('pretty_version', '') + assert self.distro.version(best=True) == \ + outcome.get('best_version', '') + assert self.distro.like() == outcome.get('like', '') + assert self.distro.codename() == outcome.get('codename', '') + assert self.distro.major_version() == outcome.get('major_version', '') + assert self.distro.minor_version() == outcome.get('minor_version', '') + assert self.distro.build_number() == outcome.get('build_number', '') + + def test_empty_release(self): + distro_release = os.path.join(SPECIAL, 'empty-release') + self.distro = distro.LinuxDistribution(False, 'non', distro_release) + + desired_outcome = { + 'id': 'empty' + } + self._test_outcome(desired_outcome) + + def test_unknowndistro_release(self): + self._setup_for_distro(os.path.join(TESTDISTROS, 'distro', def test_ubuntu14normal_lsb_release(self): self._setup_for_distro(os.path.join(TESTDISTROS, 'lsb', 'ubuntu14_normal')) From ffbe3522006247e537f5059e1148e2ad6aaf4419 Mon Sep 17 00:00:00 2001 From: Lucas Holt Date: Thu, 27 Feb 2020 11:47:42 -0500 Subject: [PATCH 2/3] add MidnightBSD sample uname --- tests/resources/distros/midnightbsd12/bin/uname | 4 ++++ 1 file changed, 4 insertions(+) create mode 100755 tests/resources/distros/midnightbsd12/bin/uname diff --git a/tests/resources/distros/midnightbsd12/bin/uname b/tests/resources/distros/midnightbsd12/bin/uname new file mode 100755 index 0000000..bbcb294 --- /dev/null +++ b/tests/resources/distros/midnightbsd12/bin/uname @@ -0,0 +1,4 @@ +#!/bin/sh + +echo "MidnightBSD 1.2" + From 89a3a5861e973b106e03bcb691e511d02e81106e Mon Sep 17 00:00:00 2001 From: Lucas Holt Date: Thu, 27 Feb 2020 12:46:53 -0500 Subject: [PATCH 3/3] fix bad merge --- tests/test_distro.py | 88 -------------------------------------------- 1 file changed, 88 deletions(-) diff --git a/tests/test_distro.py b/tests/test_distro.py index 71632fb..8bfff04 100644 --- a/tests/test_distro.py +++ b/tests/test_distro.py @@ -590,94 +590,6 @@ def test_lsb_release_error_level(self, errnum): assert excinfo.value.returncode == int(errnum) -@pytest.mark.skipif(not IS_LINUX, reason='Irrelevant on non-linux') -class TestSpecialRelease(DistroTestCase): - def _test_outcome(self, outcome): - assert self.distro.id() == outcome.get('id', '') - assert self.distro.name() == outcome.get('name', '') - assert self.distro.name(pretty=True) == outcome.get('pretty_name', '') - assert self.distro.version() == outcome.get('version', '') - assert self.distro.version(pretty=True) == \ - outcome.get('pretty_version', '') - assert self.distro.version(best=True) == \ - outcome.get('best_version', '') - assert self.distro.like() == outcome.get('like', '') - assert self.distro.codename() == outcome.get('codename', '') - assert self.distro.major_version() == outcome.get('major_version', '') - assert self.distro.minor_version() == outcome.get('minor_version', '') - assert self.distro.build_number() == outcome.get('build_number', '') - - def test_empty_release(self): - distro_release = os.path.join(SPECIAL, 'empty-release') - self.distro = distro.LinuxDistribution(False, 'non', distro_release) - - desired_outcome = { - 'id': 'empty' - } - self._test_outcome(desired_outcome) - - def test_unknowndistro_release(self): - self._setup_for_distro(os.path.join(TESTDISTROS, 'distro', - def test_ubuntu14normal_lsb_release(self): - self._setup_for_distro(os.path.join(TESTDISTROS, 'lsb', - 'ubuntu14_normal')) - - self.distro = distro.LinuxDistribution(True, 'non', 'non') - - desired_outcome = { - 'id': 'ubuntu', - 'name': 'Ubuntu', - 'pretty_name': 'Ubuntu 14.04.3 LTS', - 'version': '14.04', - 'pretty_version': '14.04 (trusty)', - 'best_version': '14.04.3', - 'codename': 'trusty' - } - self._test_outcome(desired_outcome) - - def test_ubuntu14nomodules_lsb_release(self): - self._setup_for_distro(os.path.join(TESTDISTROS, 'lsb', - 'ubuntu14_nomodules')) - - self.distro = distro.LinuxDistribution(True, 'non', 'non') - - desired_outcome = { - 'id': 'ubuntu', - 'name': 'Ubuntu', - 'pretty_name': 'Ubuntu 14.04.3 LTS', - 'version': '14.04', - 'pretty_version': '14.04 (trusty)', - 'best_version': '14.04.3', - 'codename': 'trusty' - } - self._test_outcome(desired_outcome) - - def test_trailingblanks_lsb_release(self): - self._setup_for_distro(os.path.join(TESTDISTROS, 'lsb', - 'ubuntu14_trailingblanks')) - - self.distro = distro.LinuxDistribution(True, 'non', 'non') - - desired_outcome = { - 'id': 'ubuntu', - 'name': 'Ubuntu', - 'pretty_name': 'Ubuntu 14.04.3 LTS', - 'version': '14.04', - 'pretty_version': '14.04 (trusty)', - 'best_version': '14.04.3', - 'codename': 'trusty' - } - self._test_outcome(desired_outcome) - - @pytest.mark.parametrize('errnum', ('001', '002', '126', '130', '255')) - def test_lsb_release_error_level(self, errnum): - self._setup_for_distro(os.path.join( - TESTDISTROS, 'lsb', 'lsb_rc{0}'.format(errnum))) - with pytest.raises(subprocess.CalledProcessError) as excinfo: - distro.LinuxDistribution(True, 'non', 'non')._lsb_release_info - assert excinfo.value.returncode == int(errnum) - - @pytest.mark.skipif(not IS_LINUX, reason='Irrelevant on non-linux') class TestSpecialRelease(DistroTestCase): def _test_outcome(self, outcome):