summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_subprocess.py26
-rw-r--r--Misc/NEWS5
2 files changed, 21 insertions, 10 deletions
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index f8cd1de325..723845a13f 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -1398,16 +1398,22 @@ class POSIXProcessTestCase(BaseTestCase):
def _kill_process(self, method, *args):
# Do not inherit file handles from the parent.
# It should fix failures on some platforms.
- p = subprocess.Popen([sys.executable, "-c", """if 1:
- import sys, time
- sys.stdout.write('x\\n')
- sys.stdout.flush()
- time.sleep(30)
- """],
- close_fds=True,
- stdin=subprocess.PIPE,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
+ # Also set the SIGINT handler to the default to make sure it's not
+ # being ignored (some tests rely on that.)
+ old_handler = signal.signal(signal.SIGINT, signal.default_int_handler)
+ try:
+ p = subprocess.Popen([sys.executable, "-c", """if 1:
+ import sys, time
+ sys.stdout.write('x\\n')
+ sys.stdout.flush()
+ time.sleep(30)
+ """],
+ close_fds=True,
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ finally:
+ signal.signal(signal.SIGINT, old_handler)
# Wait for the interpreter to be completely initialized before
# sending any signal.
p.stdout.read(1)
diff --git a/Misc/NEWS b/Misc/NEWS
index be2dc9dde8..4572ae6c37 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -309,6 +309,11 @@ IDLE
Tests
-----
+- Issue #15507: test_subprocess's test_send_signal could fail if the test
+ runner were run in an environment where the process inherited an ignore
+ setting for SIGINT. Restore the SIGINT handler to the desired
+ KeyboardInterrupt raising one during that test.
+
- Issue #18792: Use "127.0.0.1" or "::1" instead of "localhost" as much as
possible, since "localhost" goes through a DNS lookup under recent Windows
versions.