summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_pathlib/test_pathlib.py
diff options
context:
space:
mode:
authorBarney Gale <barney.gale@gmail.com>2024-01-26 18:14:24 (GMT)
committerGitHub <noreply@github.com>2024-01-26 18:14:24 (GMT)
commit7e31d6dea276ac91402aefb023c58d239dfd9246 (patch)
tree3a32adf17e7fa06baa399363f57a079d4f631f24 /Lib/test/test_pathlib/test_pathlib.py
parent6c2b419fb91c8d7daa769d39f73768114b5eb45a (diff)
downloadcpython-7e31d6dea276ac91402aefb023c58d239dfd9246.zip
cpython-7e31d6dea276ac91402aefb023c58d239dfd9246.tar.gz
cpython-7e31d6dea276ac91402aefb023c58d239dfd9246.tar.bz2
gh-88569: add `ntpath.isreserved()` (#95486)
Add `ntpath.isreserved()`, which identifies reserved pathnames such as "NUL", "AUX" and "CON". Deprecate `pathlib.PurePath.is_reserved()`. --------- Co-authored-by: Eryk Sun <eryksun@gmail.com> Co-authored-by: Brett Cannon <brett@python.org> Co-authored-by: Steve Dower <steve.dower@microsoft.com>
Diffstat (limited to 'Lib/test/test_pathlib/test_pathlib.py')
-rw-r--r--Lib/test/test_pathlib/test_pathlib.py48
1 files changed, 6 insertions, 42 deletions
diff --git a/Lib/test/test_pathlib/test_pathlib.py b/Lib/test/test_pathlib/test_pathlib.py
index bdbe923..2da3afdd 100644
--- a/Lib/test/test_pathlib/test_pathlib.py
+++ b/Lib/test/test_pathlib/test_pathlib.py
@@ -349,6 +349,12 @@ class PurePathTest(test_pathlib_abc.DummyPurePathTest):
with self.assertWarns(DeprecationWarning):
p.is_relative_to('a', 'b')
+ def test_is_reserved_deprecated(self):
+ P = self.cls
+ p = P('a/b')
+ with self.assertWarns(DeprecationWarning):
+ p.is_reserved()
+
def test_match_empty(self):
P = self.cls
self.assertRaises(ValueError, P('a').match, '')
@@ -414,13 +420,6 @@ class PurePosixPathTest(PurePathTest):
self.assertTrue(P('//a').is_absolute())
self.assertTrue(P('//a/b').is_absolute())
- def test_is_reserved(self):
- P = self.cls
- self.assertIs(False, P('').is_reserved())
- self.assertIs(False, P('/').is_reserved())
- self.assertIs(False, P('/foo/bar').is_reserved())
- self.assertIs(False, P('/dev/con/PRN/NUL').is_reserved())
-
def test_join(self):
P = self.cls
p = P('//a')
@@ -1082,41 +1081,6 @@ class PureWindowsPathTest(PurePathTest):
self.assertEqual(p / P('./dd:s'), P('C:/a/b/dd:s'))
self.assertEqual(p / P('E:d:s'), P('E:d:s'))
- def test_is_reserved(self):
- P = self.cls
- self.assertIs(False, P('').is_reserved())
- self.assertIs(False, P('/').is_reserved())
- self.assertIs(False, P('/foo/bar').is_reserved())
- # UNC paths are never reserved.
- self.assertIs(False, P('//my/share/nul/con/aux').is_reserved())
- # Case-insensitive DOS-device names are reserved.
- self.assertIs(True, P('nul').is_reserved())
- self.assertIs(True, P('aux').is_reserved())
- self.assertIs(True, P('prn').is_reserved())
- self.assertIs(True, P('con').is_reserved())
- self.assertIs(True, P('conin$').is_reserved())
- self.assertIs(True, P('conout$').is_reserved())
- # COM/LPT + 1-9 or + superscript 1-3 are reserved.
- self.assertIs(True, P('COM1').is_reserved())
- self.assertIs(True, P('LPT9').is_reserved())
- self.assertIs(True, P('com\xb9').is_reserved())
- self.assertIs(True, P('com\xb2').is_reserved())
- self.assertIs(True, P('lpt\xb3').is_reserved())
- # DOS-device name mataching ignores characters after a dot or
- # a colon and also ignores trailing spaces.
- self.assertIs(True, P('NUL.txt').is_reserved())
- self.assertIs(True, P('PRN ').is_reserved())
- self.assertIs(True, P('AUX .txt').is_reserved())
- self.assertIs(True, P('COM1:bar').is_reserved())
- self.assertIs(True, P('LPT9 :bar').is_reserved())
- # DOS-device names are only matched at the beginning
- # of a path component.
- self.assertIs(False, P('bar.com9').is_reserved())
- self.assertIs(False, P('bar.lpt9').is_reserved())
- # Only the last path component matters.
- self.assertIs(True, P('c:/baz/con/NUL').is_reserved())
- self.assertIs(False, P('c:/NUL/con/baz').is_reserved())
-
class PurePathSubclassTest(PurePathTest):
class cls(pathlib.PurePath):