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()

Reply via email to