diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2018-01-25 18:06:05 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-25 18:06:05 (GMT) |
commit | b31206a223955d614d7769f95fb979d60f77bf87 (patch) | |
tree | 32b882ea1726457d3eab496c2f915beba318aa8b | |
parent | 93a6119f081aa6e95a3f22466966cdc8820e37f9 (diff) | |
download | cpython-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.py | 2 | ||||
-rw-r--r-- | Lib/test/test_subprocess.py | 15 |
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: |