Blame 0001-Use-subprocess.Popen-for-startup-failure-test.patch

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