diff options
author | Michael Vogt <mvo@ubuntu.com> | 2014-09-03 09:16:56 +0200 |
---|---|---|
committer | Michael Vogt <mvo@ubuntu.com> | 2014-09-03 09:16:56 +0200 |
commit | 5960003fc970480bd48b0cc1c0f8b5ed80af7dac (patch) | |
tree | 16c317caba6e015fc38d133179749a2a8d5f1b66 | |
parent | ea440c589db54ac01e79ad8d09a9976e77f15f23 (diff) | |
download | python-apt-5960003fc970480bd48b0cc1c0f8b5ed80af7dac.tar.gz |
read all tags from a dsc file and improve tests
-rw-r--r-- | apt/debfile.py | 12 | ||||
-rw-r--r-- | tests/test_debfile.py | 28 |
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" % ( |