waypipe/0001-Use-subprocess.Popen-f...

58 lines
1.8 KiB
Diff

From 68e6782cb5ebe9f9a17cc28f23687ec2ebc54af0 Mon Sep 17 00:00:00 2001
From: Manuel Stoeckl <code@mstoeckl.com>
Date: Thu, 28 Nov 2019 12:01:16 -0500
Subject: [PATCH] Use subprocess.Popen for startup failure test
According to the Python documentation, the new usage should be valid
for Python >=3.3, covering a wider range than the >=3.5 for
subprocess.Popen. Also, this change avoids a possible regression
with Python 3.8.0 in which the TimeoutExpired exception no longer
provides a non-None .output field.
---
test/startup_failure.py | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/test/startup_failure.py b/test/startup_failure.py
index 3d4117a..ae988b2 100755
--- a/test/startup_failure.py
+++ b/test/startup_failure.py
@@ -53,23 +53,23 @@ def run_test(name, command, env, use_socketpair, expect_success):
pfds = []
timed_out = False
+ proc = subprocess.Popen(
+ command,
+ env=env,
+ stdin=subprocess.DEVNULL,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ pass_fds=pfds,
+ )
try:
- proc = subprocess.run(
- command,
- env=env,
- stdin=subprocess.DEVNULL,
- stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT,
- timeout=0.25,
- pass_fds=pfds,
- )
+ output, none = proc.communicate(timeout=0.25)
except subprocess.TimeoutExpired as e:
- timed_out = True
- output = e.output
# Program began to wait for a connection
+ proc.kill()
+ output, none = proc.communicate()
retcode = 0 if "client" in command else (0 if expect_success else 1)
+ timed_out = True
else:
- output = proc.stdout
retcode = proc.returncode
if use_socketpair:
--
2.26.2