commit: d320211266b95dc8cbea295cb234a607246d955f Author: Zac Medico <zmedico <AT> gentoo <DOT> org> AuthorDate: Sat Feb 10 20:25:28 2024 +0000 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> CommitDate: Sat Feb 10 20:26:17 2024 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=d3202112
test_gpkg_metadata_url_case: shutdown http server daemon threads Bug: https://bugs.gentoo.org/924192 Signed-off-by: Zac Medico <zmedico <AT> gentoo.org> lib/portage/tests/gpkg/test_gpkg_metadata_url.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/portage/tests/gpkg/test_gpkg_metadata_url.py b/lib/portage/tests/gpkg/test_gpkg_metadata_url.py index 857defe188..422ca7d3fa 100644 --- a/lib/portage/tests/gpkg/test_gpkg_metadata_url.py +++ b/lib/portage/tests/gpkg/test_gpkg_metadata_url.py @@ -7,6 +7,7 @@ import tarfile import tempfile from functools import partial from os import urandom +from concurrent.futures import Future from portage.gpkg import gpkg from portage import os @@ -18,7 +19,7 @@ from portage.gpg import GPG class test_gpkg_metadata_url_case(TestCase): - def httpd(self, directory, port): + def httpd(self, directory, port, httpd_future): try: import http.server import socketserver @@ -28,6 +29,7 @@ class test_gpkg_metadata_url_case(TestCase): Handler = partial(http.server.SimpleHTTPRequestHandler, directory=directory) with socketserver.TCPServer(("127.0.0.1", port), Handler) as httpd: + httpd_future.set_result(httpd) httpd.serve_forever() def start_http_server(self, directory, port): @@ -36,11 +38,12 @@ class test_gpkg_metadata_url_case(TestCase): except ImportError: self.skipTest("threading module not exists") + httpd_future = Future() server = threading.Thread( - target=self.httpd, args=(directory, port), daemon=True + target=self.httpd, args=(directory, port, httpd_future), daemon=True ) server.start() - return server + return httpd_future.result() def test_gpkg_get_metadata_url(self): playground = ResolverPlayground( @@ -53,6 +56,7 @@ class test_gpkg_metadata_url_case(TestCase): } ) tmpdir = tempfile.mkdtemp() + server = None try: settings = playground.settings for _ in range(0, 5): @@ -85,6 +89,8 @@ class test_gpkg_metadata_url_case(TestCase): self.assertEqual(meta, meta_from_url) finally: + if server is not None: + server.shutdown() shutil.rmtree(tmpdir) playground.cleanup() @@ -99,6 +105,7 @@ class test_gpkg_metadata_url_case(TestCase): ) tmpdir = tempfile.mkdtemp() gpg = None + server = None try: settings = playground.settings gpg = GPG(settings) @@ -159,5 +166,7 @@ IkCfAP49AOYjzuQPP0n5P0SGCINnAVEXN7QLQ4PurY/lt7cT2gEAq01stXjFhrz5 finally: if gpg is not None: gpg.stop() + if server is not None: + server.shutdown() shutil.rmtree(tmpdir) playground.cleanup()
