commit: 4845fbacbe1021be6de8a4ea5f8e21be9c0ac6e0 Author: Zac Medico <zmedico <AT> gentoo <DOT> org> AuthorDate: Wed Feb 24 21:01:49 2021 +0000 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> CommitDate: Wed Feb 24 21:05:36 2021 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=4845fbac
FetchIterator: pass DistfileName type as FetchTask filename Bug: https://bugs.gentoo.org/756778 Signed-off-by: Zac Medico <zmedico <AT> gentoo.org> lib/portage/_emirrordist/FetchIterator.py | 3 ++- lib/portage/tests/ebuild/test_fetch.py | 18 +++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/lib/portage/_emirrordist/FetchIterator.py b/lib/portage/_emirrordist/FetchIterator.py index fe521c346..8ca6a2eac 100644 --- a/lib/portage/_emirrordist/FetchIterator.py +++ b/lib/portage/_emirrordist/FetchIterator.py @@ -8,6 +8,7 @@ from portage.checksum import (_apply_hash_filter, _filter_unaccelarated_hashes, _hash_filter) from portage.dep import use_reduce from portage.exception import PortageException, PortageKeyError +from portage.package.ebuild.fetch import DistfileName from portage.util._async.AsyncTaskFuture import AsyncTaskFuture from portage.util._async.TaskScheduler import TaskScheduler from portage.util.futures.iter_completed import iter_gather @@ -259,7 +260,7 @@ def _async_fetch_tasks(config, hash_filter, repo_config, digests_future, cpv, cpv=cpv, background=True, digests=file_digests, - distfile=filename, + distfile=DistfileName(filename, digests=file_digests), restrict=restrict, uri_tuple=uri_tuple, config=config)) diff --git a/lib/portage/tests/ebuild/test_fetch.py b/lib/portage/tests/ebuild/test_fetch.py index c195888cc..d50a4cbfc 100644 --- a/lib/portage/tests/ebuild/test_fetch.py +++ b/lib/portage/tests/ebuild/test_fetch.py @@ -92,7 +92,7 @@ class EbuildFetchTestCase(TestCase): loop, scheme, host, - distfiles, + orig_distfiles, ebuilds, content, server, @@ -153,12 +153,13 @@ class EbuildFetchTestCase(TestCase): mirror_conf.read_from_file(io.StringIO(layout_data)) layouts = mirror_conf.get_all_layouts() content["/distfiles/layout.conf"] = layout_data.encode("utf8") - - for k, v in distfiles.items(): + distfiles = {} + for k, v in orig_distfiles.items(): filename = DistfileName( k, digests=dict((algo, checksum_str(v, hashname=algo)) for algo in MANIFEST2_HASH_DEFAULTS), ) + distfiles[filename] = v # mirror path for layout in layouts: @@ -166,11 +167,10 @@ class EbuildFetchTestCase(TestCase): # upstream path content["/distfiles/{}.txt".format(k)] = v - for filename in os.listdir(settings["DISTDIR"]): - try: - os.unlink(os.path.join(settings["DISTDIR"], filename)) - except OSError: - pass + shutil.rmtree(settings["DISTDIR"]) + os.makedirs(settings["DISTDIR"]) + with open(os.path.join(settings['DISTDIR'], 'layout.conf'), 'wt') as f: + f.write(layout_data) # Demonstrate that fetch preserves a stale file in DISTDIR when no digests are given. foo_uri = {'foo': ('{scheme}://{host}:{port}/distfiles/foo'.format(scheme=scheme, host=host, port=server.server_port),)} @@ -250,7 +250,7 @@ class EbuildFetchTestCase(TestCase): self.assertEqual(loop.run_until_complete(proc.wait()), 0) for k in distfiles: - with open(os.path.join(settings['DISTDIR'], k), 'rb') as f: + with open(os.path.join(settings['DISTDIR'], layouts[0].get_path(k)), 'rb') as f: self.assertEqual(f.read(), distfiles[k]) # Tests only work with one ebuild at a time, so the config