def test_combined(self): l = ["blarn", "me/cows", "WI/cows", "madison", "belleville/cows", "verona/cows"] self.uril.add_uri("blarn") self.uril.add_mirror(fetch.mirror(["me", "WI"], "asdf")) self.uril.add_uri("madison") self.uril.add_mirror(fetch.default_mirror( ["belleville", "verona"], "foon")) self.assertUri(self.uril, l)
def __init__(self, parent, cachedb, eclass_cache, mirrors, default_mirrors, *args, **kwargs): super(package_factory, self).__init__(parent, *args, **kwargs) self._cache = cachedb self._ecache = eclass_cache if mirrors: mirrors = dict((k, mirror(v, k)) for k, v in mirrors.iteritems()) self.mirrors = mirrors if default_mirrors: self.default_mirrors = default_mirror(default_mirrors, "conf. default mirror") else: self.default_mirrors = None
def __init__(self, parent, cachedb, eclass_cache, mirrors, default_mirrors, *args, **kwargs): super().__init__(parent, *args, **kwargs) self._cache = cachedb self._ecache = eclass_cache if mirrors: mirrors = {k: fetch.mirror(v, k) for k, v in mirrors.items()} self.mirrors = mirrors if default_mirrors: self.default_mirrors = fetch.default_mirror(default_mirrors, "conf. default mirror") else: self.default_mirrors = None
def test_fetchables(self): l = [] def f(self, cpv, allow_missing=False): l.append(cpv) return allow_missing, {'monkey.tgz': {}, 'boon.tgz': {}, 'foon.tar.gz': {}} repo = self.make_parent(_get_digests=f) parent = self.make_parent(_parent_repo=repo) # verify it does digest lookups... o = self.get_pkg({'SRC_URI': 'http://foo.com/bar.tgz'}, repo=parent) with pytest.raises(errors.MetadataException): getattr(o, 'fetchables') assert l == [o] # basic tests; for x in range(0, 3): f = self.get_pkg({'SRC_URI': 'http://foo.com/monkey.tgz', 'EAPI': str(x)}, repo=parent).fetchables assert list(f[0].uri) == ['http://foo.com/monkey.tgz'] assert f[0].filename == 'monkey.tgz' f = self.get_pkg({'SRC_URI': 'http://foo.com/monkey.tgz ' 'http://dar/boon.tgz', 'EAPI': '2'}, repo=parent).fetchables assert [list(x.uri) for x in f] == [['http://foo.com/monkey.tgz'], ['http://dar/boon.tgz']] assert [x.filename for x in f] == ['monkey.tgz', 'boon.tgz'] f = self.get_pkg({'SRC_URI': 'http://foo.com/monkey.tgz -> foon.tar.gz', 'EAPI': '2'}, repo=parent).fetchables assert list(f[0].uri) == ['http://foo.com/monkey.tgz'] assert f[0].filename == 'foon.tar.gz' o = self.get_pkg({'SRC_URI': 'http://foo.com/monkey.tgz -> ', 'EAPI': '2'}, repo=parent) with pytest.raises(errors.MetadataException): getattr(o, 'fetchables') # verify it collapses multiple basenames down to the same. f = self.get_pkg({'SRC_URI': 'http://foo.com/monkey.tgz ' 'http://foo.com2/monkey.tgz'}, repo=parent).fetchables assert list(f[0].uri) == ['http://foo.com/monkey.tgz', 'http://foo.com2/monkey.tgz'] mirror = fetch.mirror(['http://boon.com/'], 'mirror1') parent = self.make_parent(_parent_repo=repo, mirrors={'mirror1': mirror}) f = self.get_pkg( {'SRC_URI': 'mirror://mirror1/foon/monkey.tgz'}, repo=parent).fetchables assert list(f[0].uri) == ['http://boon.com/foon/monkey.tgz'] # unknown mirrors get ignored (and flagged by pkgcheck) pkg = self.get_pkg({'SRC_URI': 'mirror://mirror2/foon/monkey.tgz'}, repo=parent) assert pkg.fetchables assert ( [list(x.uri) for x in self.get_pkg( {'EAPI': '2', 'SRC_URI': 'mirror://mirror1/monkey.tgz -> foon.tar.gz'}, repo=parent).fetchables] == [['http://boon.com/monkey.tgz']]) parent = self.make_parent(_parent_repo=repo, mirrors={'mirror1': mirror}, default_mirrors=fetch.default_mirror( ['http://default.com/dist/', 'http://default2.com/'], 'default')) assert ( [list(x.uri) for x in self.get_pkg( {'EAPI': '2', 'SRC_URI': 'mirror://mirror1/monkey.tgz -> foon.tar.gz'}, repo=parent).fetchables] == [[ 'http://default.com/dist/foon.tar.gz', 'http://default2.com/foon.tar.gz', 'http://boon.com/monkey.tgz']]) parent = self.make_parent(_parent_repo=repo, default_mirrors=mirror) f = self.get_pkg({'SRC_URI': 'http://foo.com/monkey.tgz'}, repo=parent).fetchables assert list(f[0].uri) == ['http://boon.com/monkey.tgz', 'http://foo.com/monkey.tgz'] # skip default mirrors pkg = self.get_pkg({'SRC_URI': 'http://foo.com/monkey.tgz'}, repo=parent) f = pkg._get_attr['fetchables'](pkg, skip_default_mirrors=True) assert list(f[0].uri) == ['http://foo.com/monkey.tgz'] # test primaryuri... mirror2 = fetch.mirror(['http://boon2.com/'], 'default') parent = self.make_parent(_parent_repo=repo, default_mirrors=mirror, mirrors={'mirror1': mirror2}) f = self.get_pkg({'SRC_URI': 'http://foo.com/monkey.tgz ' 'mirror://mirror1/boon.tgz', 'RESTRICT': 'primaryuri'}, repo=parent).fetchables assert list(f[0].uri) == ['http://foo.com/monkey.tgz', 'http://boon.com/monkey.tgz'] assert list(f[1].uri) == ['http://boon2.com/boon.tgz', 'http://boon.com/boon.tgz'] assert len(f) == 2 # restrict=mirror.. f = self.get_pkg({'SRC_URI': 'http://foo.com/monkey.tgz', 'RESTRICT': 'mirror'}, repo=parent).fetchables assert list(f[0].uri) == ['http://foo.com/monkey.tgz'] assert len(f) == 1 # test uri for when there *is* no uri f = self.get_pkg({'SRC_URI': 'monkey.tgz'}, repo=parent).fetchables assert list(f[0].uri) == []
def test_fetchables(self): l = [] def f(self, cpv, allow_missing=False): l.append(cpv) return allow_missing, {'monkey.tgz': {}, 'boon.tgz': {}, 'foon.tar.gz': {}} repo = self.make_parent(_get_digests=f) parent = self.make_parent(_parent_repo=repo) # verify it does digest lookups... o = self.get_pkg({'SRC_URI':'http://foo.com/bar.tgz'}, repo=parent) self.assertRaises(errors.MetadataException, getattr, o, 'fetchables') self.assertEqual(l, [o]) # basic tests; for x in xrange(0,3): f = self.get_pkg({'SRC_URI':'http://foo.com/monkey.tgz', 'EAPI':str(x)}, repo=parent).fetchables self.assertEqual(list(f[0].uri), ['http://foo.com/monkey.tgz']) self.assertEqual(f[0].filename, 'monkey.tgz') f = self.get_pkg({'SRC_URI':'http://foo.com/monkey.tgz ' 'http://dar/boon.tgz', 'EAPI':'2'}, repo=parent).fetchables self.assertEqual([list(x.uri) for x in f], [['http://foo.com/monkey.tgz'], ['http://dar/boon.tgz']]) self.assertEqual([x.filename for x in f], ['monkey.tgz', 'boon.tgz']) f = self.get_pkg({'SRC_URI':'http://foo.com/monkey.tgz -> foon.tar.gz', 'EAPI':'2'}, repo=parent).fetchables self.assertEqual(list(f[0].uri), ['http://foo.com/monkey.tgz']) self.assertEqual(f[0].filename, 'foon.tar.gz') o = self.get_pkg({'SRC_URI':'http://foo.com/monkey.tgz -> ', 'EAPI':'2'}, repo=parent) self.assertRaises(errors.MetadataException, getattr, o, 'fetchables') # verify it collapses multiple basenames down to the same. f = self.get_pkg({'SRC_URI':'http://foo.com/monkey.tgz ' 'http://foo.com2/monkey.tgz'}, repo=parent).fetchables self.assertEqual(list(f[0].uri), ['http://foo.com/monkey.tgz', 'http://foo.com2/monkey.tgz']) mirror = fetch.mirror(['http://boon.com/'], 'mirror1') parent = self.make_parent(_parent_repo=repo, mirrors={ 'mirror1': mirror}) f = self.get_pkg({'SRC_URI': 'mirror://mirror1/foon/monkey.tgz'}, repo=parent).fetchables self.assertEqual(list(f[0].uri), ['http://boon.com/foon/monkey.tgz']) # assert it bails if mirror doesn't exist. self.assertRaises(errors.MetadataException, getattr, self.get_pkg( {'SRC_URI':'mirror://mirror2/foon/monkey.tgz'}, repo=parent), 'fetchables') self.assertEqual([list(x.uri) for x in self.get_pkg({'EAPI':'2', 'SRC_URI': 'mirror://mirror1/monkey.tgz -> foon.tar.gz'}, repo=parent).fetchables], [['http://boon.com/monkey.tgz']]) parent = self.make_parent(_parent_repo=repo, mirrors={'mirror1':mirror}, default_mirrors=fetch.default_mirror( ['http://default.com/dist/', 'http://default2.com/'], 'default')) self.assertEqual([list(x.uri) for x in self.get_pkg({'EAPI':'2', 'SRC_URI': 'mirror://mirror1/monkey.tgz -> foon.tar.gz'}, repo=parent).fetchables], [['http://default.com/dist/foon.tar.gz', 'http://default2.com/foon.tar.gz', 'http://boon.com/monkey.tgz']]) parent = self.make_parent(_parent_repo=repo, default_mirrors=mirror) f = self.get_pkg({'SRC_URI': 'http://foo.com/monkey.tgz'}, repo=parent).fetchables self.assertEqual(list(f[0].uri), ['http://boon.com/monkey.tgz', 'http://foo.com/monkey.tgz']) # test primaryuri... mirror2 = fetch.mirror(['http://boon2.com/'], 'default') parent = self.make_parent(_parent_repo=repo, default_mirrors=mirror, mirrors={'mirror1':mirror2}) f = self.get_pkg({'SRC_URI': 'http://foo.com/monkey.tgz ' 'mirror://mirror1/boon.tgz', 'RESTRICT':'primaryuri'}, repo=parent).fetchables self.assertEqual(list(f[0].uri), ['http://foo.com/monkey.tgz', 'http://boon.com/monkey.tgz']) self.assertEqual(list(f[1].uri), ['http://boon2.com/boon.tgz', 'http://boon.com/boon.tgz']) self.assertEqual(len(f), 2) # restrict=mirror.. f = self.get_pkg({'SRC_URI': 'http://foo.com/monkey.tgz', 'RESTRICT': 'mirror'}, repo=parent).fetchables self.assertEqual(list(f[0].uri), ['http://foo.com/monkey.tgz']) self.assertEqual(len(f), 1) # test uri for when there *is* no uri f = self.get_pkg({'SRC_URI': 'monkey.tgz'}, repo=parent).fetchables self.assertEqual(list(f[0].uri), [])
def test_fetchables(self): l = [] def f(self, cpv, allow_missing=False): l.append(cpv) return allow_missing, {"monkey.tgz": {}, "boon.tgz": {}, "foon.tar.gz": {}} repo = self.make_parent(_get_digests=f) parent = self.make_parent(_parent_repo=repo) # verify it does digest lookups... o = self.get_pkg({"SRC_URI": "http://foo.com/bar.tgz"}, repo=parent) self.assertRaises(errors.MetadataException, getattr, o, "fetchables") self.assertEqual(l, [o]) # basic tests; for x in xrange(0, 3): f = self.get_pkg({"SRC_URI": "http://foo.com/monkey.tgz", "EAPI": str(x)}, repo=parent).fetchables self.assertEqual(list(f[0].uri), ["http://foo.com/monkey.tgz"]) self.assertEqual(f[0].filename, "monkey.tgz") f = self.get_pkg( {"SRC_URI": "http://foo.com/monkey.tgz " "http://dar/boon.tgz", "EAPI": "2"}, repo=parent ).fetchables self.assertEqual([list(x.uri) for x in f], [["http://foo.com/monkey.tgz"], ["http://dar/boon.tgz"]]) self.assertEqual([x.filename for x in f], ["monkey.tgz", "boon.tgz"]) f = self.get_pkg({"SRC_URI": "http://foo.com/monkey.tgz -> foon.tar.gz", "EAPI": "2"}, repo=parent).fetchables self.assertEqual(list(f[0].uri), ["http://foo.com/monkey.tgz"]) self.assertEqual(f[0].filename, "foon.tar.gz") o = self.get_pkg({"SRC_URI": "http://foo.com/monkey.tgz -> ", "EAPI": "2"}, repo=parent) self.assertRaises(errors.MetadataException, getattr, o, "fetchables") # verify it collapses multiple basenames down to the same. f = self.get_pkg({"SRC_URI": "http://foo.com/monkey.tgz " "http://foo.com2/monkey.tgz"}, repo=parent).fetchables self.assertEqual(list(f[0].uri), ["http://foo.com/monkey.tgz", "http://foo.com2/monkey.tgz"]) mirror = fetch.mirror(["http://boon.com/"], "mirror1") parent = self.make_parent(_parent_repo=repo, mirrors={"mirror1": mirror}) f = self.get_pkg({"SRC_URI": "mirror://mirror1/foon/monkey.tgz"}, repo=parent).fetchables self.assertEqual(list(f[0].uri), ["http://boon.com/foon/monkey.tgz"]) # assert it bails if mirror doesn't exist. self.assertRaises( errors.MetadataException, getattr, self.get_pkg({"SRC_URI": "mirror://mirror2/foon/monkey.tgz"}, repo=parent), "fetchables", ) self.assertEqual( [ list(x.uri) for x in self.get_pkg( {"EAPI": "2", "SRC_URI": "mirror://mirror1/monkey.tgz -> foon.tar.gz"}, repo=parent ).fetchables ], [["http://boon.com/monkey.tgz"]], ) parent = self.make_parent( _parent_repo=repo, mirrors={"mirror1": mirror}, default_mirrors=fetch.default_mirror(["http://default.com/dist/", "http://default2.com/"], "default"), ) self.assertEqual( [ list(x.uri) for x in self.get_pkg( {"EAPI": "2", "SRC_URI": "mirror://mirror1/monkey.tgz -> foon.tar.gz"}, repo=parent ).fetchables ], [["http://default.com/dist/foon.tar.gz", "http://default2.com/foon.tar.gz", "http://boon.com/monkey.tgz"]], ) parent = self.make_parent(_parent_repo=repo, default_mirrors=mirror) f = self.get_pkg({"SRC_URI": "http://foo.com/monkey.tgz"}, repo=parent).fetchables self.assertEqual(list(f[0].uri), ["http://boon.com/monkey.tgz", "http://foo.com/monkey.tgz"]) # test primaryuri... mirror2 = fetch.mirror(["http://boon2.com/"], "default") parent = self.make_parent(_parent_repo=repo, default_mirrors=mirror, mirrors={"mirror1": mirror2}) f = self.get_pkg( {"SRC_URI": "http://foo.com/monkey.tgz " "mirror://mirror1/boon.tgz", "RESTRICT": "primaryuri"}, repo=parent ).fetchables self.assertEqual(list(f[0].uri), ["http://foo.com/monkey.tgz", "http://boon.com/monkey.tgz"]) self.assertEqual(list(f[1].uri), ["http://boon2.com/boon.tgz", "http://boon.com/boon.tgz"]) self.assertEqual(len(f), 2) # restrict=mirror.. f = self.get_pkg({"SRC_URI": "http://foo.com/monkey.tgz", "RESTRICT": "mirror"}, repo=parent).fetchables self.assertEqual(list(f[0].uri), ["http://foo.com/monkey.tgz"]) self.assertEqual(len(f), 1) # test uri for when there *is* no uri f = self.get_pkg({"SRC_URI": "monkey.tgz"}, repo=parent).fetchables self.assertEqual(list(f[0].uri), [])