def test_pkg_from_file_without_md5sums(self, _log_warn, _DebFile): meta = dict(package="a", version="1", architecture="amd64") _DebFile.return_value.control.debcontrol.return_value = meta args = "'md5sums' file not found, can't list MD5 sums" _DebFile.return_value.md5sums.side_effect = debfile.DebError(args) dp = DebPkg.from_file("/dev/null") _DebFile.return_value.md5sums.assert_called_once_with(encoding='utf-8') self.assertTrue(_log_warn.call_count == 1) self.assertEqual(dp.md5sums, DebPkgMD5sums())
def test_pkg_from_file(self, _DebFile): meta = dict(package="a", version="1", architecture="amd64") _DebFile.return_value.control.debcontrol.return_value = meta dp = DebPkg.from_file("/dev/null") # Let's convert the rfc822 format to a dict lines = str(dp.package).split('\n') ldict = dict( (x, z) for (x, y, z) in (line.partition(': ') for line in lines)) # Make sure the original dict is included for k, v in meta.items(): self.assertEqual(v, ldict[k])
def test_pkg_from_file_with_Filename(self, _DebFile): _DebFile.return_value.control.debcontrol.return_value = {} Filename = "pool/comp/a_1.deb" dp = DebPkg.from_file("/dev/null", Filename=Filename) self.assertEqual(Filename, dp._c['Filename'])
def test_pkg(self): package_data = { 'Package': u'foo', 'Version': u'0.0.1-1', 'Architecture': u'amd64', 'Maintainer': u'Brett Smith <*****@*****.**>', 'Installed-Size': u'25', 'Section': u'database', 'Priority': u'extra', 'Multi-Arch': u'foreign', 'Homepage': u'https://github.com/xbcsmith/foo', 'Description': u'So this is the Foo of Brixton program\n' ' When they kick at your front door\n How you' ' gonna come?\n With your hands on your head\n' ' Or on the trigger of your gun', 'MD5sum': u'5fc5c0cb24690e78d6c6a2e13753f1aa', 'SHA256': u'd80568c932f54997713bb7832c6da6aa04992919' 'f3d0f47afb6ba600a7586780', 'SHA1': u'5e26ae3ebf9f7176bb7fd01c9e802ac8e223cdcc' } attrs_data = { 'md5sum': u'5fc5c0cb24690e78d6c6a2e13753f1aa', 'sha1': u'5e26ae3ebf9f7176bb7fd01c9e802ac8e223cdcc', 'sha256': u'd80568c932f54997713bb7832c6da6aa049929' '19f3d0f47afb6ba600a7586780', 'name': u'foo', 'nevra': u'foo_0.0.1-1_amd64', } md5sums_data = { u'usr/share/doc/foo/changelog.Debian.gz': u'9e2d1b5db1f1fb50621a48538d570ee8', u'usr/share/doc/foo/copyright': u'a664cb0d199e56bb5691d8ae29ca759a', u'usr/share/doc/foo/README.Debian': u'22c9f74e69fd45c5a60331586763c253' } files_data = [x for x in md5sums_data.keys()] package_attrs = {'foo': attrs_data} package_objects = {'foo': deb822.Deb822(package_data)} package_files = {'foo': DebPkgFiles(files_data)} package_md5sums = {'foo': DebPkgMD5sums(md5sums_data)} files = [] for root, _, fl in os.walk(self.pool_dir): for f in fl: if f.endswith('.deb'): files.append(os.path.join(root, f)) packages = {} for fpath in files: pkg = DebPkg.from_file(fpath) packages.setdefault(pkg.name, pkg) for name, pkg in packages.items(): if name in package_attrs: for attr in package_attrs[name]: self.assertEquals(package_attrs[name][attr], getattr(pkg, attr)) if name in package_md5sums: self.assertEquals(package_md5sums[name], pkg.md5sums) if name in package_files: self.assertEquals(sorted([x for x in package_files[name]]), sorted([x for x in pkg.files])) self.assertEquals(package_files[name], pkg.files) if name in package_data: self.assertEquals(package_objects[name], pkg.package)