commit:     9e84ef57ba747766c9147c1ac1b247faa1f05956
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sun Feb 25 00:31:13 2024 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sun Feb 25 00:42:46 2024 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=9e84ef57

testSpawnReturnProcTerminate: Fix integer in spawn command argument

The invalid integer in the spawn command argument intermittently
triggered this error when SIGTERM did not arrive until after the
exec call:

----------------------------- Captured stderr call -----------------------------
Process ForkProcess-23:
Traceback (most recent call last):
  File "/home/runner/work/portage/portage/lib/portage/process.py", line 818, in 
_exec_wrapper
    _exec(
  File "/home/runner/work/portage/portage/lib/portage/process.py", line 1068, 
in _exec
    _exec2(
  File "/home/runner/work/portage/portage/lib/portage/process.py", line 1166, 
in _exec2
    os.execve(binary, myargs, env)
TypeError: expected str, bytes or os.PathLike object, not int

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File 
"/opt/hostedtoolcache/Python/3.12.2/x64/lib/python3.12/multiprocessing/process.py",
 line 314, in _bootstrap
    self.run()
  File 
"/opt/hostedtoolcache/Python/3.12.2/x64/lib/python3.12/multiprocessing/process.py",
 line 108, in run
    self._target(*self._args, **self._kwargs)
  File 
"/home/runner/work/portage/portage/lib/portage/util/_async/ForkProcess.py", 
line 328, in _bootstrap
    sys.exit(target(*(args or []), **(kwargs or {})))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/portage/portage/lib/portage/process.py", line 1441, 
in __call__
    return self._target(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/portage/portage/lib/portage/process.py", line 853, in 
_exec_wrapper
    writemsg(f"{e}:\n   {' '.join(mycommand)}\n", noiselevel=-1)
                         ^^^^^^^^^^^^^^^^^^^
TypeError: sequence item 1: expected str instance, int found

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

 lib/portage/tests/process/test_spawn_returnproc.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/portage/tests/process/test_spawn_returnproc.py 
b/lib/portage/tests/process/test_spawn_returnproc.py
index 6d823d9c3d..8fbf54d0d2 100644
--- a/lib/portage/tests/process/test_spawn_returnproc.py
+++ b/lib/portage/tests/process/test_spawn_returnproc.py
@@ -32,7 +32,7 @@ class SpawnReturnProcTestCase(TestCase):
         loop = global_event_loop()
 
         async def watch_pid():
-            proc = spawn([sleep_binary, 9999], returnproc=True)
+            proc = spawn([sleep_binary, "9999"], returnproc=True)
             proc.terminate()
             self.assertEqual(await proc.wait(), -signal.SIGTERM)
 

Reply via email to