summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2014-04-20 15:21:36 +0200
committerGuido Günther <agx@sigxcpu.org>2014-04-21 20:21:58 +0200
commitfa359f748b844a218842d73fff13dcbce00dcd27 (patch)
tree1efe1866265cb35854f723ef1409a6cc906779ea
parentb067bf9d5cbab91da407b05ba75d3ba8ef72d18b (diff)
Split out and test DebianPkg
-rw-r--r--tests/test_debianpkg.py30
-rwxr-xr-xwhatmaps/command.py53
-rw-r--r--whatmaps/debianpkg.py42
3 files changed, 73 insertions, 52 deletions
diff --git a/tests/test_debianpkg.py b/tests/test_debianpkg.py
new file mode 100644
index 0000000..57805ff
--- /dev/null
+++ b/tests/test_debianpkg.py
@@ -0,0 +1,30 @@
+# 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 2 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+"""Test L{whatmaps.process} config"""
+
+import unittest
+
+from mock import patch
+
+from whatmaps.debianpkg import DebianPkg
+
+class TestDebianPkg(unittest.TestCase):
+ def test_services(self):
+ with patch('whatmaps.pkg.Pkg._get_contents') as mock:
+ mock.return_value = ['/etc/init.d/aservice', '/usr/bin/afile']
+ p = DebianPkg('doesnotmatter')
+ self.assertEqual(p.services, ['aservice'])
+
diff --git a/whatmaps/command.py b/whatmaps/command.py
index 46e758b..0d235ba 100755
--- a/whatmaps/command.py
+++ b/whatmaps/command.py
@@ -30,47 +30,10 @@ try:
except ImportError:
lsb_release = None
-
from . process import Process
from . distro import Distro
from . pkg import Pkg, PkgError
-
-
-class DebianPkg(Pkg):
- type = 'Debian'
- _init_script_re = re.compile('/etc/init.d/[\w\-\.]')
- _list_contents = ['dpkg-query', '-L', '${pkg_name}' ]
-
- def __init__(self, name):
- Pkg.__init__(self, name)
-
- @property
- def shared_objects(self):
- if self._shared_objects != None:
- return self._shared_objects
-
- self._shared_objects = []
- contents = self._get_contents()
-
- for line in contents:
- m = self._so_regex.match(line)
- if m:
- self._shared_objects.append(m.group('so'))
- return self._shared_objects
-
- @property
- def services(self):
- if self._services != None:
- return self._services
-
- self._services = []
- contents = self._get_contents()
- # Only supports sysvinit so far:
- for line in contents:
- if self._init_script_re.match(line):
- self._services.append(os.path.basename(line.strip()))
- return self._services
-
+from . debianpkg import DebianPkg
class RedHatDistro(Distro):
"RPM based distribution"""
@@ -114,20 +77,6 @@ class RpmPkg(Pkg):
Pkg.__init__(self, name)
@property
- def shared_objects(self):
- if self._shared_objects != None:
- return self._shared_objects
-
- self._shared_objects = []
- contents = self._get_contents()
-
- for line in contents:
- m = self._so_regex.match(line)
- if m:
- self._shared_objects.append(m.group('so'))
- return self._shared_objects
-
- @property
def services(self):
if self._services != None:
return self._services
diff --git a/whatmaps/debianpkg.py b/whatmaps/debianpkg.py
new file mode 100644
index 0000000..8a3349d
--- /dev/null
+++ b/whatmaps/debianpkg.py
@@ -0,0 +1,42 @@
+# vim: set fileencoding=utf-8 :
+#
+# (C) 2010,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/>.
+
+import os
+import re
+
+from . pkg import Pkg
+
+class DebianPkg(Pkg):
+ type = 'Debian'
+ _init_script_re = re.compile('/etc/init.d/[\w\-\.]')
+ _list_contents = ['dpkg-query', '-L', '${pkg_name}' ]
+
+ def __init__(self, name):
+ Pkg.__init__(self, name)
+
+ @property
+ def services(self):
+ if self._services != None:
+ return self._services
+
+ self._services = []
+ contents = self._get_contents()
+ # Only supports sysvinit so far:
+ for line in contents:
+ if self._init_script_re.match(line):
+ self._services.append(os.path.basename(line.strip()))
+ return self._services
+