summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2010-07-02 16:37:45 +0200
committerMichael Vogt <michael.vogt@ubuntu.com>2010-07-02 16:37:45 +0200
commitdd86db9ddb22b43867b5b4dc211f4440dec7aa6a (patch)
treefe7105c64632ccc9dc22520b6d70a18d5342c97b
parent945084be45a95fe532a6669e2c85a0ba363ecfd9 (diff)
downloadpython-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.py10
-rw-r--r--debian/changelog2
-rw-r--r--tests/test_debfile.py56
-rw-r--r--tests/test_debs/gdebi-test1.debbin0 -> 934 bytes
-rw-r--r--tests/test_debs/gdebi-test10.debbin0 -> 614 bytes
-rw-r--r--tests/test_debs/gdebi-test2.debbin0 -> 554 bytes
-rw-r--r--tests/test_debs/gdebi-test3.debbin0 -> 570 bytes
-rw-r--r--tests/test_debs/gdebi-test4.debbin0 -> 2306 bytes
-rw-r--r--tests/test_debs/gdebi-test5.debbin0 -> 2306 bytes
-rw-r--r--tests/test_debs/gdebi-test6.debbin0 -> 4312 bytes
-rw-r--r--tests/test_debs/gdebi-test7.debbin0 -> 578 bytes
-rw-r--r--tests/test_debs/gdebi-test8.debbin0 -> 598 bytes
-rw-r--r--tests/test_debs/gdebi-test9.debbin0 -> 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
new file mode 100644
index 00000000..ea9991ac
--- /dev/null
+++ b/tests/test_debs/gdebi-test1.deb
Binary files differ
diff --git a/tests/test_debs/gdebi-test10.deb b/tests/test_debs/gdebi-test10.deb
new file mode 100644
index 00000000..ca43ace6
--- /dev/null
+++ b/tests/test_debs/gdebi-test10.deb
Binary files differ
diff --git a/tests/test_debs/gdebi-test2.deb b/tests/test_debs/gdebi-test2.deb
new file mode 100644
index 00000000..307ac689
--- /dev/null
+++ b/tests/test_debs/gdebi-test2.deb
Binary files differ
diff --git a/tests/test_debs/gdebi-test3.deb b/tests/test_debs/gdebi-test3.deb
new file mode 100644
index 00000000..436b9258
--- /dev/null
+++ b/tests/test_debs/gdebi-test3.deb
Binary files differ
diff --git a/tests/test_debs/gdebi-test4.deb b/tests/test_debs/gdebi-test4.deb
new file mode 100644
index 00000000..9eb92d1b
--- /dev/null
+++ b/tests/test_debs/gdebi-test4.deb
Binary files differ
diff --git a/tests/test_debs/gdebi-test5.deb b/tests/test_debs/gdebi-test5.deb
new file mode 100644
index 00000000..0c98c03f
--- /dev/null
+++ b/tests/test_debs/gdebi-test5.deb
Binary files differ
diff --git a/tests/test_debs/gdebi-test6.deb b/tests/test_debs/gdebi-test6.deb
new file mode 100644
index 00000000..32fd1800
--- /dev/null
+++ b/tests/test_debs/gdebi-test6.deb
Binary files differ
diff --git a/tests/test_debs/gdebi-test7.deb b/tests/test_debs/gdebi-test7.deb
new file mode 100644
index 00000000..c0414990
--- /dev/null
+++ b/tests/test_debs/gdebi-test7.deb
Binary files differ
diff --git a/tests/test_debs/gdebi-test8.deb b/tests/test_debs/gdebi-test8.deb
new file mode 100644
index 00000000..439f8ca7
--- /dev/null
+++ b/tests/test_debs/gdebi-test8.deb
Binary files differ
diff --git a/tests/test_debs/gdebi-test9.deb b/tests/test_debs/gdebi-test9.deb
new file mode 100644
index 00000000..9901d906
--- /dev/null
+++ b/tests/test_debs/gdebi-test9.deb
Binary files differ