[Python-checkins] GH-89812: Miscellaneous pathlib test improvements (GH-106063)
barneygale
webhook-mailer at python.org
Sat Jul 1 08:29:05 EDT 2023
https://github.com/python/cpython/commit/cbc33e4aede10f4d5799d9f7aa9ec5b91414f65b
commit: cbc33e4aede10f4d5799d9f7aa9ec5b91414f65b
branch: main
author: Barney Gale <barney.gale at gmail.com>
committer: barneygale <barney.gale at gmail.com>
date: 2023-07-01T12:29:02Z
summary:
GH-89812: Miscellaneous pathlib test improvements (GH-106063)
- Split out dedicated test for unbuffered `open()`
- Split out dedicated test for `is_mount()` at the filesystem root
- Avoid `os.stat()` when checking that empty paths point to '.'
- Remove unnecessary `rmtree()` call
- Remove unused `assertSame()` method
files:
M Lib/test/test_pathlib.py
diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py
index 441a7bcd4d419..5be5a77721baa 100644
--- a/Lib/test/test_pathlib.py
+++ b/Lib/test/test_pathlib.py
@@ -1628,11 +1628,6 @@ def cleanup():
# Broken symlink (pointing to itself).
os.symlink('brokenLinkLoop', join('brokenLinkLoop'))
- def assertSame(self, path_a, path_b):
- self.assertTrue(os.path.samefile(str(path_a), str(path_b)),
- "%r and %r don't point to the same file" %
- (path_a, path_b))
-
def assertFileNotFound(self, func, *args, **kwargs):
with self.assertRaises(FileNotFoundError) as cm:
func(*args, **kwargs)
@@ -1664,7 +1659,7 @@ def test_samefile(self):
def test_empty_path(self):
# The empty path points to '.'
p = self.cls('')
- self.assertEqual(p.stat(), os.stat('.'))
+ self.assertEqual(str(p), '.')
def test_exists(self):
P = self.cls
@@ -1693,9 +1688,6 @@ def test_open_common(self):
with (p / 'fileA').open('rb') as f:
self.assertIsInstance(f, io.BufferedIOBase)
self.assertEqual(f.read().strip(), b"this is file A")
- with (p / 'fileA').open('rb', buffering=0) as f:
- self.assertIsInstance(f, io.RawIOBase)
- self.assertEqual(f.read().strip(), b"this is file A")
def test_read_write_bytes(self):
p = self.cls(BASE)
@@ -2017,7 +2009,6 @@ def test_glob_permissions(self):
P = self.cls
base = P(BASE) / 'permissions'
base.mkdir()
- self.addCleanup(os_helper.rmtree, base)
for i in range(100):
link = base / f"link{i}"
@@ -2045,8 +2036,8 @@ def test_glob_above_recursion_limit(self):
recursion_limit = 50
# directory_depth > recursion_limit
directory_depth = recursion_limit + 10
- base = pathlib.Path(os_helper.TESTFN, 'deep')
- path = pathlib.Path(base, *(['d'] * directory_depth))
+ base = self.cls(BASE, 'deep')
+ path = self.cls(base, *(['d'] * directory_depth))
path.mkdir(parents=True)
with set_recursion_limit(recursion_limit):
@@ -2242,18 +2233,12 @@ def test_is_file_no_follow_symlinks(self):
def test_is_mount(self):
P = self.cls(BASE)
- if os.name == 'nt':
- R = self.cls('c:\\')
- else:
- R = self.cls('/')
self.assertFalse((P / 'fileA').is_mount())
self.assertFalse((P / 'dirA').is_mount())
self.assertFalse((P / 'non-existing').is_mount())
self.assertFalse((P / 'fileA' / 'bah').is_mount())
- self.assertTrue(R.is_mount())
if self.can_symlink:
self.assertFalse((P / 'linkA').is_mount())
- self.assertIs((R / '\udfff').is_mount(), False)
def test_is_symlink(self):
P = self.cls(BASE)
@@ -2496,6 +2481,12 @@ def with_segments(self, *pathsegments):
for dirpath, dirnames, filenames in p.walk():
self.assertEqual(42, dirpath.session_id)
+ def test_open_unbuffered(self):
+ p = self.cls(BASE)
+ with (p / 'fileA').open('rb', buffering=0) as f:
+ self.assertIsInstance(f, io.RawIOBase)
+ self.assertEqual(f.read().strip(), b"this is file A")
+
def test_resolve_nonexist_relative_issue38671(self):
p = self.cls('non', 'exist')
@@ -2896,6 +2887,14 @@ def test_is_char_device_true(self):
self.assertIs(self.cls('/dev/null\udfff').is_char_device(), False)
self.assertIs(self.cls('/dev/null\x00').is_char_device(), False)
+ def test_is_mount_root(self):
+ if os.name == 'nt':
+ R = self.cls('c:\\')
+ else:
+ R = self.cls('/')
+ self.assertTrue(R.is_mount())
+ self.assertFalse((R / '\udfff').is_mount())
+
def test_passing_kwargs_deprecated(self):
with self.assertWarns(DeprecationWarning):
self.cls(foo="bar")
More information about the Python-checkins
mailing list