commit:     a9d497a139577a661b4d8c3f93aa659b8e9e2024
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sat Oct 25 18:51:43 2025 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sat Oct 25 19:13:28 2025 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=a9d497a1

LockNonblockTestCase: support multiprocessing forkserver start method

Bug: https://bugs.gentoo.org/965125
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>

 lib/portage/tests/locks/test_lock_nonblock.py | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/lib/portage/tests/locks/test_lock_nonblock.py 
b/lib/portage/tests/locks/test_lock_nonblock.py
index d30dfe113b..bd197c0d0b 100644
--- a/lib/portage/tests/locks/test_lock_nonblock.py
+++ b/lib/portage/tests/locks/test_lock_nonblock.py
@@ -14,12 +14,14 @@ from portage.tests import TestCase
 
 
 class LockNonblockTestCase(TestCase):
-    def _testLockNonblock(self):
+    def _testLockNonblock(self, env=None):
         tempdir = tempfile.mkdtemp()
         try:
             path = os.path.join(tempdir, "lock_me")
             lock1 = portage.locks.lockfile(path)
-            proc = multiprocessing.Process(target=self._lock_subprocess, 
args=(path,))
+            proc = multiprocessing.Process(
+                target=self._lock_subprocess, args=(path, env)
+            )
             proc.start()
             self.assertEqual(proc.pid > 0, True)
             proc.join()
@@ -30,7 +32,12 @@ class LockNonblockTestCase(TestCase):
             shutil.rmtree(tempdir)
 
     @staticmethod
-    def _lock_subprocess(path):
+    def _lock_subprocess(path, env):
+        if env is not None:
+            # This serves to implement __PORTAGE_TEST_HARDLINK_LOCKS
+            # environment variable inheritance for the multiprocessing
+            # forkserver start method.
+            os.environ.update(env)
         portage.locks._close_fds()
         # Disable close_fds since we don't exec
         # (see _setup_pipes docstring).
@@ -55,7 +62,7 @@ class LockNonblockTestCase(TestCase):
         prev_state = os.environ.pop("__PORTAGE_TEST_HARDLINK_LOCKS", None)
         os.environ["__PORTAGE_TEST_HARDLINK_LOCKS"] = "1"
         try:
-            self._testLockNonblock()
+            self._testLockNonblock(env={"__PORTAGE_TEST_HARDLINK_LOCKS": "1"})
         finally:
             os.environ.pop("__PORTAGE_TEST_HARDLINK_LOCKS", None)
             if prev_state is not None:

Reply via email to