diff options
| author | Michael Vogt <michael.vogt@ubuntu.com> | 2010-07-02 16:37:45 +0200 |
|---|---|---|
| committer | Michael Vogt <michael.vogt@ubuntu.com> | 2010-07-02 16:37:45 +0200 |
| commit | dd86db9ddb22b43867b5b4dc211f4440dec7aa6a (patch) | |
| tree | fe7105c64632ccc9dc22520b6d70a18d5342c97b | |
| parent | 945084be45a95fe532a6669e2c85a0ba363ecfd9 (diff) | |
| download | python-apt-dd86db9ddb22b43867b5b4dc211f4440dec7aa6a.tar.gz | |
* tests/test_debs/*.deb, tests/test_debfile.py:
- add automatic test based on the test debs from gdebi
| -rw-r--r-- | apt/debfile.py | 10 | ||||
| -rw-r--r-- | debian/changelog | 2 | ||||
| -rw-r--r-- | tests/test_debfile.py | 56 | ||||
| -rw-r--r-- | tests/test_debs/gdebi-test1.deb | bin | 0 -> 934 bytes | |||
| -rw-r--r-- | tests/test_debs/gdebi-test10.deb | bin | 0 -> 614 bytes | |||
| -rw-r--r-- | tests/test_debs/gdebi-test2.deb | bin | 0 -> 554 bytes | |||
| -rw-r--r-- | tests/test_debs/gdebi-test3.deb | bin | 0 -> 570 bytes | |||
| -rw-r--r-- | tests/test_debs/gdebi-test4.deb | bin | 0 -> 2306 bytes | |||
| -rw-r--r-- | tests/test_debs/gdebi-test5.deb | bin | 0 -> 2306 bytes | |||
| -rw-r--r-- | tests/test_debs/gdebi-test6.deb | bin | 0 -> 4312 bytes | |||
| -rw-r--r-- | tests/test_debs/gdebi-test7.deb | bin | 0 -> 578 bytes | |||
| -rw-r--r-- | tests/test_debs/gdebi-test8.deb | bin | 0 -> 598 bytes | |||
| -rw-r--r-- | tests/test_debs/gdebi-test9.deb | bin | 0 -> 586 bytes |
13 files changed, 64 insertions, 4 deletions
diff --git a/apt/debfile.py b/apt/debfile.py index 173521b1..81cd1dd2 100644 --- a/apt/debfile.py +++ b/apt/debfile.py @@ -17,6 +17,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 # USA """Classes for working with locally available Debian packages.""" +import apt import apt_inst import apt_pkg import gzip @@ -44,19 +45,20 @@ class DebPackage(object): debug = 0 def __init__(self, filename=None, cache=None): + if cache is None: + cache = apt.Cache() self._cache = cache - self._need_pkgs = [] self._debfile = None self.pkgname = "" - self.filename = filename self._sections = {} - self._installed_conflicts = set() - self._failure_string = "" if filename: self.open(filename) def open(self, filename): """ open given debfile """ + self._need_pkgs = [] + self._installed_conflicts = set() + self._failure_string = "" self.filename = filename self._debfile = apt_inst.DebFile(open(self.filename)) control = self._debfile.control.extractdata("control") diff --git a/debian/changelog b/debian/changelog index 29f37932..b8ae49c1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -21,6 +21,8 @@ python-apt (0.7.96) UNRELEASED; urgency=low * apt/debfile.py: - check if the debfiles provides are in conflict with the systems packages + * tests/test_debs/*.deb, tests/test_debfile.py: + - add automatic test based on the test debs from gdebi [ Martin Pitt ] * tests/test_apt_cache.py: Test accessing the record of all packages during diff --git a/tests/test_debfile.py b/tests/test_debfile.py new file mode 100644 index 00000000..02e25117 --- /dev/null +++ b/tests/test_debfile.py @@ -0,0 +1,56 @@ +#!/usr/bin/python +# +# Copyright (C) 2010 Michael Vogt <mvo@ubuntu.com> +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. +"""Unit tests for verifying the correctness of DebPackage in apt.debfile.""" +import os +import logging +import unittest + +import sys +sys.path.insert(0, "..") + +import apt.debfile + + +class TestDebfilee(unittest.TestCase): + """ test the apt cache """ + + TEST_DEBS = [ + # conflicts with apt + ('gdebi-test1.deb', False), + # impossible dependency + ('gdebi-test2.deb', False), + # or-group (impossible-dependency|apt) + ('gdebi-test3.deb', True), + # Conflicts: apt (<= 0.1) + ('gdebi-test4.deb', True), + # Conflicts: apt (>= 0.1) + ('gdebi-test5.deb', False), + # invalid unicode in descr + ('gdebi-test6.deb', True), + # provides/conflicts against "foobarbaz" + ('gdebi-test7.deb', True), + # provides/conflicts/replaces against "mail-transport-agent" + # (should fails if mail-transport-agent is installed) + ('gdebi-test8.deb', False), + # provides/conflicts against real pkg + ('gdebi-test9.deb', True), + # provides debconf-tiny and the real debconf conflicts with + ('gdebi-test10.deb', False), + ] + + def testDebFile(self): + deb = apt.debfile.DebPackage() + for (filename, expected_res) in self.TEST_DEBS: + logging.debug("testing %s, expecting %s" % (filename, expected_res)) + deb.open(os.path.join("test_debs", filename)) + res = deb.check() + self.assertEqual(res, expected_res) + +if __name__ == "__main__": + #logging.basicConfig(level=logging.DEBUG) + unittest.main() diff --git a/tests/test_debs/gdebi-test1.deb b/tests/test_debs/gdebi-test1.deb Binary files differnew file mode 100644 index 00000000..ea9991ac --- /dev/null +++ b/tests/test_debs/gdebi-test1.deb diff --git a/tests/test_debs/gdebi-test10.deb b/tests/test_debs/gdebi-test10.deb Binary files differnew file mode 100644 index 00000000..ca43ace6 --- /dev/null +++ b/tests/test_debs/gdebi-test10.deb diff --git a/tests/test_debs/gdebi-test2.deb b/tests/test_debs/gdebi-test2.deb Binary files differnew file mode 100644 index 00000000..307ac689 --- /dev/null +++ b/tests/test_debs/gdebi-test2.deb diff --git a/tests/test_debs/gdebi-test3.deb b/tests/test_debs/gdebi-test3.deb Binary files differnew file mode 100644 index 00000000..436b9258 --- /dev/null +++ b/tests/test_debs/gdebi-test3.deb diff --git a/tests/test_debs/gdebi-test4.deb b/tests/test_debs/gdebi-test4.deb Binary files differnew file mode 100644 index 00000000..9eb92d1b --- /dev/null +++ b/tests/test_debs/gdebi-test4.deb diff --git a/tests/test_debs/gdebi-test5.deb b/tests/test_debs/gdebi-test5.deb Binary files differnew file mode 100644 index 00000000..0c98c03f --- /dev/null +++ b/tests/test_debs/gdebi-test5.deb diff --git a/tests/test_debs/gdebi-test6.deb b/tests/test_debs/gdebi-test6.deb Binary files differnew file mode 100644 index 00000000..32fd1800 --- /dev/null +++ b/tests/test_debs/gdebi-test6.deb diff --git a/tests/test_debs/gdebi-test7.deb b/tests/test_debs/gdebi-test7.deb Binary files differnew file mode 100644 index 00000000..c0414990 --- /dev/null +++ b/tests/test_debs/gdebi-test7.deb diff --git a/tests/test_debs/gdebi-test8.deb b/tests/test_debs/gdebi-test8.deb Binary files differnew file mode 100644 index 00000000..439f8ca7 --- /dev/null +++ b/tests/test_debs/gdebi-test8.deb diff --git a/tests/test_debs/gdebi-test9.deb b/tests/test_debs/gdebi-test9.deb Binary files differnew file mode 100644 index 00000000..9901d906 --- /dev/null +++ b/tests/test_debs/gdebi-test9.deb |
