summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2018-01-25 18:06:05 (GMT)
committerGitHub <noreply@github.com>2018-01-25 18:06:05 (GMT)
commitb31206a223955d614d7769f95fb979d60f77bf87 (patch)
tree32b882ea1726457d3eab496c2f915beba318aa8b
parent93a6119f081aa6e95a3f22466966cdc8820e37f9 (diff)
downloadcpython-b31206a223955d614d7769f95fb979d60f77bf87.zip
cpython-b31206a223955d614d7769f95fb979d60f77bf87.tar.gz
cpython-b31206a223955d614d7769f95fb979d60f77bf87.tar.bz2
bpo-32667: Fix tests when $PATH contains a file (#5322)
Some tests failed when the PATH environment variable contained a path to an existing file. Fix tests to ignore also NotADirectoryError, not only FileNotFoundError and PermissionError.
-rw-r--r--Lib/test/test_dtrace.py2
-rw-r--r--Lib/test/test_subprocess.py15
2 files changed, 8 insertions, 9 deletions
diff --git a/Lib/test/test_dtrace.py b/Lib/test/test_dtrace.py
index 47a5010..8612e27 100644
--- a/Lib/test/test_dtrace.py
+++ b/Lib/test/test_dtrace.py
@@ -79,7 +79,7 @@ class TraceBackend:
try:
output = self.trace(abspath("assert_usable" + self.EXTENSION))
output = output.strip()
- except (FileNotFoundError, PermissionError) as fnfe:
+ except (FileNotFoundError, NotADirectoryError, PermissionError) as fnfe:
output = str(fnfe)
if output != "probe: success":
raise unittest.SkipTest(
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index 540ad34..2e2721e 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -46,6 +46,8 @@ else:
SETBINARY = ''
NONEXISTING_CMD = ('nonexisting_i_hope',)
+# Ignore errors that indicate the command was not found
+NONEXISTING_ERRORS = (FileNotFoundError, NotADirectoryError, PermissionError)
class BaseTestCase(unittest.TestCase):
@@ -306,9 +308,9 @@ class ProcessTestCase(BaseTestCase):
# Verify first that the call succeeds without the executable arg.
pre_args = [sys.executable, "-c"]
self._assert_python(pre_args)
- self.assertRaises((FileNotFoundError, PermissionError),
+ self.assertRaises(NONEXISTING_ERRORS,
self._assert_python, pre_args,
- executable="doesnotexist")
+ executable=NONEXISTING_CMD[0])
@unittest.skipIf(mswindows, "executable argument replaces shell")
def test_executable_replaces_shell(self):
@@ -1146,13 +1148,10 @@ class ProcessTestCase(BaseTestCase):
# value for that limit, but Windows has 2048, so we loop
# 1024 times (each call leaked two fds).
for i in range(1024):
- with self.assertRaises(OSError) as c:
+ with self.assertRaises(NONEXISTING_ERRORS):
subprocess.Popen(NONEXISTING_CMD,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
- # ignore errors that indicate the command was not found
- if c.exception.errno not in (errno.ENOENT, errno.EACCES):
- raise c.exception
def test_nonexisting_with_pipes(self):
# bpo-30121: Popen with pipes must close properly pipes on error.
@@ -2533,7 +2532,7 @@ class POSIXProcessTestCase(BaseTestCase):
# let some time for the process to exit, and create a new Popen: this
# should trigger the wait() of p
time.sleep(0.2)
- with self.assertRaises(OSError) as c:
+ with self.assertRaises(OSError):
with subprocess.Popen(NONEXISTING_CMD,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE) as proc:
@@ -3044,7 +3043,7 @@ class ContextManagerTests(BaseTestCase):
self.assertEqual(proc.returncode, 1)
def test_invalid_args(self):
- with self.assertRaises((FileNotFoundError, PermissionError)) as c:
+ with self.assertRaises(NONEXISTING_ERRORS):
with subprocess.Popen(NONEXISTING_CMD,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE) as proc: