def test_distance(self): pkg2 = support.MockPackage('rust-and-stardust-1-2.x86_64') pkg1 = support.MockPackage('rust-1-3.x86_64') counter = dnf.match_counter.MatchCounter() counter.add(pkg1, 'name', 'rust') counter.add(pkg2, 'name', 'rust') # 'rust-and-stardust' is a worse match for 'rust' than 'rust' itself self.assertSequenceEqual([x.name for x in counter.sorted()], ['rust-and-stardust', 'rust'])
def test_bandwidth_used(self): errors = dnf.repo._DownloadErrors() pkg1 = support.MockPackage('penny-1-1.noarch') pkg1.downloadsize = 10 pkg2 = support.MockPackage('lane-2-1.noarch') pkg2.downloadsize = 1 pl1 = dnf.repo.RPMPayload(pkg1, None) pl2 = dnf.repo.RPMPayload(pkg2, None) errors._skipped.add(pl2.pkg) self.assertEqual(errors._bandwidth_used(pl1), 10) self.assertEqual(errors._bandwidth_used(pl2), 0)
def test_update_saving(self): progress = dnf.callback.NullDownloadProgress() pkg = support.MockPackage("tour-4-4.noarch") pkg.downloadsize = 5 pload1 = dnf.repo.RPMPayload(pkg, progress) pkg = support.MockPackage("magical-4-4.noarch") pkg.downloadsize = 8 pload2 = dnf.drpm.DeltaPayload(None, mock.Mock(downloadsize=5), pkg, progress) saving = (5, 10) saving = dnf.repo._update_saving(saving, (pload1, pload2), {}) self.assertEqual(saving, (15, 23))
def test_update_saving_with_err(self): progress = dnf.callback.NullDownloadProgress() pkg = support.MockPackage("magical-4-4.noarch") pkg.downloadsize = 8 pload = dnf.drpm.DeltaPayload(None, mock.Mock(downloadsize=5), pkg, progress) saving = (5, 10) saving = dnf.repo._update_saving(saving, (pload, ), {pkg: 'failed'}) self.assertEqual(saving, (10, 10))
def test_recent_pkgs(self): sack = support.mock_sack("main") now = time.time() installed = [ support.MockPackage(str(p)) for p in sack.query().installed().run() ] installed[0].buildtime = now - 86400 / 2 pkgs = dnf.query.recent_pkgs(installed, 1) self.assertEqual(len(pkgs), 1)
def test_matched(self): pkg = support.MockPackage("humbert-1-1.noarch") pkg.url = url = "http://humbert.com" pkg.summary = summary = "Glimpses of an incomparably more poignant bliss." counter = dnf.match_counter.MatchCounter() counter.add(pkg, 'summary', 'poignant') counter.add(pkg, 'url', 'humbert') counter.add(pkg, 'summary', 'humbert') self.assertCountEqual(counter.matched_needles(pkg), ['humbert', 'poignant']) self.assertCountEqual(counter.matched_keys(pkg), ['url', 'summary']) self.assertCountEqual(counter.matched_haystacks(pkg), [url, summary])
def test_remote_download(self): progress = dnf.callback.NullDownloadProgress() repo = self.build_repo('r', 'r for riot') pkg = support.MockPackage("tour-4-4.noarch", repo=repo) pkg.downloadsize = 2317 pkg._chksum = ('sha256', TOUR_CHKSUM) pload = dnf.repo.RPMPayload(pkg, progress) drpm = dnf.drpm.DeltaInfo(None, None) errs = dnf.repo._download_payloads([pload], drpm) self.assertEmpty(errs._recoverable) self.assertEmpty(errs._irrecoverable) path = os.path.join(repo._cachedir, 'packages/tour-4-4.noarch.rpm') self.assertFile(path)
def test_infoOutput_with_none_description(self): pkg = support.MockPackage('tour-5-0.noarch') pkg.from_system = False pkg.size = 0 pkg.pkgid = None pkg.repoid = None pkg.e = pkg.epoch pkg.v = pkg.version pkg.r = pkg.release pkg.summary = 'A summary of the package.' pkg.url = 'http://example.com' pkg.license = 'GPL+' pkg.description = None with mock.patch('sys.stdout') as stdout: self.output.infoOutput(pkg) written = ''.join( [mc[1][0] for mc in stdout.method_calls if mc[0] == 'write']) self.assertEqual(written, INFOOUTPUT_OUTPUT)