Kaydet (Commit) 750018b9 authored tarafından R David Murray's avatar R David Murray

#2466: ismount now recognizes mount points user can't access.

Patch by Robin Roth, reviewed by Serhiy Storchaka, comment wording
tweaked by me.
üst eec9331b
...@@ -193,6 +193,7 @@ def ismount(path): ...@@ -193,6 +193,7 @@ def ismount(path):
parent = join(path, b'..') parent = join(path, b'..')
else: else:
parent = join(path, '..') parent = join(path, '..')
parent = realpath(parent)
try: try:
s2 = os.lstat(parent) s2 = os.lstat(parent)
except OSError: except OSError:
......
import itertools
import os import os
import posixpath import posixpath
import sys
import unittest import unittest
import warnings import warnings
from posixpath import realpath, abspath, dirname, basename from posixpath import realpath, abspath, dirname, basename
...@@ -213,6 +211,28 @@ class PosixPathTest(unittest.TestCase): ...@@ -213,6 +211,28 @@ class PosixPathTest(unittest.TestCase):
finally: finally:
os.lstat = save_lstat os.lstat = save_lstat
@unittest.skipIf(posix is None, "Test requires posix module")
def test_ismount_directory_not_readable(self):
# issue #2466: Simulate ismount run on a directory that is not
# readable, which used to return False.
save_lstat = os.lstat
def fake_lstat(path):
st_ino = 0
st_dev = 0
if path.startswith(ABSTFN) and path != ABSTFN:
# ismount tries to read something inside the ABSTFN directory;
# simulate this being forbidden (no read permission).
raise OSError("Fake [Errno 13] Permission denied")
if path == ABSTFN:
st_dev = 1
st_ino = 1
return posix.stat_result((0, st_ino, st_dev, 0, 0, 0, 0, 0, 0, 0))
try:
os.lstat = fake_lstat
self.assertIs(posixpath.ismount(ABSTFN), True)
finally:
os.lstat = save_lstat
def test_expanduser(self): def test_expanduser(self):
self.assertEqual(posixpath.expanduser("foo"), "foo") self.assertEqual(posixpath.expanduser("foo"), "foo")
self.assertEqual(posixpath.expanduser(b"foo"), b"foo") self.assertEqual(posixpath.expanduser(b"foo"), b"foo")
......
...@@ -1258,6 +1258,7 @@ Guido van Rossum ...@@ -1258,6 +1258,7 @@ Guido van Rossum
Just van Rossum Just van Rossum
Hugo van Rossum Hugo van Rossum
Saskia van Rossum Saskia van Rossum
Robin Roth
Clement Rouault Clement Rouault
Donald Wallace Rouse II Donald Wallace Rouse II
Liam Routt Liam Routt
......
...@@ -38,6 +38,9 @@ Core and Builtins ...@@ -38,6 +38,9 @@ Core and Builtins
Library Library
------- -------
- Issue #2466: posixpath.ismount now correctly recognizes mount points which
the user does not have permission to access.
- Issue #27773: Correct some memory management errors server_hostname in _ssl.wrap_socket(). - Issue #27773: Correct some memory management errors server_hostname in _ssl.wrap_socket().
- Issue #26750: unittest.mock.create_autospec() now works properly for - Issue #26750: unittest.mock.create_autospec() now works properly for
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment