From 68e6782cb5ebe9f9a17cc28f23687ec2ebc54af0 Mon Sep 17 00:00:00 2001 From: Manuel Stoeckl 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