diff options
-rw-r--r-- | gbp/deb/source.py | 15 | ||||
-rw-r--r-- | tests/15_test_DebianSource.py | 8 |
2 files changed, 23 insertions, 0 deletions
diff --git a/gbp/deb/source.py b/gbp/deb/source.py index 643aac2e..a2e1c9a8 100644 --- a/gbp/deb/source.py +++ b/gbp/deb/source.py @@ -20,6 +20,7 @@ import os from gbp.deb import DebianPkgPolicy as Policy from gbp.deb.format import DebianSourceFormat from gbp.deb.changelog import ChangeLog +from gbp.deb.control import Control class FileVfs(object): @@ -56,6 +57,7 @@ class DebianSource(object): package. """ self._changelog = None + self._control = None if isinstance(vfs, str): self._vfs = FileVfs(vfs) @@ -101,6 +103,19 @@ class DebianSource(object): return self._changelog @property + def control(self): + """ + Return the L{gbp.deb.Control} + """ + if not self._control: + try: + with self._vfs.open('debian/control', 'rb') as cf: + self._control = Control(cf.read().decode('utf-8')) + except IOError as err: + raise DebianSourceError('Failed to read control file: %s' % err) + return self._control + + @property def sourcepkg(self): """ The source package's name diff --git a/tests/15_test_DebianSource.py b/tests/15_test_DebianSource.py index efc38b4f..06ffb78b 100644 --- a/tests/15_test_DebianSource.py +++ b/tests/15_test_DebianSource.py @@ -110,3 +110,11 @@ class TestDebianSource(testutils.DebianGitTestRepo): source = DebianSource('.') self.assertEquals(source.changelog.distribution, "UNRELEASED") self.assertFalse(source.is_releasable()) + + def test_control(self): + os.makedirs('debian/') + with open('debian/control', 'w') as f: + f.write("Source: foo") + source = DebianSource('.') + self.assertIsNotNone(source.control) + self.assertEquals(source.control.name, "foo") |