From a90b26aad2824d4bd224586cdf14c0ad21059ac3 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Fri, 2 Jul 2010 10:59:08 +0200 Subject: add test_progress.py test --- tests/data/fake-packages/Packages | 21 +++++++++++++++++ tests/data/fake-packages/Packages.gz | Bin 0 -> 555 bytes tests/test_progress.py | 44 +++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 tests/data/fake-packages/Packages create mode 100644 tests/data/fake-packages/Packages.gz create mode 100644 tests/test_progress.py (limited to 'tests') diff --git a/tests/data/fake-packages/Packages b/tests/data/fake-packages/Packages new file mode 100644 index 00000000..9fbab957 --- /dev/null +++ b/tests/data/fake-packages/Packages @@ -0,0 +1,21 @@ +Package: 2vcard +Priority: optional +Section: universe/utils +Installed-Size: 108 +Maintainer: Arvind Autar +Architecture: amd64 +Version: 0.5-1ubuntu1 +Filename: pool/universe/2/2vcard/2vcard_0.5-1ubuntu1_amd64.deb +Size: 14164 +MD5sum: 105ea91f0a75417d0f9e8e9624513b2a +SHA1: d55beee01c08efc33cd131e106330dca72ee14be +SHA256: 4a72edaf87cdb826e5508b85311fcf0bec9b7e019a55740ded7feb1b9e197f11 +Description: A little perl script to convert an adressbook to VCARD file format + 2vcard is a little perl script that you can use to convert the popular vcard + file format. Currently 2vcard can only convert adressbooks and alias files from + the following formats: abook,eudora,juno,ldif,mutt,mh and pine. + . + The VCARD format is used by gnomecard, for example, which is turn is used by + the balsa email client. +Bugs: mailto:ubuntu-users@lists.ubuntu.com +Origin: Ubuntu diff --git a/tests/data/fake-packages/Packages.gz b/tests/data/fake-packages/Packages.gz new file mode 100644 index 00000000..506bc8d4 Binary files /dev/null and b/tests/data/fake-packages/Packages.gz differ diff --git a/tests/test_progress.py b/tests/test_progress.py new file mode 100644 index 00000000..2ab8ce5e --- /dev/null +++ b/tests/test_progress.py @@ -0,0 +1,44 @@ +#!/usr/bin/python +# +# Copyright (C) 2010 Michael Vogt +# +# 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 apt.progress""" +import unittest + +import apt +import apt_pkg +import os + +class TestAcquireProgress(apt.progress.base.AcquireProgress): + def pulse(self, owner): + self.pulsed = True + +class TestProgress(unittest.TestCase): + + def setUp(self): + basedir = os.path.abspath(os.path.dirname(__file__)) + # setup apt_pkg config + apt_pkg.init() + apt_pkg.config.set("APT::Architecture", "amd64") + apt_pkg.config.set("Dir::Etc", basedir) + apt_pkg.config.set("Dir::Etc::sourceparts", "/xxx") + # setup lists dir + if not os.path.exists("./tmp/partial"): + os.makedirs("./tmp/partial") + apt_pkg.config.set("Dir::state::lists", "./tmp") + # create artifical line + deb_line = "deb file:%s/data/fake-packages/ /\n" % basedir + open("fetch_sources.list","w").write(deb_line) + apt_pkg.config.set("Dir::Etc::sourcelist", "fetch_sources.list") + + def test_acquire_progress(self): + progress = TestAcquireProgress() + cache = apt.Cache() + res = cache.update(progress) + self.assertTrue(progress.pulsed) + +if __name__ == "__main__": + unittest.main() -- cgit v1.2.3 From dd86db9ddb22b43867b5b4dc211f4440dec7aa6a Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Fri, 2 Jul 2010 16:37:45 +0200 Subject: * tests/test_debs/*.deb, tests/test_debfile.py: - add automatic test based on the test debs from gdebi --- apt/debfile.py | 10 ++++--- debian/changelog | 2 ++ tests/test_debfile.py | 56 +++++++++++++++++++++++++++++++++++++++ tests/test_debs/gdebi-test1.deb | Bin 0 -> 934 bytes tests/test_debs/gdebi-test10.deb | Bin 0 -> 614 bytes tests/test_debs/gdebi-test2.deb | Bin 0 -> 554 bytes tests/test_debs/gdebi-test3.deb | Bin 0 -> 570 bytes tests/test_debs/gdebi-test4.deb | Bin 0 -> 2306 bytes tests/test_debs/gdebi-test5.deb | Bin 0 -> 2306 bytes tests/test_debs/gdebi-test6.deb | Bin 0 -> 4312 bytes tests/test_debs/gdebi-test7.deb | Bin 0 -> 578 bytes tests/test_debs/gdebi-test8.deb | Bin 0 -> 598 bytes tests/test_debs/gdebi-test9.deb | Bin 0 -> 586 bytes 13 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 tests/test_debfile.py create mode 100644 tests/test_debs/gdebi-test1.deb create mode 100644 tests/test_debs/gdebi-test10.deb create mode 100644 tests/test_debs/gdebi-test2.deb create mode 100644 tests/test_debs/gdebi-test3.deb create mode 100644 tests/test_debs/gdebi-test4.deb create mode 100644 tests/test_debs/gdebi-test5.deb create mode 100644 tests/test_debs/gdebi-test6.deb create mode 100644 tests/test_debs/gdebi-test7.deb create mode 100644 tests/test_debs/gdebi-test8.deb create mode 100644 tests/test_debs/gdebi-test9.deb (limited to 'tests') 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 +# +# 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 Binary files /dev/null and b/tests/test_debs/gdebi-test1.deb differ diff --git a/tests/test_debs/gdebi-test10.deb b/tests/test_debs/gdebi-test10.deb new file mode 100644 index 00000000..ca43ace6 Binary files /dev/null and b/tests/test_debs/gdebi-test10.deb differ diff --git a/tests/test_debs/gdebi-test2.deb b/tests/test_debs/gdebi-test2.deb new file mode 100644 index 00000000..307ac689 Binary files /dev/null and b/tests/test_debs/gdebi-test2.deb differ diff --git a/tests/test_debs/gdebi-test3.deb b/tests/test_debs/gdebi-test3.deb new file mode 100644 index 00000000..436b9258 Binary files /dev/null and b/tests/test_debs/gdebi-test3.deb differ diff --git a/tests/test_debs/gdebi-test4.deb b/tests/test_debs/gdebi-test4.deb new file mode 100644 index 00000000..9eb92d1b Binary files /dev/null and b/tests/test_debs/gdebi-test4.deb differ diff --git a/tests/test_debs/gdebi-test5.deb b/tests/test_debs/gdebi-test5.deb new file mode 100644 index 00000000..0c98c03f Binary files /dev/null and b/tests/test_debs/gdebi-test5.deb differ diff --git a/tests/test_debs/gdebi-test6.deb b/tests/test_debs/gdebi-test6.deb new file mode 100644 index 00000000..32fd1800 Binary files /dev/null and b/tests/test_debs/gdebi-test6.deb differ diff --git a/tests/test_debs/gdebi-test7.deb b/tests/test_debs/gdebi-test7.deb new file mode 100644 index 00000000..c0414990 Binary files /dev/null and b/tests/test_debs/gdebi-test7.deb differ diff --git a/tests/test_debs/gdebi-test8.deb b/tests/test_debs/gdebi-test8.deb new file mode 100644 index 00000000..439f8ca7 Binary files /dev/null and b/tests/test_debs/gdebi-test8.deb differ diff --git a/tests/test_debs/gdebi-test9.deb b/tests/test_debs/gdebi-test9.deb new file mode 100644 index 00000000..9901d906 Binary files /dev/null and b/tests/test_debs/gdebi-test9.deb differ -- cgit v1.2.3