summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Astrand <astrand@lysator.liu.se>2006-07-14 14:04:45 (GMT)
committerPeter Astrand <astrand@lysator.liu.se>2006-07-14 14:04:45 (GMT)
commit7d1d43630e117fdc3ccb0a8c6a9b31ab7d443016 (patch)
tree4df183d0c83a0bbe980f6cb76de64a9f2fef0c79
parent8c051da2cfee6f0347970386465fb0831a4e179f (diff)
downloadcpython-7d1d43630e117fdc3ccb0a8c6a9b31ab7d443016.zip
cpython-7d1d43630e117fdc3ccb0a8c6a9b31ab7d443016.tar.gz
cpython-7d1d43630e117fdc3ccb0a8c6a9b31ab7d443016.tar.bz2
Bug #1223937: CalledProcessError.errno -> CalledProcessError.returncode.
-rw-r--r--Doc/lib/libsubprocess.tex7
-rw-r--r--Lib/subprocess.py21
-rw-r--r--Lib/test/test_subprocess.py2
-rw-r--r--Misc/NEWS4
4 files changed, 21 insertions, 13 deletions
diff --git a/Doc/lib/libsubprocess.tex b/Doc/lib/libsubprocess.tex
index bde92eb..9ea44dc 100644
--- a/Doc/lib/libsubprocess.tex
+++ b/Doc/lib/libsubprocess.tex
@@ -140,7 +140,7 @@ The arguments are the same as for the Popen constructor. Example:
Run command with arguments. Wait for command to complete. If the exit
code was zero then return, otherwise raise \exception{CalledProcessError.}
The \exception{CalledProcessError} object will have the return code in the
-\member{errno} attribute.
+\member{returncode} attribute.
The arguments are the same as for the Popen constructor. Example:
@@ -164,9 +164,8 @@ should prepare for \exception{OSError} exceptions.
A \exception{ValueError} will be raised if \class{Popen} is called
with invalid arguments.
-check_call() will raise \exception{CalledProcessError}, which is a
-subclass of \exception{OSError}, if the called process returns a
-non-zero return code.
+check_call() will raise \exception{CalledProcessError}, if the called
+process returns a non-zero return code.
\subsubsection{Security}
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 1fa036e..64846a6 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -121,7 +121,7 @@ check_call(*popenargs, **kwargs):
Run command with arguments. Wait for command to complete. If the
exit code was zero then return, otherwise raise
CalledProcessError. The CalledProcessError object will have the
- return code in the errno attribute.
+ return code in the returncode attribute.
The arguments are the same as for the Popen constructor. Example:
@@ -141,8 +141,8 @@ should prepare for OSErrors.
A ValueError will be raised if Popen is called with invalid arguments.
-check_call() will raise CalledProcessError, which is a subclass of
-OSError, if the called process returns a non-zero return code.
+check_call() will raise CalledProcessError, if the called process
+returns a non-zero return code.
Security
@@ -360,11 +360,16 @@ import types
import traceback
# Exception classes used by this module.
-class CalledProcessError(OSError):
+class CalledProcessError(Exception):
"""This exception is raised when a process run by check_call() returns
a non-zero exit status. The exit status will be stored in the
- errno attribute. This exception is a subclass of
- OSError."""
+ returncode attribute."""
+ def __init__(self, returncode, cmd):
+ self.returncode = returncode
+ self.cmd = cmd
+ def __str__(self):
+ return "Command '%s' returned non-zero exit status %d" % (self.cmd, self.returncode)
+
if mswindows:
import threading
@@ -442,7 +447,7 @@ def check_call(*popenargs, **kwargs):
"""Run command with arguments. Wait for command to complete. If
the exit code was zero then return, otherwise raise
CalledProcessError. The CalledProcessError object will have the
- return code in the errno attribute.
+ return code in the returncode attribute.
The arguments are the same as for the Popen constructor. Example:
@@ -453,7 +458,7 @@ def check_call(*popenargs, **kwargs):
if cmd is None:
cmd = popenargs[0]
if retcode:
- raise CalledProcessError(retcode, "Command %s returned non-zero exit status" % cmd)
+ raise CalledProcessError(retcode, cmd)
return retcode
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index 483e202..f2c3083 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -68,7 +68,7 @@ class ProcessTestCase(unittest.TestCase):
subprocess.check_call([sys.executable, "-c",
"import sys; sys.exit(47)"])
except subprocess.CalledProcessError, e:
- self.assertEqual(e.errno, 47)
+ self.assertEqual(e.returncode, 47)
else:
self.fail("Expected CalledProcessError")
diff --git a/Misc/NEWS b/Misc/NEWS
index b07bb4e..1598cb3 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -576,6 +576,10 @@ Extension Modules
Library
-------
+- Bug #1223937: subprocess.CalledProcessError reports the exit status
+ of the process using the returncode attribute, instead of
+ abusing errno.
+
- Patch #1475231: ``doctest`` has a new ``SKIP`` option, which causes
a doctest to be skipped (the code is not run, and the expected output
or exception is ignored).