summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2015-04-07 22:57:54 (GMT)
committerGregory P. Smith <greg@krypto.org>2015-04-07 22:57:54 (GMT)
commitace55865c5a528d4d2711c468c5da649fa20c4b1 (patch)
treeea7c26c8da7ca150d9ccc2a1e0625b03b8988bf2 /Lib
parent3c28878e401400c6a51edd84d6d550c42e9441b6 (diff)
downloadcpython-ace55865c5a528d4d2711c468c5da649fa20c4b1.zip
cpython-ace55865c5a528d4d2711c468c5da649fa20c4b1.tar.gz
cpython-ace55865c5a528d4d2711c468c5da649fa20c4b1.tar.bz2
Addresses Issue #10838: The subprocess now module includes
SubprocessError and TimeoutError in its list of exported names for the users wild enough to use "from subprocess import *". MAXFD, mswindows and list2cmdline should be dealt with (renamed or moved) in separate commits. Committed at 35,000ft. Thanks chromebook free gogo wifi passes!
Diffstat (limited to 'Lib')
-rw-r--r--Lib/subprocess.py5
-rw-r--r--Lib/test/test_subprocess.py15
2 files changed, 19 insertions, 1 deletions
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 6d2c4f5..1c7eb9e 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -433,7 +433,10 @@ else:
__all__ = ["Popen", "PIPE", "STDOUT", "call", "check_call", "getstatusoutput",
- "getoutput", "check_output", "CalledProcessError", "DEVNULL"]
+ "getoutput", "check_output", "CalledProcessError", "DEVNULL",
+ "SubprocessError", "TimeoutExpired"]
+ # NOTE: We intentionally exclude list2cmdline as it is
+ # considered an internal implementation detail. issue10838.
if mswindows:
from _winapi import (CREATE_NEW_CONSOLE, CREATE_NEW_PROCESS_GROUP,
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index e25cccd..71481bc 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -2420,6 +2420,21 @@ class ProcessTestCaseNoPoll(ProcessTestCase):
subprocess._PopenSelector = self.orig_selector
ProcessTestCase.tearDown(self)
+ def test__all__(self):
+ """Ensure that __all__ is populated properly."""
+ intentionally_excluded = set(("list2cmdline", "mswindows", "MAXFD"))
+ exported = set(subprocess.__all__)
+ possible_exports = set()
+ import types
+ for name, value in subprocess.__dict__.items():
+ if name.startswith('_'):
+ continue
+ if isinstance(value, (types.ModuleType,)):
+ continue
+ possible_exports.add(name)
+ self.assertEqual(exported, possible_exports - intentionally_excluded)
+
+
@unittest.skipUnless(mswindows, "Windows-specific tests")
class CommandsWithSpaces (BaseTestCase):