mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
#2466: ismount now recognizes mount points user can't access.
Patch by Robin Roth, reviewed by Serhiy Storchaka, comment wording tweaked by me.
This commit is contained in:
parent
eec9331b20
commit
750018b91a
4 changed files with 27 additions and 2 deletions
|
|
@ -1,7 +1,5 @@
|
|||
import itertools
|
||||
import os
|
||||
import posixpath
|
||||
import sys
|
||||
import unittest
|
||||
import warnings
|
||||
from posixpath import realpath, abspath, dirname, basename
|
||||
|
|
@ -213,6 +211,28 @@ class PosixPathTest(unittest.TestCase):
|
|||
finally:
|
||||
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):
|
||||
self.assertEqual(posixpath.expanduser("foo"), "foo")
|
||||
self.assertEqual(posixpath.expanduser(b"foo"), b"foo")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue