summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <mvo@ubuntu.com>2014-09-03 09:16:56 +0200
committerMichael Vogt <mvo@ubuntu.com>2014-09-03 09:16:56 +0200
commit5960003fc970480bd48b0cc1c0f8b5ed80af7dac (patch)
tree16c317caba6e015fc38d133179749a2a8d5f1b66
parentea440c589db54ac01e79ad8d09a9976e77f15f23 (diff)
downloadpython-apt-5960003fc970480bd48b0cc1c0f8b5ed80af7dac.tar.gz
read all tags from a dsc file and improve tests
-rw-r--r--apt/debfile.py12
-rw-r--r--tests/test_debfile.py28
2 files changed, 27 insertions, 13 deletions
diff --git a/apt/debfile.py b/apt/debfile.py
index 5c6de3c7..2528fd8a 100644
--- a/apt/debfile.py
+++ b/apt/debfile.py
@@ -718,6 +718,11 @@ class DscSrcPackage(DebPackage):
tagfile = apt_pkg.TagFile(fobj)
try:
for sec in tagfile:
+ # we only care about the stanza with the "Format:" tag, the
+ # rest is gpg signature noise. we should probably have
+ # bindings for apts OpenMaybeClearsignedFile()
+ if not "Format" in sec:
+ continue
for tag in depends_tags:
if tag not in sec:
continue
@@ -730,14 +735,9 @@ class DscSrcPackage(DebPackage):
self.pkgname = sec['Source']
if 'Binary' in sec:
self.binaries = sec['Binary'].split(', ')
- # read some more tags
- for tag in ('Version', 'Files', 'Checksum-Sha1'):
+ for tag in sec.keys():
if tag in sec:
self._sections[tag] = sec[tag]
- # we only care about the stanza with the "Format:" tag, the
- # rest is gpg signature noise
- if 'Format' in sec:
- break
finally:
del tagfile
fobj.close()
diff --git a/tests/test_debfile.py b/tests/test_debfile.py
index 0c7028ab..b8418e78 100644
--- a/tests/test_debfile.py
+++ b/tests/test_debfile.py
@@ -62,24 +62,38 @@ class TestDebfile(unittest.TestCase):
apt_pkg.init_system()
self.cache = apt.Cache()
- def testDscFile(self):
+ def test_dsc_file(self):
filename = "hello_2.5-1.dsc"
deb = apt.debfile.DscSrcPackage(cache=self.cache)
deb.open(os.path.join("data", "test_debs", filename))
self.assertTrue(deb.check(), "got failure '%s'" % deb._failure_string)
missing = set(['autotools-dev'])
self.assertEqual(set(deb.missing_deps), missing)
+ # specialized properties
+ self.assertEqual(deb.pkgname, "hello")
+ self.assertEqual(deb.binaries, ["hello"])
+ self.assertEqual(deb.filelist, ["hello_2.5.orig.tar.gz",
+ "hello_2.5-1.diff.gz"])
+ self.assertEqual(deb.depends, [[("autotools-dev", "", "")]])
+ # tag fields are available as a dict
+ self.assertEqual(deb["Format"], "1.0")
+ self.assertEqual(deb["Source"], "hello")
+ self.assertEqual(deb["Binary"], "hello")
+ self.assertEqual(deb["Architecture"], "any")
+ self.assertEqual(deb["Version"], "2.5-1")
+ self.assertEqual(
+ deb["Maintainer"], "Santiago Vila <sanvila@debian.org>")
+ self.assertEqual(deb["Homepage"], "http://www.gnu.org/software/hello")
+ self.assertEqual(deb["Standards-Version"], "3.8.4")
+
+ def test_dsc_file_with_impossible_build_dep(self):
filename = "impossible-build-depends_2.5-1.dsc"
deb = apt.debfile.DscSrcPackage(cache=self.cache)
deb.open(os.path.join("data", "test_debs", filename))
self.assertFalse(deb.check())
- self.assertEqual(deb["Version"], "2.5-1")
-
- self.maxDiff = None
- self.assertEqual(deb.filelist, ["hello_2.5.orig.tar.gz",
- "hello_2.5-1.diff.gz"])
+ self.assertEqual(deb.depends, [[("debhelper", "101", ">")]])
- def testDebFile(self):
+ def test_deb_file(self):
deb = apt.debfile.DebPackage(cache=self.cache)
for (filename, expected_res) in self.TEST_DEBS:
logging.debug("testing %s, expecting %s" % (