diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2009-07-08 14:05:36 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2009-07-08 14:05:36 -0400 |
commit | 9c7324f1e57909a83d145ee6d0826c8cf7d1a62e (patch) | |
tree | 383732694af2d44bb08f13ed524827e7a0d38c79 /coverage/backward.py | |
parent | cf8104fc6f89f930c9ed73aa5fcb26d719c34c8c (diff) | |
download | python-coveragepy-9c7324f1e57909a83d145ee6d0826c8cf7d1a62e.tar.gz |
Py3k: unify subprocess and popen4.
Diffstat (limited to 'coverage/backward.py')
-rw-r--r-- | coverage/backward.py | 27 |
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() |