summaryrefslogtreecommitdiff
path: root/coverage/backward.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2009-07-08 14:05:36 -0400
committerNed Batchelder <ned@nedbatchelder.com>2009-07-08 14:05:36 -0400
commit9c7324f1e57909a83d145ee6d0826c8cf7d1a62e (patch)
tree383732694af2d44bb08f13ed524827e7a0d38c79 /coverage/backward.py
parentcf8104fc6f89f930c9ed73aa5fcb26d719c34c8c (diff)
downloadpython-coveragepy-9c7324f1e57909a83d145ee6d0826c8cf7d1a62e.tar.gz
Py3k: unify subprocess and popen4.
Diffstat (limited to 'coverage/backward.py')
-rw-r--r--coverage/backward.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/coverage/backward.py b/coverage/backward.py
index 506649d..91f07bf 100644
--- a/coverage/backward.py
+++ b/coverage/backward.py
@@ -4,6 +4,7 @@
# (Redefining built-in blah)
# The whole point of this file is to redefine built-ins, so shut up about it.
+import os
# Python 2.3 doesn't have `set`
try:
@@ -22,3 +23,29 @@ except NameError:
lst = list(iterable)
lst.sort()
return lst
+
+# Py2k and 3k don't agree on how to run commands in a subprocess.
+try:
+ import subprocess
+except ImportError:
+ def run_command(cmd):
+ """Run a command in a subprocess.
+
+ Returns the exit code and the combined stdout and stderr.
+
+ """
+ _, stdouterr = os.popen4(cmd)
+ return 0, stdouterr.read()
+else:
+ def run_command(cmd):
+ """Run a command in a subprocess.
+
+ Returns the exit code and the combined stdout and stderr.
+
+ """
+ proc = subprocess.Popen(cmd, shell=True,
+ stdin=subprocess.PIPE, stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT
+ )
+ retcode = proc.wait()
+ return retcode, proc.stdout.read()