Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pexpect for openSUSE:Factory 
checked in at 2025-09-14 18:49:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pexpect (Old)
 and      /work/SRC/openSUSE:Factory/.python-pexpect.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pexpect"

Sun Sep 14 18:49:32 2025 rev:49 rq:1304352 version:4.9.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pexpect/python-pexpect.changes    
2024-12-08 11:37:24.294305766 +0100
+++ /work/SRC/openSUSE:Factory/.python-pexpect.new.1977/python-pexpect.changes  
2025-09-14 18:50:15.522305816 +0200
@@ -1,0 +2,5 @@
+Mon Sep  8 03:28:29 UTC 2025 - Markéta Machová <[email protected]>
+
+- Add upstream py314.patch to fix tests with Python 3.14
+
+-------------------------------------------------------------------

New:
----
  py314.patch

----------(New B)----------
  New:
- Add upstream py314.patch to fix tests with Python 3.14
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pexpect.spec ++++++
--- /var/tmp/diff_new_pack.1w1ako/_old  2025-09-14 18:50:16.146331965 +0200
+++ /var/tmp/diff_new_pack.1w1ako/_new  2025-09-14 18:50:16.146331965 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-pexpect
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2025 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -24,6 +24,8 @@
 License:        ISC
 URL:            https://github.com/pexpect/pexpect
 Source:         
https://files.pythonhosted.org/packages/source/p/pexpect/pexpect-%{version}.tar.gz
+# PATCH-FIX-UPSTREAM https://github.com/pexpect/pexpect/pull/808 Tests: Avoid 
the multiprocessing forkserver method
+Patch0:         py314.patch
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module ptyprocess}
 BuildRequires:  %{python_module pytest}

++++++ py314.patch ++++++
>From 456bc10d94b57e254568e7ea9a8b3cffb856ebff Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <[email protected]>
Date: Fri, 22 Nov 2024 16:41:55 +0100
Subject: [PATCH] Tests: Avoid the multiprocessing forkserver method

Fixes https://github.com/pexpect/pexpect/issues/807
---
 tests/test_expect.py | 12 ++++++++++--
 tests/test_socket.py | 24 ++++++++++++++++--------
 2 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/tests/test_expect.py b/tests/test_expect.py
index c16e0551..fb1e30e2 100755
--- a/tests/test_expect.py
+++ b/tests/test_expect.py
@@ -33,6 +33,14 @@
 
 PY3 = bool(sys.version_info.major >= 3)
 
+# Python 3.14 changed the non-macOS POSIX default to forkserver
+# but the code in this module does not work with it
+# See https://github.com/python/cpython/issues/125714
+if multiprocessing.get_start_method() == 'forkserver':
+    mp_context = multiprocessing.get_context(method='fork')
+else:
+    mp_context = multiprocessing.get_context()
+
 # Many of these test cases blindly assume that sequential directory
 # listings of the /bin directory will yield the same results.
 # This may not be true, but seems adequate for testing now.
@@ -682,7 +690,7 @@ def test_stdin_closed(self):
         '''
         Ensure pexpect continues to operate even when stdin is closed
         '''
-        class Closed_stdin_proc(multiprocessing.Process):
+        class Closed_stdin_proc(mp_context.Process):
             def run(self):
                 sys.__stdin__.close()
                 cat = pexpect.spawn('cat')
@@ -698,7 +706,7 @@ def test_stdin_stdout_closed(self):
         '''
         Ensure pexpect continues to operate even when stdin and stdout is 
closed
         '''
-        class Closed_stdin_stdout_proc(multiprocessing.Process):
+        class Closed_stdin_stdout_proc(mp_context.Process):
             def run(self):
                 sys.__stdin__.close()
                 sys.__stdout__.close()
diff --git a/tests/test_socket.py b/tests/test_socket.py
index b801b00a..6521d368 100644
--- a/tests/test_socket.py
+++ b/tests/test_socket.py
@@ -29,6 +29,14 @@
 import time
 import errno
 
+# Python 3.14 changed the non-macOS POSIX default to forkserver
+# but the code in this module does not work with it
+# See https://github.com/python/cpython/issues/125714
+if multiprocessing.get_start_method() == 'forkserver':
+    mp_context = multiprocessing.get_context(method='fork')
+else:
+    mp_context = multiprocessing.get_context()
+
 
 class SocketServerError(Exception):
     pass
@@ -83,8 +91,8 @@ def setUp(self):
         self.prompt3 = b'Press X to exit:'
         self.enter = b'\r\n'
         self.exit = b'X\r\n'
-        self.server_up = multiprocessing.Event()
-        self.server_process = 
multiprocessing.Process(target=self.socket_server, args=(self.server_up,))
+        self.server_up = mp_context.Event()
+        self.server_process = mp_context.Process(target=self.socket_server, 
args=(self.server_up,))
         self.server_process.daemon = True
         self.server_process.start()
         counter = 0
@@ -189,9 +197,9 @@ def test_timeout(self):
             session.expect(b'Bogus response')
 
     def test_interrupt(self):
-        timed_out = multiprocessing.Event()
-        all_read = multiprocessing.Event()
-        test_proc = multiprocessing.Process(target=self.socket_fn, 
args=(timed_out, all_read))
+        timed_out = mp_context.Event()
+        all_read = mp_context.Event()
+        test_proc = mp_context.Process(target=self.socket_fn, args=(timed_out, 
all_read))
         test_proc.daemon = True
         test_proc.start()
         while not all_read.is_set():
@@ -203,9 +211,9 @@ def test_interrupt(self):
         self.assertEqual(test_proc.exitcode, errno.ETIMEDOUT)
 
     def test_multiple_interrupts(self):
-        timed_out = multiprocessing.Event()
-        all_read = multiprocessing.Event()
-        test_proc = multiprocessing.Process(target=self.socket_fn, 
args=(timed_out, all_read))
+        timed_out = mp_context.Event()
+        all_read = mp_context.Event()
+        test_proc = mp_context.Process(target=self.socket_fn, args=(timed_out, 
all_read))
         test_proc.daemon = True
         test_proc.start()
         while not all_read.is_set():

Reply via email to