summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test_debiandistro.py9
-rw-r--r--tests/test_distro.py20
-rw-r--r--tests/test_systemd.py62
3 files changed, 88 insertions, 3 deletions
diff --git a/tests/test_debiandistro.py b/tests/test_debiandistro.py
index c01efd8..617005c 100644
--- a/tests/test_debiandistro.py
+++ b/tests/test_debiandistro.py
@@ -23,6 +23,12 @@ try:
except ImportError:
have_apt_pkg=False
+try:
+ import lsb_release
+ have_lsb_release=True
+except ImportError:
+ have_lsb_release=False
+
from whatmaps.debiandistro import DebianDistro
from whatmaps.debianpkg import DebianPkg
@@ -90,11 +96,12 @@ class TestDebianDistro(unittest.TestCase):
@patch('apt_pkg.init')
@patch('apt_pkg.Acquire')
@unittest.skipUnless(have_apt_pkg, "apt_pkg not installed")
+ @unittest.skipUnless(have_lsb_release, "lsb_release not installed")
def test_filter_security_updates(self, apt_pkg_acquire, apt_pkg_init):
pkgs = {'pkg1': DebianPkg('pkg1'),
'pkg2': DebianPkg('pkg2'),
}
- with patch('apt_pkg.Cache') as mock:
+ with patch('apt_pkg.Cache'):
DebianDistro.filter_security_updates(pkgs)
apt_pkg_init.assert_called_once_with()
apt_pkg_acquire.assert_called_once_with()
diff --git a/tests/test_distro.py b/tests/test_distro.py
index e22da68..88fa984 100644
--- a/tests/test_distro.py
+++ b/tests/test_distro.py
@@ -16,9 +16,15 @@
import unittest
-from whatmaps.distro import Distro
+from mock import patch
-from . import context
+try:
+ import lsb_release
+ have_lsb_release=True
+except ImportError:
+ have_lsb_release=False
+
+from whatmaps.distro import Distro, detect
class Pkg(object):
name = 'doesnotmatter'
@@ -38,3 +44,13 @@ class TestDistro(unittest.TestCase):
self.assertEqual(Distro.pkg_services(Pkg), [])
self.assertEqual(Distro.pkg_service_blacklist(Pkg), [])
self.assertFalse(Distro.has_apt())
+
+
+ @unittest.skipUnless(have_lsb_release, "lsb_release not installed")
+ def test_detect_via_lsb_release_module(self):
+ "Detect distro via lsb_release"
+ with patch('lsb_release.get_distro_information', return_value={'ID': 'Debian'}):
+ # Make sure we don't use the fallback
+ with patch('os.path.exists', return_value=False):
+ d = detect()
+ self.assertEqual(d.id, 'Debian')
diff --git a/tests/test_systemd.py b/tests/test_systemd.py
new file mode 100644
index 0000000..2fbdfdc
--- /dev/null
+++ b/tests/test_systemd.py
@@ -0,0 +1,62 @@
+# vim: set fileencoding=utf-8 :
+# (C) 2014 Guido Günther <agx@sigxcpu.org>
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+"""Test L{whatmaps.process} config"""
+
+import unittest
+
+from mock import patch
+
+from whatmaps.systemd import Systemd
+from whatmaps.process import Process
+
+class Process(object):
+ def __init__(self, pid):
+ self.pid = pid
+
+class TestSystemd(unittest.TestCase):
+ def test_is_init(self):
+ """Check if we create a systemd object if systemd is the init system in use"""
+ with patch('os.path.exists', return_value=True):
+ self.assertIsNotNone(Systemd())
+
+ def test_is_not_init(self):
+ """Check if we raise an exception if systemd isn't tthe init system in use"""
+ with patch('os.path.exists', return_value=False):
+ self.assertRaises(ValueError, Systemd)
+
+ def test_process_to_unit(self):
+ p = Process(952)
+ output = """libvirt-bin.service - Virtualization daemon
+ Loaded: loaded (/lib/systemd/system/libvirt-bin.service; enabled)
+ Active: active (running) since Fr 2014-07-11 16:10:55 CEST; 50min ago
+ Docs: man:libvirtd(8)
+ http://libvirt.org
+ Main PID: 952 (libvirtd)
+ CGroup: name=systemd:/system/libvirt-bin.service
+ ├─ 952 /usr/sbin/libvirtd
+ └─1355 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf
+ """
+ with patch('os.path.exists', return_value=True):
+ with patch('subprocess.Popen') as mock:
+ PopenMock = mock.return_value
+ PopenMock.communicate.return_value = [output]
+ PopenMock.returncode = 0
+ result = Systemd().process_to_unit(p)
+ self.assertEqual(result, 'libvirt-bin.service')
+
+ PopenMock.returncode = 1
+ result = Systemd().process_to_unit(p)
+ self.assertIsNone(result)
+