hghave: use subprocess instead of os.popen
authorAugie Fackler <augie@google.com>
Mon, 31 Aug 2015 22:44:20 -0400
changeset 26137 99e8a9ff1f5f
parent 26136 6defc74f3066
child 26138 f77a3f27cea5
hghave: use subprocess instead of os.popen os.popen was deprecated in Python 2.6 in favor of subprocess, so let's move into the future.
tests/hghave.py
--- a/tests/hghave.py	Sat Aug 22 15:12:52 2015 -0700
+++ b/tests/hghave.py	Mon Aug 31 22:44:20 2015 -0400
@@ -1,6 +1,9 @@
-import os, stat
+import errno
+import os
 import re
 import socket
+import stat
+import subprocess
 import sys
 import tempfile
 
@@ -69,14 +72,16 @@
     is matched by the supplied regular expression.
     """
     r = re.compile(regexp)
-    fh = os.popen(cmd)
-    s = fh.read()
     try:
-        ret = fh.close()
-    except IOError:
-        # Happen in Windows test environment
-        ret = 1
-    return (ignorestatus or ret is None) and r.search(s)
+        p = subprocess.Popen(
+            cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+    except OSError as e:
+        if e.errno != errno.ENOENT:
+            raise
+        ret = -1
+    ret = p.wait()
+    s = p.stdout.read()
+    return (ignorestatus or not ret) and r.search(s)
 
 @check("baz", "GNU Arch baz client")
 def has_baz():