2023-02-08 10:34:24 -04:00
|
|
|
import inspect
|
1999-02-03 13:21:21 -04:00
|
|
|
import ntpath
|
2000-08-14 03:21:26 -03:00
|
|
|
import os
|
2023-04-07 08:56:00 -03:00
|
|
|
import string
|
2023-10-05 11:49:07 -03:00
|
|
|
import subprocess
|
2010-09-06 16:46:17 -03:00
|
|
|
import sys
|
2011-11-15 17:27:41 -04:00
|
|
|
import unittest
|
|
|
|
import warnings
|
2023-02-08 10:34:24 -04:00
|
|
|
from test.support import cpython_only, os_helper
|
2022-03-17 08:09:57 -03:00
|
|
|
from test.support import TestFailed, is_emscripten
|
2020-08-03 13:49:18 -03:00
|
|
|
from test.support.os_helper import FakePath
|
2020-08-07 12:18:38 -03:00
|
|
|
from test import test_genericpath
|
2010-09-06 14:07:27 -03:00
|
|
|
from tempfile import TemporaryFile
|
1999-02-03 13:21:21 -04:00
|
|
|
|
2019-08-21 17:43:06 -03:00
|
|
|
|
2018-02-22 14:39:10 -04:00
|
|
|
try:
|
|
|
|
import nt
|
|
|
|
except ImportError:
|
|
|
|
# Most tests can complete without the nt module,
|
|
|
|
# but for those that require it we import here.
|
|
|
|
nt = None
|
1999-02-03 13:21:21 -04:00
|
|
|
|
2019-08-21 17:43:06 -03:00
|
|
|
try:
|
|
|
|
ntpath._getfinalpathname
|
|
|
|
except AttributeError:
|
|
|
|
HAVE_GETFINALPATHNAME = False
|
|
|
|
else:
|
|
|
|
HAVE_GETFINALPATHNAME = True
|
|
|
|
|
2019-11-15 20:04:00 -04:00
|
|
|
try:
|
|
|
|
import ctypes
|
|
|
|
except ImportError:
|
|
|
|
HAVE_GETSHORTPATHNAME = False
|
|
|
|
else:
|
|
|
|
HAVE_GETSHORTPATHNAME = True
|
|
|
|
def _getshortpathname(path):
|
|
|
|
GSPN = ctypes.WinDLL("kernel32", use_last_error=True).GetShortPathNameW
|
|
|
|
GSPN.argtypes = [ctypes.c_wchar_p, ctypes.c_wchar_p, ctypes.c_uint32]
|
|
|
|
GSPN.restype = ctypes.c_uint32
|
|
|
|
result_len = GSPN(path, None, 0)
|
|
|
|
if not result_len:
|
|
|
|
raise OSError("failed to get short path name 0x{:08X}"
|
|
|
|
.format(ctypes.get_last_error()))
|
|
|
|
result = ctypes.create_unicode_buffer(result_len)
|
|
|
|
result_len = GSPN(path, result, result_len)
|
|
|
|
return result[:result_len]
|
2019-08-21 17:43:06 -03:00
|
|
|
|
2019-09-10 10:52:48 -03:00
|
|
|
def _norm(path):
|
|
|
|
if isinstance(path, (bytes, str, os.PathLike)):
|
|
|
|
return ntpath.normcase(os.fsdecode(path))
|
|
|
|
elif hasattr(path, "__iter__"):
|
|
|
|
return tuple(ntpath.normcase(os.fsdecode(p)) for p in path)
|
|
|
|
return path
|
|
|
|
|
|
|
|
|
1999-02-03 13:21:21 -04:00
|
|
|
def tester(fn, wantResult):
|
2001-02-09 07:51:27 -04:00
|
|
|
fn = fn.replace("\\", "\\\\")
|
2000-10-23 14:22:08 -03:00
|
|
|
gotResult = eval(fn)
|
2019-09-10 10:52:48 -03:00
|
|
|
if wantResult != gotResult and _norm(wantResult) != _norm(gotResult):
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
raise TestFailed("%s should return: %s but returned: %s" \
|
|
|
|
%(str(fn), str(wantResult), str(gotResult)))
|
|
|
|
|
2008-10-03 15:38:26 -03:00
|
|
|
# then with bytes
|
|
|
|
fn = fn.replace("('", "(b'")
|
|
|
|
fn = fn.replace('("', '(b"')
|
|
|
|
fn = fn.replace("['", "[b'")
|
|
|
|
fn = fn.replace('["', '[b"')
|
|
|
|
fn = fn.replace(", '", ", b'")
|
|
|
|
fn = fn.replace(', "', ', b"')
|
2014-02-13 04:13:53 -04:00
|
|
|
fn = os.fsencode(fn).decode('latin1')
|
|
|
|
fn = fn.encode('ascii', 'backslashreplace').decode('ascii')
|
2011-11-15 17:27:41 -04:00
|
|
|
with warnings.catch_warnings():
|
|
|
|
warnings.simplefilter("ignore", DeprecationWarning)
|
|
|
|
gotResult = eval(fn)
|
2019-09-10 10:52:48 -03:00
|
|
|
if _norm(wantResult) != _norm(gotResult):
|
2008-10-03 15:38:26 -03:00
|
|
|
raise TestFailed("%s should return: %s but returned: %s" \
|
|
|
|
%(str(fn), str(wantResult), repr(gotResult)))
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
|
2009-05-06 05:04:54 -03:00
|
|
|
|
2019-09-10 10:52:48 -03:00
|
|
|
class NtpathTestCase(unittest.TestCase):
|
|
|
|
def assertPathEqual(self, path1, path2):
|
|
|
|
if path1 == path2 or _norm(path1) == _norm(path2):
|
|
|
|
return
|
|
|
|
self.assertEqual(path1, path2)
|
|
|
|
|
|
|
|
def assertPathIn(self, path, pathset):
|
|
|
|
self.assertIn(_norm(path), _norm(pathset))
|
|
|
|
|
|
|
|
|
|
|
|
class TestNtpath(NtpathTestCase):
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
def test_splitext(self):
|
|
|
|
tester('ntpath.splitext("foo.ext")', ('foo', '.ext'))
|
|
|
|
tester('ntpath.splitext("/foo/foo.ext")', ('/foo/foo', '.ext'))
|
|
|
|
tester('ntpath.splitext(".ext")', ('.ext', ''))
|
|
|
|
tester('ntpath.splitext("\\foo.ext\\foo")', ('\\foo.ext\\foo', ''))
|
|
|
|
tester('ntpath.splitext("foo.ext\\")', ('foo.ext\\', ''))
|
|
|
|
tester('ntpath.splitext("")', ('', ''))
|
|
|
|
tester('ntpath.splitext("foo.bar.ext")', ('foo.bar', '.ext'))
|
|
|
|
tester('ntpath.splitext("xx/foo.bar.ext")', ('xx/foo.bar', '.ext'))
|
|
|
|
tester('ntpath.splitext("xx\\foo.bar.ext")', ('xx\\foo.bar', '.ext'))
|
|
|
|
tester('ntpath.splitext("c:a/b\\c.d")', ('c:a/b\\c', '.d'))
|
|
|
|
|
|
|
|
def test_splitdrive(self):
|
2023-01-26 20:28:27 -04:00
|
|
|
tester("ntpath.splitdrive('')", ('', ''))
|
|
|
|
tester("ntpath.splitdrive('foo')", ('', 'foo'))
|
|
|
|
tester("ntpath.splitdrive('foo\\bar')", ('', 'foo\\bar'))
|
|
|
|
tester("ntpath.splitdrive('foo/bar')", ('', 'foo/bar'))
|
|
|
|
tester("ntpath.splitdrive('\\')", ('', '\\'))
|
|
|
|
tester("ntpath.splitdrive('/')", ('', '/'))
|
|
|
|
tester("ntpath.splitdrive('\\foo\\bar')", ('', '\\foo\\bar'))
|
|
|
|
tester("ntpath.splitdrive('/foo/bar')", ('', '/foo/bar'))
|
|
|
|
tester('ntpath.splitdrive("c:foo\\bar")', ('c:', 'foo\\bar'))
|
|
|
|
tester('ntpath.splitdrive("c:foo/bar")', ('c:', 'foo/bar'))
|
|
|
|
tester('ntpath.splitdrive("c:\\foo\\bar")', ('c:', '\\foo\\bar'))
|
|
|
|
tester('ntpath.splitdrive("c:/foo/bar")', ('c:', '/foo/bar'))
|
|
|
|
tester("ntpath.splitdrive('\\\\')", ('\\\\', ''))
|
|
|
|
tester("ntpath.splitdrive('//')", ('//', ''))
|
2009-05-06 05:04:54 -03:00
|
|
|
tester('ntpath.splitdrive("\\\\conky\\mountpoint\\foo\\bar")',
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
('\\\\conky\\mountpoint', '\\foo\\bar'))
|
2009-05-06 05:04:54 -03:00
|
|
|
tester('ntpath.splitdrive("//conky/mountpoint/foo/bar")',
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
('//conky/mountpoint', '/foo/bar'))
|
2022-06-10 12:59:55 -03:00
|
|
|
tester('ntpath.splitdrive("\\\\?\\UNC\\server\\share\\dir")',
|
|
|
|
("\\\\?\\UNC\\server\\share", "\\dir"))
|
2023-01-26 20:28:27 -04:00
|
|
|
tester('ntpath.splitdrive("//?/UNC/server/share/dir")',
|
|
|
|
("//?/UNC/server/share", "/dir"))
|
|
|
|
|
|
|
|
def test_splitroot(self):
|
|
|
|
tester("ntpath.splitroot('')", ('', '', ''))
|
|
|
|
tester("ntpath.splitroot('foo')", ('', '', 'foo'))
|
|
|
|
tester("ntpath.splitroot('foo\\bar')", ('', '', 'foo\\bar'))
|
|
|
|
tester("ntpath.splitroot('foo/bar')", ('', '', 'foo/bar'))
|
|
|
|
tester("ntpath.splitroot('\\')", ('', '\\', ''))
|
|
|
|
tester("ntpath.splitroot('/')", ('', '/', ''))
|
|
|
|
tester("ntpath.splitroot('\\foo\\bar')", ('', '\\', 'foo\\bar'))
|
|
|
|
tester("ntpath.splitroot('/foo/bar')", ('', '/', 'foo/bar'))
|
|
|
|
tester('ntpath.splitroot("c:foo\\bar")', ('c:', '', 'foo\\bar'))
|
|
|
|
tester('ntpath.splitroot("c:foo/bar")', ('c:', '', 'foo/bar'))
|
|
|
|
tester('ntpath.splitroot("c:\\foo\\bar")', ('c:', '\\', 'foo\\bar'))
|
|
|
|
tester('ntpath.splitroot("c:/foo/bar")', ('c:', '/', 'foo/bar'))
|
|
|
|
|
|
|
|
# Redundant slashes are not included in the root.
|
|
|
|
tester("ntpath.splitroot('c:\\\\a')", ('c:', '\\', '\\a'))
|
|
|
|
tester("ntpath.splitroot('c:\\\\\\a/b')", ('c:', '\\', '\\\\a/b'))
|
|
|
|
|
|
|
|
# Mixed path separators.
|
|
|
|
tester("ntpath.splitroot('c:/\\')", ('c:', '/', '\\'))
|
|
|
|
tester("ntpath.splitroot('c:\\/')", ('c:', '\\', '/'))
|
|
|
|
tester("ntpath.splitroot('/\\a/b\\/\\')", ('/\\a/b', '\\', '/\\'))
|
|
|
|
tester("ntpath.splitroot('\\/a\\b/\\/')", ('\\/a\\b', '/', '\\/'))
|
|
|
|
|
|
|
|
# UNC paths.
|
|
|
|
tester("ntpath.splitroot('\\\\')", ('\\\\', '', ''))
|
|
|
|
tester("ntpath.splitroot('//')", ('//', '', ''))
|
|
|
|
tester('ntpath.splitroot("\\\\conky\\mountpoint\\foo\\bar")',
|
|
|
|
('\\\\conky\\mountpoint', '\\', 'foo\\bar'))
|
|
|
|
tester('ntpath.splitroot("//conky/mountpoint/foo/bar")',
|
|
|
|
('//conky/mountpoint', '/', 'foo/bar'))
|
|
|
|
tester('ntpath.splitroot("\\\\\\conky\\mountpoint\\foo\\bar")',
|
|
|
|
('\\\\\\conky', '\\', 'mountpoint\\foo\\bar'))
|
|
|
|
tester('ntpath.splitroot("///conky/mountpoint/foo/bar")',
|
|
|
|
('///conky', '/', 'mountpoint/foo/bar'))
|
|
|
|
tester('ntpath.splitroot("\\\\conky\\\\mountpoint\\foo\\bar")',
|
|
|
|
('\\\\conky\\', '\\', 'mountpoint\\foo\\bar'))
|
|
|
|
tester('ntpath.splitroot("//conky//mountpoint/foo/bar")',
|
|
|
|
('//conky/', '/', 'mountpoint/foo/bar'))
|
|
|
|
|
|
|
|
# Issue #19911: UNC part containing U+0130
|
|
|
|
self.assertEqual(ntpath.splitroot('//conky/MOUNTPOİNT/foo/bar'),
|
|
|
|
('//conky/MOUNTPOİNT', '/', 'foo/bar'))
|
|
|
|
|
|
|
|
# gh-81790: support device namespace, including UNC drives.
|
|
|
|
tester('ntpath.splitroot("//?/c:")', ("//?/c:", "", ""))
|
2023-04-14 17:55:41 -03:00
|
|
|
tester('ntpath.splitroot("//./c:")', ("//./c:", "", ""))
|
2023-01-26 20:28:27 -04:00
|
|
|
tester('ntpath.splitroot("//?/c:/")', ("//?/c:", "/", ""))
|
|
|
|
tester('ntpath.splitroot("//?/c:/dir")', ("//?/c:", "/", "dir"))
|
|
|
|
tester('ntpath.splitroot("//?/UNC")', ("//?/UNC", "", ""))
|
|
|
|
tester('ntpath.splitroot("//?/UNC/")', ("//?/UNC/", "", ""))
|
|
|
|
tester('ntpath.splitroot("//?/UNC/server/")', ("//?/UNC/server/", "", ""))
|
|
|
|
tester('ntpath.splitroot("//?/UNC/server/share")', ("//?/UNC/server/share", "", ""))
|
|
|
|
tester('ntpath.splitroot("//?/UNC/server/share/dir")', ("//?/UNC/server/share", "/", "dir"))
|
|
|
|
tester('ntpath.splitroot("//?/VOLUME{00000000-0000-0000-0000-000000000000}/spam")',
|
|
|
|
('//?/VOLUME{00000000-0000-0000-0000-000000000000}', '/', 'spam'))
|
|
|
|
tester('ntpath.splitroot("//?/BootPartition/")', ("//?/BootPartition", "/", ""))
|
2023-04-14 17:55:41 -03:00
|
|
|
tester('ntpath.splitroot("//./BootPartition/")', ("//./BootPartition", "/", ""))
|
|
|
|
tester('ntpath.splitroot("//./PhysicalDrive0")', ("//./PhysicalDrive0", "", ""))
|
|
|
|
tester('ntpath.splitroot("//./nul")', ("//./nul", "", ""))
|
2023-01-26 20:28:27 -04:00
|
|
|
|
|
|
|
tester('ntpath.splitroot("\\\\?\\c:")', ("\\\\?\\c:", "", ""))
|
2023-04-14 17:55:41 -03:00
|
|
|
tester('ntpath.splitroot("\\\\.\\c:")', ("\\\\.\\c:", "", ""))
|
2023-01-26 20:28:27 -04:00
|
|
|
tester('ntpath.splitroot("\\\\?\\c:\\")', ("\\\\?\\c:", "\\", ""))
|
|
|
|
tester('ntpath.splitroot("\\\\?\\c:\\dir")', ("\\\\?\\c:", "\\", "dir"))
|
|
|
|
tester('ntpath.splitroot("\\\\?\\UNC")', ("\\\\?\\UNC", "", ""))
|
|
|
|
tester('ntpath.splitroot("\\\\?\\UNC\\")', ("\\\\?\\UNC\\", "", ""))
|
|
|
|
tester('ntpath.splitroot("\\\\?\\UNC\\server\\")', ("\\\\?\\UNC\\server\\", "", ""))
|
|
|
|
tester('ntpath.splitroot("\\\\?\\UNC\\server\\share")',
|
|
|
|
("\\\\?\\UNC\\server\\share", "", ""))
|
|
|
|
tester('ntpath.splitroot("\\\\?\\UNC\\server\\share\\dir")',
|
|
|
|
("\\\\?\\UNC\\server\\share", "\\", "dir"))
|
|
|
|
tester('ntpath.splitroot("\\\\?\\VOLUME{00000000-0000-0000-0000-000000000000}\\spam")',
|
|
|
|
('\\\\?\\VOLUME{00000000-0000-0000-0000-000000000000}', '\\', 'spam'))
|
|
|
|
tester('ntpath.splitroot("\\\\?\\BootPartition\\")', ("\\\\?\\BootPartition", "\\", ""))
|
2023-04-14 17:55:41 -03:00
|
|
|
tester('ntpath.splitroot("\\\\.\\BootPartition\\")', ("\\\\.\\BootPartition", "\\", ""))
|
|
|
|
tester('ntpath.splitroot("\\\\.\\PhysicalDrive0")', ("\\\\.\\PhysicalDrive0", "", ""))
|
|
|
|
tester('ntpath.splitroot("\\\\.\\nul")', ("\\\\.\\nul", "", ""))
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
|
2023-01-12 15:24:57 -04:00
|
|
|
# gh-96290: support partial/invalid UNC drives
|
2023-01-26 20:28:27 -04:00
|
|
|
tester('ntpath.splitroot("//")', ("//", "", "")) # empty server & missing share
|
|
|
|
tester('ntpath.splitroot("///")', ("///", "", "")) # empty server & empty share
|
|
|
|
tester('ntpath.splitroot("///y")', ("///y", "", "")) # empty server & non-empty share
|
|
|
|
tester('ntpath.splitroot("//x")', ("//x", "", "")) # non-empty server & missing share
|
|
|
|
tester('ntpath.splitroot("//x/")', ("//x/", "", "")) # non-empty server & empty share
|
2023-01-12 15:24:57 -04:00
|
|
|
|
2023-02-17 10:05:38 -04:00
|
|
|
# gh-101363: match GetFullPathNameW() drive letter parsing behaviour
|
|
|
|
tester('ntpath.splitroot(" :/foo")', (" :", "/", "foo"))
|
|
|
|
tester('ntpath.splitroot("/:/foo")', ("", "/", ":/foo"))
|
|
|
|
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
def test_split(self):
|
|
|
|
tester('ntpath.split("c:\\foo\\bar")', ('c:\\foo', 'bar'))
|
|
|
|
tester('ntpath.split("\\\\conky\\mountpoint\\foo\\bar")',
|
|
|
|
('\\\\conky\\mountpoint\\foo', 'bar'))
|
|
|
|
|
|
|
|
tester('ntpath.split("c:\\")', ('c:\\', ''))
|
|
|
|
tester('ntpath.split("\\\\conky\\mountpoint\\")',
|
2009-05-06 05:04:54 -03:00
|
|
|
('\\\\conky\\mountpoint\\', ''))
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
|
|
|
|
tester('ntpath.split("c:/")', ('c:/', ''))
|
2009-05-06 05:04:54 -03:00
|
|
|
tester('ntpath.split("//conky/mountpoint/")', ('//conky/mountpoint/', ''))
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
|
|
|
|
def test_isabs(self):
|
2024-01-13 03:36:05 -04:00
|
|
|
tester('ntpath.isabs("foo\\bar")', 0)
|
|
|
|
tester('ntpath.isabs("foo/bar")', 0)
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
tester('ntpath.isabs("c:\\")', 1)
|
2024-01-13 03:36:05 -04:00
|
|
|
tester('ntpath.isabs("c:\\foo\\bar")', 1)
|
|
|
|
tester('ntpath.isabs("c:/foo/bar")', 1)
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
tester('ntpath.isabs("\\\\conky\\mountpoint\\")', 1)
|
2024-01-13 03:36:05 -04:00
|
|
|
|
|
|
|
# gh-44626: paths with only a drive or root are not absolute.
|
|
|
|
tester('ntpath.isabs("\\foo\\bar")', 0)
|
|
|
|
tester('ntpath.isabs("/foo/bar")', 0)
|
|
|
|
tester('ntpath.isabs("c:foo\\bar")', 0)
|
|
|
|
tester('ntpath.isabs("c:foo/bar")', 0)
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
|
2023-01-12 15:24:57 -04:00
|
|
|
# gh-96290: normal UNC paths and device paths without trailing backslashes
|
|
|
|
tester('ntpath.isabs("\\\\conky\\mountpoint")', 1)
|
|
|
|
tester('ntpath.isabs("\\\\.\\C:")', 1)
|
|
|
|
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
def test_commonprefix(self):
|
|
|
|
tester('ntpath.commonprefix(["/home/swenson/spam", "/home/swen/spam"])',
|
|
|
|
"/home/swen")
|
|
|
|
tester('ntpath.commonprefix(["\\home\\swen\\spam", "\\home\\swen\\eggs"])',
|
|
|
|
"\\home\\swen\\")
|
|
|
|
tester('ntpath.commonprefix(["/home/swen/spam", "/home/swen/spam"])',
|
|
|
|
"/home/swen/spam")
|
|
|
|
|
|
|
|
def test_join(self):
|
|
|
|
tester('ntpath.join("")', '')
|
|
|
|
tester('ntpath.join("", "", "")', '')
|
|
|
|
tester('ntpath.join("a")', 'a')
|
|
|
|
tester('ntpath.join("/a")', '/a')
|
|
|
|
tester('ntpath.join("\\a")', '\\a')
|
|
|
|
tester('ntpath.join("a:")', 'a:')
|
|
|
|
tester('ntpath.join("a:", "\\b")', 'a:\\b')
|
|
|
|
tester('ntpath.join("a", "\\b")', '\\b')
|
|
|
|
tester('ntpath.join("a", "b", "c")', 'a\\b\\c')
|
|
|
|
tester('ntpath.join("a\\", "b", "c")', 'a\\b\\c')
|
|
|
|
tester('ntpath.join("a", "b\\", "c")', 'a\\b\\c')
|
2023-12-07 17:45:40 -04:00
|
|
|
tester('ntpath.join("a", "b", "c\\")', 'a\\b\\c\\')
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
tester('ntpath.join("a", "b", "\\c")', '\\c')
|
|
|
|
tester('ntpath.join("d:\\", "\\pleep")', 'd:\\pleep')
|
|
|
|
tester('ntpath.join("d:\\", "a", "b")', 'd:\\a\\b')
|
2014-01-27 17:15:14 -04:00
|
|
|
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
tester("ntpath.join('', 'a')", 'a')
|
|
|
|
tester("ntpath.join('', '', '', '', 'a')", 'a')
|
|
|
|
tester("ntpath.join('a', '')", 'a\\')
|
|
|
|
tester("ntpath.join('a', '', '', '', '')", 'a\\')
|
|
|
|
tester("ntpath.join('a\\', '')", 'a\\')
|
|
|
|
tester("ntpath.join('a\\', '', '', '', '')", 'a\\')
|
2014-01-27 17:15:14 -04:00
|
|
|
tester("ntpath.join('a/', '')", 'a/')
|
|
|
|
|
|
|
|
tester("ntpath.join('a/b', 'x/y')", 'a/b\\x/y')
|
|
|
|
tester("ntpath.join('/a/b', 'x/y')", '/a/b\\x/y')
|
|
|
|
tester("ntpath.join('/a/b/', 'x/y')", '/a/b/x/y')
|
|
|
|
tester("ntpath.join('c:', 'x/y')", 'c:x/y')
|
|
|
|
tester("ntpath.join('c:a/b', 'x/y')", 'c:a/b\\x/y')
|
|
|
|
tester("ntpath.join('c:a/b/', 'x/y')", 'c:a/b/x/y')
|
|
|
|
tester("ntpath.join('c:/', 'x/y')", 'c:/x/y')
|
|
|
|
tester("ntpath.join('c:/a/b', 'x/y')", 'c:/a/b\\x/y')
|
|
|
|
tester("ntpath.join('c:/a/b/', 'x/y')", 'c:/a/b/x/y')
|
|
|
|
tester("ntpath.join('//computer/share', 'x/y')", '//computer/share\\x/y')
|
|
|
|
tester("ntpath.join('//computer/share/', 'x/y')", '//computer/share/x/y')
|
|
|
|
tester("ntpath.join('//computer/share/a/b', 'x/y')", '//computer/share/a/b\\x/y')
|
|
|
|
|
|
|
|
tester("ntpath.join('a/b', '/x/y')", '/x/y')
|
|
|
|
tester("ntpath.join('/a/b', '/x/y')", '/x/y')
|
|
|
|
tester("ntpath.join('c:', '/x/y')", 'c:/x/y')
|
|
|
|
tester("ntpath.join('c:a/b', '/x/y')", 'c:/x/y')
|
|
|
|
tester("ntpath.join('c:/', '/x/y')", 'c:/x/y')
|
|
|
|
tester("ntpath.join('c:/a/b', '/x/y')", 'c:/x/y')
|
|
|
|
tester("ntpath.join('//computer/share', '/x/y')", '//computer/share/x/y')
|
|
|
|
tester("ntpath.join('//computer/share/', '/x/y')", '//computer/share/x/y')
|
|
|
|
tester("ntpath.join('//computer/share/a', '/x/y')", '//computer/share/x/y')
|
|
|
|
|
|
|
|
tester("ntpath.join('c:', 'C:x/y')", 'C:x/y')
|
|
|
|
tester("ntpath.join('c:a/b', 'C:x/y')", 'C:a/b\\x/y')
|
|
|
|
tester("ntpath.join('c:/', 'C:x/y')", 'C:/x/y')
|
|
|
|
tester("ntpath.join('c:/a/b', 'C:x/y')", 'C:/a/b\\x/y')
|
|
|
|
|
|
|
|
for x in ('', 'a/b', '/a/b', 'c:', 'c:a/b', 'c:/', 'c:/a/b',
|
|
|
|
'//computer/share', '//computer/share/', '//computer/share/a/b'):
|
|
|
|
for y in ('d:', 'd:x/y', 'd:/', 'd:/x/y',
|
|
|
|
'//machine/common', '//machine/common/', '//machine/common/x/y'):
|
|
|
|
tester("ntpath.join(%r, %r)" % (x, y), y)
|
2009-05-06 05:04:54 -03:00
|
|
|
|
|
|
|
tester("ntpath.join('\\\\computer\\share\\', 'a', 'b')", '\\\\computer\\share\\a\\b')
|
|
|
|
tester("ntpath.join('\\\\computer\\share', 'a', 'b')", '\\\\computer\\share\\a\\b')
|
|
|
|
tester("ntpath.join('\\\\computer\\share', 'a\\b')", '\\\\computer\\share\\a\\b')
|
|
|
|
tester("ntpath.join('//computer/share/', 'a', 'b')", '//computer/share/a\\b')
|
|
|
|
tester("ntpath.join('//computer/share', 'a', 'b')", '//computer/share\\a\\b')
|
|
|
|
tester("ntpath.join('//computer/share', 'a/b')", '//computer/share\\a/b')
|
|
|
|
|
2023-04-11 13:26:45 -03:00
|
|
|
tester("ntpath.join('\\\\', 'computer')", '\\\\computer')
|
|
|
|
tester("ntpath.join('\\\\computer\\', 'share')", '\\\\computer\\share')
|
|
|
|
tester("ntpath.join('\\\\computer\\share\\', 'a')", '\\\\computer\\share\\a')
|
|
|
|
tester("ntpath.join('\\\\computer\\share\\a\\', 'b')", '\\\\computer\\share\\a\\b')
|
2023-12-07 17:45:40 -04:00
|
|
|
# Second part is anchored, so that the first part is ignored.
|
|
|
|
tester("ntpath.join('a', 'Z:b', 'c')", 'Z:b\\c')
|
|
|
|
tester("ntpath.join('a', 'Z:\\b', 'c')", 'Z:\\b\\c')
|
|
|
|
tester("ntpath.join('a', '\\\\b\\c', 'd')", '\\\\b\\c\\d')
|
|
|
|
# Second part has a root but not drive.
|
|
|
|
tester("ntpath.join('a', '\\b', 'c')", '\\b\\c')
|
|
|
|
tester("ntpath.join('Z:/a', '/b', 'c')", 'Z:\\b\\c')
|
|
|
|
tester("ntpath.join('//?/Z:/a', '/b', 'c')", '\\\\?\\Z:\\b\\c')
|
|
|
|
tester("ntpath.join('D:a', './c:b')", 'D:a\\.\\c:b')
|
|
|
|
tester("ntpath.join('D:/a', './c:b')", 'D:\\a\\.\\c:b')
|
2023-04-11 13:26:45 -03:00
|
|
|
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
def test_normpath(self):
|
|
|
|
tester("ntpath.normpath('A//////././//.//B')", r'A\B')
|
|
|
|
tester("ntpath.normpath('A/./B')", r'A\B')
|
|
|
|
tester("ntpath.normpath('A/foo/../B')", r'A\B')
|
|
|
|
tester("ntpath.normpath('C:A//B')", r'C:A\B')
|
|
|
|
tester("ntpath.normpath('D:A/./B')", r'D:A\B')
|
|
|
|
tester("ntpath.normpath('e:A/foo/../B')", r'e:A\B')
|
|
|
|
|
|
|
|
tester("ntpath.normpath('C:///A//B')", r'C:\A\B')
|
|
|
|
tester("ntpath.normpath('D:///A/./B')", r'D:\A\B')
|
|
|
|
tester("ntpath.normpath('e:///A/foo/../B')", r'e:\A\B')
|
|
|
|
|
|
|
|
tester("ntpath.normpath('..')", r'..')
|
|
|
|
tester("ntpath.normpath('.')", r'.')
|
|
|
|
tester("ntpath.normpath('')", r'.')
|
|
|
|
tester("ntpath.normpath('/')", '\\')
|
|
|
|
tester("ntpath.normpath('c:/')", 'c:\\')
|
|
|
|
tester("ntpath.normpath('/../.././..')", '\\')
|
|
|
|
tester("ntpath.normpath('c:/../../..')", 'c:\\')
|
|
|
|
tester("ntpath.normpath('../.././..')", r'..\..\..')
|
|
|
|
tester("ntpath.normpath('K:../.././..')", r'K:..\..\..')
|
|
|
|
tester("ntpath.normpath('C:////a/b')", r'C:\a\b')
|
|
|
|
tester("ntpath.normpath('//machine/share//a/b')", r'\\machine\share\a\b')
|
|
|
|
|
2010-07-31 18:40:15 -03:00
|
|
|
tester("ntpath.normpath('\\\\.\\NUL')", r'\\.\NUL')
|
|
|
|
tester("ntpath.normpath('\\\\?\\D:/XY\\Z')", r'\\?\D:/XY\Z')
|
2022-01-06 15:13:10 -04:00
|
|
|
tester("ntpath.normpath('handbook/../../Tests/image.png')", r'..\Tests\image.png')
|
|
|
|
tester("ntpath.normpath('handbook/../../../Tests/image.png')", r'..\..\Tests\image.png')
|
|
|
|
tester("ntpath.normpath('handbook///../a/.././../b/c')", r'..\b\c')
|
|
|
|
tester("ntpath.normpath('handbook/a/../..///../../b/c')", r'..\..\b\c')
|
|
|
|
|
|
|
|
tester("ntpath.normpath('//server/share/..')" , '\\\\server\\share\\')
|
|
|
|
tester("ntpath.normpath('//server/share/../')" , '\\\\server\\share\\')
|
|
|
|
tester("ntpath.normpath('//server/share/../..')", '\\\\server\\share\\')
|
|
|
|
tester("ntpath.normpath('//server/share/../../')", '\\\\server\\share\\')
|
2010-07-31 18:40:15 -03:00
|
|
|
|
2023-01-12 15:24:57 -04:00
|
|
|
# gh-96290: don't normalize partial/invalid UNC drives as rooted paths.
|
|
|
|
tester("ntpath.normpath('\\\\foo\\\\')", '\\\\foo\\\\')
|
|
|
|
tester("ntpath.normpath('\\\\foo\\')", '\\\\foo\\')
|
|
|
|
tester("ntpath.normpath('\\\\foo')", '\\\\foo')
|
|
|
|
tester("ntpath.normpath('\\\\')", '\\\\')
|
2024-04-25 06:07:38 -03:00
|
|
|
tester("ntpath.normpath('//?/UNC/server/share/..')", '\\\\?\\UNC\\server\\share\\')
|
2023-01-12 15:24:57 -04:00
|
|
|
|
2019-08-21 17:43:06 -03:00
|
|
|
def test_realpath_curdir(self):
|
|
|
|
expected = ntpath.normpath(os.getcwd())
|
|
|
|
tester("ntpath.realpath('.')", expected)
|
|
|
|
tester("ntpath.realpath('./.')", expected)
|
|
|
|
tester("ntpath.realpath('/'.join(['.'] * 100))", expected)
|
|
|
|
tester("ntpath.realpath('.\\.')", expected)
|
|
|
|
tester("ntpath.realpath('\\'.join(['.'] * 100))", expected)
|
|
|
|
|
|
|
|
def test_realpath_pardir(self):
|
|
|
|
expected = ntpath.normpath(os.getcwd())
|
|
|
|
tester("ntpath.realpath('..')", ntpath.dirname(expected))
|
|
|
|
tester("ntpath.realpath('../..')",
|
|
|
|
ntpath.dirname(ntpath.dirname(expected)))
|
|
|
|
tester("ntpath.realpath('/'.join(['..'] * 50))",
|
|
|
|
ntpath.splitdrive(expected)[0] + '\\')
|
|
|
|
tester("ntpath.realpath('..\\..')",
|
|
|
|
ntpath.dirname(ntpath.dirname(expected)))
|
|
|
|
tester("ntpath.realpath('\\'.join(['..'] * 50))",
|
|
|
|
ntpath.splitdrive(expected)[0] + '\\')
|
|
|
|
|
2020-08-03 13:49:18 -03:00
|
|
|
@os_helper.skip_unless_symlink
|
2019-08-21 17:43:06 -03:00
|
|
|
@unittest.skipUnless(HAVE_GETFINALPATHNAME, 'need _getfinalpathname')
|
|
|
|
def test_realpath_basic(self):
|
2020-08-03 13:49:18 -03:00
|
|
|
ABSTFN = ntpath.abspath(os_helper.TESTFN)
|
2019-08-21 17:43:06 -03:00
|
|
|
open(ABSTFN, "wb").close()
|
2020-08-03 13:49:18 -03:00
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN)
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN + "1")
|
2019-08-21 17:43:06 -03:00
|
|
|
|
|
|
|
os.symlink(ABSTFN, ABSTFN + "1")
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath(ABSTFN + "1"), ABSTFN)
|
|
|
|
self.assertPathEqual(ntpath.realpath(os.fsencode(ABSTFN + "1")),
|
2019-08-21 17:43:06 -03:00
|
|
|
os.fsencode(ABSTFN))
|
|
|
|
|
2023-04-07 08:56:00 -03:00
|
|
|
# gh-88013: call ntpath.realpath with binary drive name may raise a
|
|
|
|
# TypeError. The drive should not exist to reproduce the bug.
|
|
|
|
drives = {f"{c}:\\" for c in string.ascii_uppercase} - set(os.listdrives())
|
|
|
|
d = drives.pop().encode()
|
|
|
|
self.assertEqual(ntpath.realpath(d), d)
|
|
|
|
|
2023-08-21 21:16:02 -03:00
|
|
|
# gh-106242: Embedded nulls and non-strict fallback to abspath
|
|
|
|
self.assertEqual(ABSTFN + "\0spam",
|
|
|
|
ntpath.realpath(os_helper.TESTFN + "\0spam", strict=False))
|
|
|
|
|
2021-04-28 12:50:17 -03:00
|
|
|
@os_helper.skip_unless_symlink
|
|
|
|
@unittest.skipUnless(HAVE_GETFINALPATHNAME, 'need _getfinalpathname')
|
|
|
|
def test_realpath_strict(self):
|
|
|
|
# Bug #43757: raise FileNotFoundError in strict mode if we encounter
|
|
|
|
# a path that does not exist.
|
|
|
|
ABSTFN = ntpath.abspath(os_helper.TESTFN)
|
|
|
|
os.symlink(ABSTFN + "1", ABSTFN)
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN)
|
|
|
|
self.assertRaises(FileNotFoundError, ntpath.realpath, ABSTFN, strict=True)
|
|
|
|
self.assertRaises(FileNotFoundError, ntpath.realpath, ABSTFN + "2", strict=True)
|
2023-08-21 21:16:02 -03:00
|
|
|
# gh-106242: Embedded nulls should raise OSError (not ValueError)
|
|
|
|
self.assertRaises(OSError, ntpath.realpath, ABSTFN + "\0spam", strict=True)
|
2021-04-28 12:50:17 -03:00
|
|
|
|
2020-08-03 13:49:18 -03:00
|
|
|
@os_helper.skip_unless_symlink
|
2019-08-21 17:43:06 -03:00
|
|
|
@unittest.skipUnless(HAVE_GETFINALPATHNAME, 'need _getfinalpathname')
|
|
|
|
def test_realpath_relative(self):
|
2020-08-03 13:49:18 -03:00
|
|
|
ABSTFN = ntpath.abspath(os_helper.TESTFN)
|
2019-08-21 17:43:06 -03:00
|
|
|
open(ABSTFN, "wb").close()
|
2020-08-03 13:49:18 -03:00
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN)
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN + "1")
|
2019-08-21 17:43:06 -03:00
|
|
|
|
|
|
|
os.symlink(ABSTFN, ntpath.relpath(ABSTFN + "1"))
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath(ABSTFN + "1"), ABSTFN)
|
2019-08-21 17:43:06 -03:00
|
|
|
|
2020-08-03 13:49:18 -03:00
|
|
|
@os_helper.skip_unless_symlink
|
2019-08-21 17:43:06 -03:00
|
|
|
@unittest.skipUnless(HAVE_GETFINALPATHNAME, 'need _getfinalpathname')
|
|
|
|
def test_realpath_broken_symlinks(self):
|
2020-08-03 13:49:18 -03:00
|
|
|
ABSTFN = ntpath.abspath(os_helper.TESTFN)
|
2019-08-21 17:43:06 -03:00
|
|
|
os.mkdir(ABSTFN)
|
2020-08-06 08:51:29 -03:00
|
|
|
self.addCleanup(os_helper.rmtree, ABSTFN)
|
2019-08-21 17:43:06 -03:00
|
|
|
|
2020-08-07 12:18:38 -03:00
|
|
|
with os_helper.change_cwd(ABSTFN):
|
2019-08-21 17:43:06 -03:00
|
|
|
os.mkdir("subdir")
|
|
|
|
os.chdir("subdir")
|
|
|
|
os.symlink(".", "recursive")
|
|
|
|
os.symlink("..", "parent")
|
|
|
|
os.chdir("..")
|
|
|
|
os.symlink(".", "self")
|
|
|
|
os.symlink("missing", "broken")
|
|
|
|
os.symlink(r"broken\bar", "broken1")
|
|
|
|
os.symlink(r"self\self\broken", "broken2")
|
|
|
|
os.symlink(r"subdir\parent\subdir\parent\broken", "broken3")
|
|
|
|
os.symlink(ABSTFN + r"\broken", "broken4")
|
|
|
|
os.symlink(r"recursive\..\broken", "broken5")
|
|
|
|
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath("broken"),
|
|
|
|
ABSTFN + r"\missing")
|
|
|
|
self.assertPathEqual(ntpath.realpath(r"broken\foo"),
|
|
|
|
ABSTFN + r"\missing\foo")
|
2019-11-15 13:49:21 -04:00
|
|
|
# bpo-38453: We no longer recursively resolve segments of relative
|
|
|
|
# symlinks that the OS cannot resolve.
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath(r"broken1"),
|
2019-11-15 13:49:21 -04:00
|
|
|
ABSTFN + r"\broken\bar")
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath(r"broken1\baz"),
|
2019-11-15 13:49:21 -04:00
|
|
|
ABSTFN + r"\broken\bar\baz")
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath("broken2"),
|
2019-11-15 13:49:21 -04:00
|
|
|
ABSTFN + r"\self\self\missing")
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath("broken3"),
|
2019-11-15 13:49:21 -04:00
|
|
|
ABSTFN + r"\subdir\parent\subdir\parent\missing")
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath("broken4"),
|
|
|
|
ABSTFN + r"\missing")
|
|
|
|
self.assertPathEqual(ntpath.realpath("broken5"),
|
|
|
|
ABSTFN + r"\missing")
|
|
|
|
|
|
|
|
self.assertPathEqual(ntpath.realpath(b"broken"),
|
|
|
|
os.fsencode(ABSTFN + r"\missing"))
|
|
|
|
self.assertPathEqual(ntpath.realpath(rb"broken\foo"),
|
|
|
|
os.fsencode(ABSTFN + r"\missing\foo"))
|
|
|
|
self.assertPathEqual(ntpath.realpath(rb"broken1"),
|
2019-11-15 13:49:21 -04:00
|
|
|
os.fsencode(ABSTFN + r"\broken\bar"))
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath(rb"broken1\baz"),
|
2019-11-15 13:49:21 -04:00
|
|
|
os.fsencode(ABSTFN + r"\broken\bar\baz"))
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath(b"broken2"),
|
2019-11-15 13:49:21 -04:00
|
|
|
os.fsencode(ABSTFN + r"\self\self\missing"))
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath(rb"broken3"),
|
2019-11-15 13:49:21 -04:00
|
|
|
os.fsencode(ABSTFN + r"\subdir\parent\subdir\parent\missing"))
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath(b"broken4"),
|
|
|
|
os.fsencode(ABSTFN + r"\missing"))
|
|
|
|
self.assertPathEqual(ntpath.realpath(b"broken5"),
|
|
|
|
os.fsencode(ABSTFN + r"\missing"))
|
2019-08-21 17:43:06 -03:00
|
|
|
|
2020-08-03 13:49:18 -03:00
|
|
|
@os_helper.skip_unless_symlink
|
2019-08-21 17:43:06 -03:00
|
|
|
@unittest.skipUnless(HAVE_GETFINALPATHNAME, 'need _getfinalpathname')
|
|
|
|
def test_realpath_symlink_loops(self):
|
2021-04-28 12:50:17 -03:00
|
|
|
# Symlink loops in non-strict mode are non-deterministic as to which
|
|
|
|
# path is returned, but it will always be the fully resolved path of
|
|
|
|
# one member of the cycle
|
2020-08-03 13:49:18 -03:00
|
|
|
ABSTFN = ntpath.abspath(os_helper.TESTFN)
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN)
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN + "1")
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN + "2")
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN + "y")
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN + "c")
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN + "a")
|
2019-08-21 17:43:06 -03:00
|
|
|
|
|
|
|
os.symlink(ABSTFN, ABSTFN)
|
2019-10-03 12:31:03 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath(ABSTFN), ABSTFN)
|
2019-08-21 17:43:06 -03:00
|
|
|
|
|
|
|
os.symlink(ABSTFN + "1", ABSTFN + "2")
|
|
|
|
os.symlink(ABSTFN + "2", ABSTFN + "1")
|
2019-10-03 12:31:03 -03:00
|
|
|
expected = (ABSTFN + "1", ABSTFN + "2")
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathIn(ntpath.realpath(ABSTFN + "1"), expected)
|
|
|
|
self.assertPathIn(ntpath.realpath(ABSTFN + "2"), expected)
|
|
|
|
|
|
|
|
self.assertPathIn(ntpath.realpath(ABSTFN + "1\\x"),
|
|
|
|
(ntpath.join(r, "x") for r in expected))
|
|
|
|
self.assertPathEqual(ntpath.realpath(ABSTFN + "1\\.."),
|
|
|
|
ntpath.dirname(ABSTFN))
|
|
|
|
self.assertPathEqual(ntpath.realpath(ABSTFN + "1\\..\\x"),
|
|
|
|
ntpath.dirname(ABSTFN) + "\\x")
|
2019-08-21 17:43:06 -03:00
|
|
|
os.symlink(ABSTFN + "x", ABSTFN + "y")
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath(ABSTFN + "1\\..\\"
|
|
|
|
+ ntpath.basename(ABSTFN) + "y"),
|
|
|
|
ABSTFN + "x")
|
|
|
|
self.assertPathIn(ntpath.realpath(ABSTFN + "1\\..\\"
|
|
|
|
+ ntpath.basename(ABSTFN) + "1"),
|
|
|
|
expected)
|
2019-08-21 17:43:06 -03:00
|
|
|
|
|
|
|
os.symlink(ntpath.basename(ABSTFN) + "a\\b", ABSTFN + "a")
|
2019-10-03 12:31:03 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath(ABSTFN + "a"), ABSTFN + "a")
|
2019-08-21 17:43:06 -03:00
|
|
|
|
|
|
|
os.symlink("..\\" + ntpath.basename(ntpath.dirname(ABSTFN))
|
|
|
|
+ "\\" + ntpath.basename(ABSTFN) + "c", ABSTFN + "c")
|
2019-10-03 12:31:03 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath(ABSTFN + "c"), ABSTFN + "c")
|
2019-08-21 17:43:06 -03:00
|
|
|
|
|
|
|
# Test using relative path as well.
|
2019-10-03 12:31:03 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath(ntpath.basename(ABSTFN)), ABSTFN)
|
2019-08-21 17:43:06 -03:00
|
|
|
|
2021-04-28 12:50:17 -03:00
|
|
|
@os_helper.skip_unless_symlink
|
|
|
|
@unittest.skipUnless(HAVE_GETFINALPATHNAME, 'need _getfinalpathname')
|
|
|
|
def test_realpath_symlink_loops_strict(self):
|
|
|
|
# Symlink loops raise OSError in strict mode
|
|
|
|
ABSTFN = ntpath.abspath(os_helper.TESTFN)
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN)
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN + "1")
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN + "2")
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN + "y")
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN + "c")
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN + "a")
|
|
|
|
|
|
|
|
os.symlink(ABSTFN, ABSTFN)
|
|
|
|
self.assertRaises(OSError, ntpath.realpath, ABSTFN, strict=True)
|
|
|
|
|
|
|
|
os.symlink(ABSTFN + "1", ABSTFN + "2")
|
|
|
|
os.symlink(ABSTFN + "2", ABSTFN + "1")
|
|
|
|
self.assertRaises(OSError, ntpath.realpath, ABSTFN + "1", strict=True)
|
|
|
|
self.assertRaises(OSError, ntpath.realpath, ABSTFN + "2", strict=True)
|
|
|
|
self.assertRaises(OSError, ntpath.realpath, ABSTFN + "1\\x", strict=True)
|
|
|
|
# Windows eliminates '..' components before resolving links, so the
|
|
|
|
# following call is not expected to raise.
|
|
|
|
self.assertPathEqual(ntpath.realpath(ABSTFN + "1\\..", strict=True),
|
|
|
|
ntpath.dirname(ABSTFN))
|
|
|
|
self.assertRaises(OSError, ntpath.realpath, ABSTFN + "1\\..\\x", strict=True)
|
|
|
|
os.symlink(ABSTFN + "x", ABSTFN + "y")
|
|
|
|
self.assertRaises(OSError, ntpath.realpath, ABSTFN + "1\\..\\"
|
|
|
|
+ ntpath.basename(ABSTFN) + "y",
|
|
|
|
strict=True)
|
|
|
|
self.assertRaises(OSError, ntpath.realpath,
|
|
|
|
ABSTFN + "1\\..\\" + ntpath.basename(ABSTFN) + "1",
|
|
|
|
strict=True)
|
|
|
|
|
|
|
|
os.symlink(ntpath.basename(ABSTFN) + "a\\b", ABSTFN + "a")
|
|
|
|
self.assertRaises(OSError, ntpath.realpath, ABSTFN + "a", strict=True)
|
|
|
|
|
|
|
|
os.symlink("..\\" + ntpath.basename(ntpath.dirname(ABSTFN))
|
|
|
|
+ "\\" + ntpath.basename(ABSTFN) + "c", ABSTFN + "c")
|
|
|
|
self.assertRaises(OSError, ntpath.realpath, ABSTFN + "c", strict=True)
|
|
|
|
|
|
|
|
# Test using relative path as well.
|
|
|
|
self.assertRaises(OSError, ntpath.realpath, ntpath.basename(ABSTFN),
|
|
|
|
strict=True)
|
|
|
|
|
2020-08-03 13:49:18 -03:00
|
|
|
@os_helper.skip_unless_symlink
|
2019-08-21 17:43:06 -03:00
|
|
|
@unittest.skipUnless(HAVE_GETFINALPATHNAME, 'need _getfinalpathname')
|
|
|
|
def test_realpath_symlink_prefix(self):
|
2020-08-03 13:49:18 -03:00
|
|
|
ABSTFN = ntpath.abspath(os_helper.TESTFN)
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN + "3")
|
|
|
|
self.addCleanup(os_helper.unlink, "\\\\?\\" + ABSTFN + "3.")
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN + "3link")
|
|
|
|
self.addCleanup(os_helper.unlink, ABSTFN + "3.link")
|
2019-08-21 17:43:06 -03:00
|
|
|
|
|
|
|
with open(ABSTFN + "3", "wb") as f:
|
|
|
|
f.write(b'0')
|
|
|
|
os.symlink(ABSTFN + "3", ABSTFN + "3link")
|
|
|
|
|
|
|
|
with open("\\\\?\\" + ABSTFN + "3.", "wb") as f:
|
|
|
|
f.write(b'1')
|
|
|
|
os.symlink("\\\\?\\" + ABSTFN + "3.", ABSTFN + "3.link")
|
|
|
|
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath(ABSTFN + "3link"),
|
|
|
|
ABSTFN + "3")
|
|
|
|
self.assertPathEqual(ntpath.realpath(ABSTFN + "3.link"),
|
|
|
|
"\\\\?\\" + ABSTFN + "3.")
|
2019-08-21 17:43:06 -03:00
|
|
|
|
|
|
|
# Resolved paths should be usable to open target files
|
|
|
|
with open(ntpath.realpath(ABSTFN + "3link"), "rb") as f:
|
|
|
|
self.assertEqual(f.read(), b'0')
|
|
|
|
with open(ntpath.realpath(ABSTFN + "3.link"), "rb") as f:
|
|
|
|
self.assertEqual(f.read(), b'1')
|
|
|
|
|
|
|
|
# When the prefix is included, it is not stripped
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathEqual(ntpath.realpath("\\\\?\\" + ABSTFN + "3link"),
|
|
|
|
"\\\\?\\" + ABSTFN + "3")
|
|
|
|
self.assertPathEqual(ntpath.realpath("\\\\?\\" + ABSTFN + "3.link"),
|
|
|
|
"\\\\?\\" + ABSTFN + "3.")
|
2019-08-21 17:43:06 -03:00
|
|
|
|
2019-09-11 06:48:36 -03:00
|
|
|
@unittest.skipUnless(HAVE_GETFINALPATHNAME, 'need _getfinalpathname')
|
|
|
|
def test_realpath_nul(self):
|
|
|
|
tester("ntpath.realpath('NUL')", r'\\.\NUL')
|
|
|
|
|
2019-11-15 13:49:21 -04:00
|
|
|
@unittest.skipUnless(HAVE_GETFINALPATHNAME, 'need _getfinalpathname')
|
2019-11-15 20:04:00 -04:00
|
|
|
@unittest.skipUnless(HAVE_GETSHORTPATHNAME, 'need _getshortpathname')
|
2019-11-15 13:49:21 -04:00
|
|
|
def test_realpath_cwd(self):
|
2020-08-03 13:49:18 -03:00
|
|
|
ABSTFN = ntpath.abspath(os_helper.TESTFN)
|
2019-11-15 13:49:21 -04:00
|
|
|
|
2020-08-03 13:49:18 -03:00
|
|
|
os_helper.unlink(ABSTFN)
|
2020-08-06 08:51:29 -03:00
|
|
|
os_helper.rmtree(ABSTFN)
|
2019-11-15 13:49:21 -04:00
|
|
|
os.mkdir(ABSTFN)
|
2020-08-06 08:51:29 -03:00
|
|
|
self.addCleanup(os_helper.rmtree, ABSTFN)
|
2019-11-15 13:49:21 -04:00
|
|
|
|
|
|
|
test_dir_long = ntpath.join(ABSTFN, "MyVeryLongDirectoryName")
|
2019-11-15 20:04:00 -04:00
|
|
|
os.mkdir(test_dir_long)
|
|
|
|
|
|
|
|
test_dir_short = _getshortpathname(test_dir_long)
|
2019-11-15 13:49:21 -04:00
|
|
|
test_file_long = ntpath.join(test_dir_long, "file.txt")
|
|
|
|
test_file_short = ntpath.join(test_dir_short, "file.txt")
|
|
|
|
|
|
|
|
with open(test_file_long, "wb") as f:
|
|
|
|
f.write(b"content")
|
|
|
|
|
|
|
|
self.assertPathEqual(test_file_long, ntpath.realpath(test_file_short))
|
|
|
|
|
2020-08-07 12:18:38 -03:00
|
|
|
with os_helper.change_cwd(test_dir_long):
|
2019-11-15 13:49:21 -04:00
|
|
|
self.assertPathEqual(test_file_long, ntpath.realpath("file.txt"))
|
2020-08-07 12:18:38 -03:00
|
|
|
with os_helper.change_cwd(test_dir_long.lower()):
|
2019-11-15 13:49:21 -04:00
|
|
|
self.assertPathEqual(test_file_long, ntpath.realpath("file.txt"))
|
2020-08-07 12:18:38 -03:00
|
|
|
with os_helper.change_cwd(test_dir_short):
|
2019-11-15 13:49:21 -04:00
|
|
|
self.assertPathEqual(test_file_long, ntpath.realpath("file.txt"))
|
|
|
|
|
2023-10-05 11:49:07 -03:00
|
|
|
@unittest.skipUnless(HAVE_GETFINALPATHNAME, 'need _getfinalpathname')
|
|
|
|
def test_realpath_permission(self):
|
|
|
|
# Test whether python can resolve the real filename of a
|
|
|
|
# shortened file name even if it does not have permission to access it.
|
|
|
|
ABSTFN = ntpath.realpath(os_helper.TESTFN)
|
|
|
|
|
|
|
|
os_helper.unlink(ABSTFN)
|
|
|
|
os_helper.rmtree(ABSTFN)
|
|
|
|
os.mkdir(ABSTFN)
|
|
|
|
self.addCleanup(os_helper.rmtree, ABSTFN)
|
|
|
|
|
|
|
|
test_file = ntpath.join(ABSTFN, "LongFileName123.txt")
|
|
|
|
test_file_short = ntpath.join(ABSTFN, "LONGFI~1.TXT")
|
|
|
|
|
|
|
|
with open(test_file, "wb") as f:
|
|
|
|
f.write(b"content")
|
|
|
|
# Automatic generation of short names may be disabled on
|
|
|
|
# NTFS volumes for the sake of performance.
|
|
|
|
# They're not supported at all on ReFS and exFAT.
|
|
|
|
subprocess.run(
|
|
|
|
# Try to set the short name manually.
|
|
|
|
['fsutil.exe', 'file', 'setShortName', test_file, 'LONGFI~1.TXT'],
|
|
|
|
creationflags=subprocess.DETACHED_PROCESS
|
|
|
|
)
|
|
|
|
|
|
|
|
try:
|
|
|
|
self.assertPathEqual(test_file, ntpath.realpath(test_file_short))
|
|
|
|
except AssertionError:
|
|
|
|
raise unittest.SkipTest('the filesystem seems to lack support for short filenames')
|
|
|
|
|
|
|
|
# Deny the right to [S]YNCHRONIZE on the file to
|
|
|
|
# force nt._getfinalpathname to fail with ERROR_ACCESS_DENIED.
|
|
|
|
p = subprocess.run(
|
|
|
|
['icacls.exe', test_file, '/deny', '*S-1-5-32-545:(S)'],
|
|
|
|
creationflags=subprocess.DETACHED_PROCESS
|
|
|
|
)
|
|
|
|
|
|
|
|
if p.returncode:
|
|
|
|
raise unittest.SkipTest('failed to deny access to the test file')
|
|
|
|
|
|
|
|
self.assertPathEqual(test_file, ntpath.realpath(test_file_short))
|
|
|
|
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
def test_expandvars(self):
|
2020-08-03 13:49:18 -03:00
|
|
|
with os_helper.EnvironmentVarGuard() as env:
|
2009-05-01 16:58:58 -03:00
|
|
|
env.clear()
|
|
|
|
env["foo"] = "bar"
|
|
|
|
env["{foo"] = "baz1"
|
|
|
|
env["{foo}"] = "baz2"
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
tester('ntpath.expandvars("foo")', "foo")
|
|
|
|
tester('ntpath.expandvars("$foo bar")', "bar bar")
|
|
|
|
tester('ntpath.expandvars("${foo}bar")', "barbar")
|
|
|
|
tester('ntpath.expandvars("$[foo]bar")', "$[foo]bar")
|
|
|
|
tester('ntpath.expandvars("$bar bar")', "$bar bar")
|
|
|
|
tester('ntpath.expandvars("$?bar")', "$?bar")
|
|
|
|
tester('ntpath.expandvars("$foo}bar")', "bar}bar")
|
|
|
|
tester('ntpath.expandvars("${foo")', "${foo")
|
|
|
|
tester('ntpath.expandvars("${{foo}}")', "baz1}")
|
|
|
|
tester('ntpath.expandvars("$foo$foo")', "barbar")
|
|
|
|
tester('ntpath.expandvars("$bar$bar")', "$bar$bar")
|
|
|
|
tester('ntpath.expandvars("%foo% bar")', "bar bar")
|
|
|
|
tester('ntpath.expandvars("%foo%bar")', "barbar")
|
|
|
|
tester('ntpath.expandvars("%foo%%foo%")', "barbar")
|
|
|
|
tester('ntpath.expandvars("%%foo%%foo%foo%")', "%foo%foobar")
|
|
|
|
tester('ntpath.expandvars("%?bar%")', "%?bar%")
|
|
|
|
tester('ntpath.expandvars("%foo%%bar")', "bar%bar")
|
|
|
|
tester('ntpath.expandvars("\'%foo%\'%bar")', "\'%foo%\'%bar")
|
2015-03-25 11:40:15 -03:00
|
|
|
tester('ntpath.expandvars("bar\'%foo%")', "bar\'%foo%")
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
|
2020-08-03 13:49:18 -03:00
|
|
|
@unittest.skipUnless(os_helper.FS_NONASCII, 'need os_helper.FS_NONASCII')
|
2014-02-13 04:13:53 -04:00
|
|
|
def test_expandvars_nonascii(self):
|
|
|
|
def check(value, expected):
|
|
|
|
tester('ntpath.expandvars(%r)' % value, expected)
|
2020-08-03 13:49:18 -03:00
|
|
|
with os_helper.EnvironmentVarGuard() as env:
|
2014-02-13 04:13:53 -04:00
|
|
|
env.clear()
|
2020-08-03 13:49:18 -03:00
|
|
|
nonascii = os_helper.FS_NONASCII
|
2014-02-13 04:13:53 -04:00
|
|
|
env['spam'] = nonascii
|
|
|
|
env[nonascii] = 'ham' + nonascii
|
|
|
|
check('$spam bar', '%s bar' % nonascii)
|
|
|
|
check('$%s bar' % nonascii, '$%s bar' % nonascii)
|
|
|
|
check('${spam}bar', '%sbar' % nonascii)
|
|
|
|
check('${%s}bar' % nonascii, 'ham%sbar' % nonascii)
|
|
|
|
check('$spam}bar', '%s}bar' % nonascii)
|
|
|
|
check('$%s}bar' % nonascii, '$%s}bar' % nonascii)
|
|
|
|
check('%spam% bar', '%s bar' % nonascii)
|
|
|
|
check('%{}% bar'.format(nonascii), 'ham%s bar' % nonascii)
|
|
|
|
check('%spam%bar', '%sbar' % nonascii)
|
|
|
|
check('%{}%bar'.format(nonascii), 'ham%sbar' % nonascii)
|
|
|
|
|
2014-05-28 12:11:29 -03:00
|
|
|
def test_expanduser(self):
|
|
|
|
tester('ntpath.expanduser("test")', 'test')
|
|
|
|
|
2020-08-03 13:49:18 -03:00
|
|
|
with os_helper.EnvironmentVarGuard() as env:
|
2014-05-28 12:11:29 -03:00
|
|
|
env.clear()
|
|
|
|
tester('ntpath.expanduser("~test")', '~test')
|
|
|
|
|
|
|
|
env['HOMEDRIVE'] = 'C:\\'
|
2021-04-07 19:50:13 -03:00
|
|
|
env['HOMEPATH'] = 'Users\\eric'
|
|
|
|
env['USERNAME'] = 'eric'
|
|
|
|
tester('ntpath.expanduser("~test")', 'C:\\Users\\test')
|
|
|
|
tester('ntpath.expanduser("~")', 'C:\\Users\\eric')
|
2014-05-28 12:11:29 -03:00
|
|
|
|
|
|
|
del env['HOMEDRIVE']
|
2021-04-07 19:50:13 -03:00
|
|
|
tester('ntpath.expanduser("~test")', 'Users\\test')
|
|
|
|
tester('ntpath.expanduser("~")', 'Users\\eric')
|
2014-05-28 12:11:29 -03:00
|
|
|
|
|
|
|
env.clear()
|
2021-04-07 19:50:13 -03:00
|
|
|
env['USERPROFILE'] = 'C:\\Users\\eric'
|
|
|
|
env['USERNAME'] = 'eric'
|
|
|
|
tester('ntpath.expanduser("~test")', 'C:\\Users\\test')
|
|
|
|
tester('ntpath.expanduser("~")', 'C:\\Users\\eric')
|
2014-05-28 12:11:29 -03:00
|
|
|
tester('ntpath.expanduser("~test\\foo\\bar")',
|
2021-04-07 19:50:13 -03:00
|
|
|
'C:\\Users\\test\\foo\\bar')
|
2014-05-28 12:11:29 -03:00
|
|
|
tester('ntpath.expanduser("~test/foo/bar")',
|
2021-04-07 19:50:13 -03:00
|
|
|
'C:\\Users\\test/foo/bar')
|
2014-05-28 12:11:29 -03:00
|
|
|
tester('ntpath.expanduser("~\\foo\\bar")',
|
2021-04-07 19:50:13 -03:00
|
|
|
'C:\\Users\\eric\\foo\\bar')
|
2014-05-28 12:11:29 -03:00
|
|
|
tester('ntpath.expanduser("~/foo/bar")',
|
2021-04-07 19:50:13 -03:00
|
|
|
'C:\\Users\\eric/foo/bar')
|
2019-03-12 12:39:57 -03:00
|
|
|
|
|
|
|
# bpo-36264: ignore `HOME` when set on windows
|
|
|
|
env.clear()
|
|
|
|
env['HOME'] = 'F:\\'
|
2021-04-07 19:50:13 -03:00
|
|
|
env['USERPROFILE'] = 'C:\\Users\\eric'
|
|
|
|
env['USERNAME'] = 'eric'
|
|
|
|
tester('ntpath.expanduser("~test")', 'C:\\Users\\test')
|
|
|
|
tester('ntpath.expanduser("~")', 'C:\\Users\\eric')
|
|
|
|
|
|
|
|
# bpo-39899: don't guess another user's home directory if
|
|
|
|
# `%USERNAME% != basename(%USERPROFILE%)`
|
|
|
|
env.clear()
|
|
|
|
env['USERPROFILE'] = 'C:\\Users\\eric'
|
|
|
|
env['USERNAME'] = 'idle'
|
|
|
|
tester('ntpath.expanduser("~test")', '~test')
|
|
|
|
tester('ntpath.expanduser("~")', 'C:\\Users\\eric')
|
|
|
|
|
|
|
|
|
2014-05-28 12:11:29 -03:00
|
|
|
|
2018-02-22 14:39:10 -04:00
|
|
|
@unittest.skipUnless(nt, "abspath requires 'nt' module")
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
def test_abspath(self):
|
2018-02-22 14:39:10 -04:00
|
|
|
tester('ntpath.abspath("C:\\")', "C:\\")
|
2022-01-13 19:35:42 -04:00
|
|
|
tester('ntpath.abspath("\\\\?\\C:////spam////eggs. . .")', "\\\\?\\C:\\spam\\eggs")
|
|
|
|
tester('ntpath.abspath("\\\\.\\C:////spam////eggs. . .")', "\\\\.\\C:\\spam\\eggs")
|
|
|
|
tester('ntpath.abspath("//spam//eggs. . .")', "\\\\spam\\eggs")
|
|
|
|
tester('ntpath.abspath("\\\\spam\\\\eggs. . .")', "\\\\spam\\eggs")
|
|
|
|
tester('ntpath.abspath("C:/spam. . .")', "C:\\spam")
|
|
|
|
tester('ntpath.abspath("C:\\spam. . .")', "C:\\spam")
|
|
|
|
tester('ntpath.abspath("C:/nul")', "\\\\.\\nul")
|
|
|
|
tester('ntpath.abspath("C:\\nul")', "\\\\.\\nul")
|
|
|
|
tester('ntpath.abspath("//..")', "\\\\")
|
|
|
|
tester('ntpath.abspath("//../")', "\\\\..\\")
|
|
|
|
tester('ntpath.abspath("//../..")', "\\\\..\\")
|
|
|
|
tester('ntpath.abspath("//../../")', "\\\\..\\..\\")
|
|
|
|
tester('ntpath.abspath("//../../../")', "\\\\..\\..\\")
|
|
|
|
tester('ntpath.abspath("//../../../..")', "\\\\..\\..\\")
|
|
|
|
tester('ntpath.abspath("//../../../../")', "\\\\..\\..\\")
|
|
|
|
tester('ntpath.abspath("//server")', "\\\\server")
|
|
|
|
tester('ntpath.abspath("//server/")', "\\\\server\\")
|
|
|
|
tester('ntpath.abspath("//server/..")', "\\\\server\\")
|
|
|
|
tester('ntpath.abspath("//server/../")', "\\\\server\\..\\")
|
|
|
|
tester('ntpath.abspath("//server/../..")', "\\\\server\\..\\")
|
|
|
|
tester('ntpath.abspath("//server/../../")', "\\\\server\\..\\")
|
|
|
|
tester('ntpath.abspath("//server/../../..")', "\\\\server\\..\\")
|
|
|
|
tester('ntpath.abspath("//server/../../../")', "\\\\server\\..\\")
|
|
|
|
tester('ntpath.abspath("//server/share")', "\\\\server\\share")
|
|
|
|
tester('ntpath.abspath("//server/share/")', "\\\\server\\share\\")
|
|
|
|
tester('ntpath.abspath("//server/share/..")', "\\\\server\\share\\")
|
|
|
|
tester('ntpath.abspath("//server/share/../")', "\\\\server\\share\\")
|
|
|
|
tester('ntpath.abspath("//server/share/../..")', "\\\\server\\share\\")
|
|
|
|
tester('ntpath.abspath("//server/share/../../")', "\\\\server\\share\\")
|
|
|
|
tester('ntpath.abspath("C:\\nul. . .")', "\\\\.\\nul")
|
|
|
|
tester('ntpath.abspath("//... . .")', "\\\\")
|
|
|
|
tester('ntpath.abspath("//.. . . .")', "\\\\")
|
|
|
|
tester('ntpath.abspath("//../... . .")', "\\\\..\\")
|
|
|
|
tester('ntpath.abspath("//../.. . . .")', "\\\\..\\")
|
2020-08-03 13:49:18 -03:00
|
|
|
with os_helper.temp_cwd(os_helper.TESTFN) as cwd_dir: # bpo-31047
|
2018-07-29 09:47:09 -03:00
|
|
|
tester('ntpath.abspath("")', cwd_dir)
|
|
|
|
tester('ntpath.abspath(" ")', cwd_dir + "\\ ")
|
|
|
|
tester('ntpath.abspath("?")', cwd_dir + "\\?")
|
2018-10-25 12:26:38 -03:00
|
|
|
drive, _ = ntpath.splitdrive(cwd_dir)
|
|
|
|
tester('ntpath.abspath("/abc/")', drive + "\\abc")
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
|
|
|
|
def test_relpath(self):
|
|
|
|
tester('ntpath.relpath("a")', 'a')
|
2019-08-21 17:43:06 -03:00
|
|
|
tester('ntpath.relpath(ntpath.abspath("a"))', 'a')
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
tester('ntpath.relpath("a/b")', 'a\\b')
|
|
|
|
tester('ntpath.relpath("../a/b")', '..\\a\\b')
|
2020-08-03 13:49:18 -03:00
|
|
|
with os_helper.temp_cwd(os_helper.TESTFN) as cwd_dir:
|
2019-08-21 17:43:06 -03:00
|
|
|
currentdir = ntpath.basename(cwd_dir)
|
2015-01-26 04:26:14 -04:00
|
|
|
tester('ntpath.relpath("a", "../b")', '..\\'+currentdir+'\\a')
|
|
|
|
tester('ntpath.relpath("a/b", "../c")', '..\\'+currentdir+'\\a\\b')
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
tester('ntpath.relpath("a", "b/c")', '..\\..\\a')
|
2009-05-06 05:04:54 -03:00
|
|
|
tester('ntpath.relpath("c:/foo/bar/bat", "c:/x/y")', '..\\..\\foo\\bar\\bat')
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
tester('ntpath.relpath("//conky/mountpoint/a", "//conky/mountpoint/b/c")', '..\\..\\a')
|
|
|
|
tester('ntpath.relpath("a", "a")', '.')
|
2009-05-06 05:04:54 -03:00
|
|
|
tester('ntpath.relpath("/foo/bar/bat", "/x/y/z")', '..\\..\\..\\foo\\bar\\bat')
|
|
|
|
tester('ntpath.relpath("/foo/bar/bat", "/foo/bar")', 'bat')
|
|
|
|
tester('ntpath.relpath("/foo/bar/bat", "/")', 'foo\\bar\\bat')
|
|
|
|
tester('ntpath.relpath("/", "/foo/bar/bat")', '..\\..\\..')
|
|
|
|
tester('ntpath.relpath("/foo/bar/bat", "/x")', '..\\foo\\bar\\bat')
|
|
|
|
tester('ntpath.relpath("/x", "/foo/bar/bat")', '..\\..\\..\\x')
|
|
|
|
tester('ntpath.relpath("/", "/")', '.')
|
|
|
|
tester('ntpath.relpath("/a", "/a")', '.')
|
|
|
|
tester('ntpath.relpath("/a/b", "/a/b")', '.')
|
2010-10-18 09:13:18 -03:00
|
|
|
tester('ntpath.relpath("c:/foo", "C:/FOO")', '.')
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
|
2015-03-31 09:31:53 -03:00
|
|
|
def test_commonpath(self):
|
|
|
|
def check(paths, expected):
|
|
|
|
tester(('ntpath.commonpath(%r)' % paths).replace('\\\\', '\\'),
|
|
|
|
expected)
|
2024-04-03 10:10:09 -03:00
|
|
|
def check_error(paths, expected):
|
|
|
|
self.assertRaisesRegex(ValueError, expected, ntpath.commonpath, paths)
|
|
|
|
self.assertRaisesRegex(ValueError, expected, ntpath.commonpath, paths[::-1])
|
|
|
|
self.assertRaisesRegex(ValueError, expected, ntpath.commonpath,
|
|
|
|
[os.fsencode(p) for p in paths])
|
|
|
|
self.assertRaisesRegex(ValueError, expected, ntpath.commonpath,
|
|
|
|
[os.fsencode(p) for p in paths[::-1]])
|
2015-03-31 09:31:53 -03:00
|
|
|
|
2024-03-28 18:20:08 -03:00
|
|
|
self.assertRaises(TypeError, ntpath.commonpath, None)
|
2015-03-31 09:31:53 -03:00
|
|
|
self.assertRaises(ValueError, ntpath.commonpath, [])
|
2024-03-28 18:20:08 -03:00
|
|
|
self.assertRaises(ValueError, ntpath.commonpath, iter([]))
|
2024-04-03 10:10:09 -03:00
|
|
|
|
|
|
|
# gh-117381: Logical error messages
|
|
|
|
check_error(['C:\\Foo', 'C:Foo'], "Can't mix absolute and relative paths")
|
|
|
|
check_error(['C:\\Foo', '\\Foo'], "Paths don't have the same drive")
|
|
|
|
check_error(['C:\\Foo', 'Foo'], "Paths don't have the same drive")
|
|
|
|
check_error(['C:Foo', '\\Foo'], "Paths don't have the same drive")
|
|
|
|
check_error(['C:Foo', 'Foo'], "Paths don't have the same drive")
|
|
|
|
check_error(['\\Foo', 'Foo'], "Can't mix rooted and not-rooted paths")
|
|
|
|
|
|
|
|
check(['C:\\Foo'], 'C:\\Foo')
|
|
|
|
check(['C:\\Foo', 'C:\\Foo'], 'C:\\Foo')
|
|
|
|
check(['C:\\Foo\\', 'C:\\Foo'], 'C:\\Foo')
|
|
|
|
check(['C:\\Foo\\', 'C:\\Foo\\'], 'C:\\Foo')
|
|
|
|
check(['C:\\\\Foo', 'C:\\Foo\\\\'], 'C:\\Foo')
|
|
|
|
check(['C:\\.\\Foo', 'C:\\Foo\\.'], 'C:\\Foo')
|
|
|
|
check(['C:\\', 'C:\\baz'], 'C:\\')
|
|
|
|
check(['C:\\Bar', 'C:\\baz'], 'C:\\')
|
|
|
|
check(['C:\\Foo', 'C:\\Foo\\Baz'], 'C:\\Foo')
|
|
|
|
check(['C:\\Foo\\Bar', 'C:\\Foo\\Baz'], 'C:\\Foo')
|
|
|
|
check(['C:\\Bar', 'C:\\Baz'], 'C:\\')
|
|
|
|
check(['C:\\Bar\\', 'C:\\Baz'], 'C:\\')
|
|
|
|
|
|
|
|
check(['C:\\Foo\\Bar', 'C:/Foo/Baz'], 'C:\\Foo')
|
|
|
|
check(['C:\\Foo\\Bar', 'c:/foo/baz'], 'C:\\Foo')
|
|
|
|
check(['c:/foo/bar', 'C:\\Foo\\Baz'], 'c:\\foo')
|
|
|
|
|
|
|
|
# gh-117381: Logical error messages
|
|
|
|
check_error(['C:\\Foo', 'D:\\Foo'], "Paths don't have the same drive")
|
|
|
|
check_error(['C:\\Foo', 'D:Foo'], "Paths don't have the same drive")
|
|
|
|
check_error(['C:Foo', 'D:Foo'], "Paths don't have the same drive")
|
2015-03-31 09:31:53 -03:00
|
|
|
|
|
|
|
check(['spam'], 'spam')
|
|
|
|
check(['spam', 'spam'], 'spam')
|
|
|
|
check(['spam', 'alot'], '')
|
|
|
|
check(['and\\jam', 'and\\spam'], 'and')
|
|
|
|
check(['and\\\\jam', 'and\\spam\\\\'], 'and')
|
|
|
|
check(['and\\.\\jam', '.\\and\\spam'], 'and')
|
|
|
|
check(['and\\jam', 'and\\spam', 'alot'], '')
|
|
|
|
check(['and\\jam', 'and\\spam', 'and'], 'and')
|
|
|
|
check(['C:and\\jam', 'C:and\\spam'], 'C:and')
|
|
|
|
|
|
|
|
check([''], '')
|
|
|
|
check(['', 'spam\\alot'], '')
|
2024-04-03 10:10:09 -03:00
|
|
|
|
|
|
|
# gh-117381: Logical error messages
|
|
|
|
check_error(['', '\\spam\\alot'], "Can't mix rooted and not-rooted paths")
|
|
|
|
|
|
|
|
self.assertRaises(TypeError, ntpath.commonpath, [b'C:\\Foo', 'C:\\Foo\\Baz'])
|
|
|
|
self.assertRaises(TypeError, ntpath.commonpath, [b'C:\\Foo', 'Foo\\Baz'])
|
|
|
|
self.assertRaises(TypeError, ntpath.commonpath, [b'Foo', 'C:\\Foo\\Baz'])
|
|
|
|
self.assertRaises(TypeError, ntpath.commonpath, ['C:\\Foo', b'C:\\Foo\\Baz'])
|
|
|
|
self.assertRaises(TypeError, ntpath.commonpath, ['C:\\Foo', b'Foo\\Baz'])
|
|
|
|
self.assertRaises(TypeError, ntpath.commonpath, ['Foo', b'C:\\Foo\\Baz'])
|
2015-03-31 09:31:53 -03:00
|
|
|
|
2022-03-17 08:09:57 -03:00
|
|
|
@unittest.skipIf(is_emscripten, "Emscripten cannot fstat unnamed files.")
|
2010-09-06 14:07:27 -03:00
|
|
|
def test_sameopenfile(self):
|
|
|
|
with TemporaryFile() as tf1, TemporaryFile() as tf2:
|
|
|
|
# Make sure the same file is really the same
|
|
|
|
self.assertTrue(ntpath.sameopenfile(tf1.fileno(), tf1.fileno()))
|
|
|
|
# Make sure different files are really different
|
|
|
|
self.assertFalse(ntpath.sameopenfile(tf1.fileno(), tf2.fileno()))
|
2010-09-06 16:46:17 -03:00
|
|
|
# Make sure invalid values don't cause issues on win32
|
|
|
|
if sys.platform == "win32":
|
2010-12-05 00:16:47 -04:00
|
|
|
with self.assertRaises(OSError):
|
2010-09-06 16:46:17 -03:00
|
|
|
# Invalid file descriptors shouldn't display assert
|
|
|
|
# dialogs (#4804)
|
|
|
|
ntpath.sameopenfile(-1, -1)
|
2010-09-06 14:07:27 -03:00
|
|
|
|
2013-08-01 08:44:00 -03:00
|
|
|
def test_ismount(self):
|
|
|
|
self.assertTrue(ntpath.ismount("c:\\"))
|
|
|
|
self.assertTrue(ntpath.ismount("C:\\"))
|
|
|
|
self.assertTrue(ntpath.ismount("c:/"))
|
|
|
|
self.assertTrue(ntpath.ismount("C:/"))
|
|
|
|
self.assertTrue(ntpath.ismount("\\\\.\\c:\\"))
|
|
|
|
self.assertTrue(ntpath.ismount("\\\\.\\C:\\"))
|
|
|
|
|
|
|
|
self.assertTrue(ntpath.ismount(b"c:\\"))
|
|
|
|
self.assertTrue(ntpath.ismount(b"C:\\"))
|
|
|
|
self.assertTrue(ntpath.ismount(b"c:/"))
|
|
|
|
self.assertTrue(ntpath.ismount(b"C:/"))
|
|
|
|
self.assertTrue(ntpath.ismount(b"\\\\.\\c:\\"))
|
|
|
|
self.assertTrue(ntpath.ismount(b"\\\\.\\C:\\"))
|
|
|
|
|
2020-08-03 13:49:18 -03:00
|
|
|
with os_helper.temp_dir() as d:
|
2013-08-01 08:44:00 -03:00
|
|
|
self.assertFalse(ntpath.ismount(d))
|
|
|
|
|
2013-08-01 09:58:58 -03:00
|
|
|
if sys.platform == "win32":
|
|
|
|
#
|
|
|
|
# Make sure the current folder isn't the root folder
|
|
|
|
# (or any other volume root). The drive-relative
|
|
|
|
# locations below cannot then refer to mount points
|
|
|
|
#
|
2021-12-02 20:08:42 -04:00
|
|
|
test_cwd = os.getenv("SystemRoot")
|
|
|
|
drive, path = ntpath.splitdrive(test_cwd)
|
|
|
|
with os_helper.change_cwd(test_cwd):
|
2013-08-01 09:58:58 -03:00
|
|
|
self.assertFalse(ntpath.ismount(drive.lower()))
|
|
|
|
self.assertFalse(ntpath.ismount(drive.upper()))
|
|
|
|
|
|
|
|
self.assertTrue(ntpath.ismount("\\\\localhost\\c$"))
|
|
|
|
self.assertTrue(ntpath.ismount("\\\\localhost\\c$\\"))
|
|
|
|
|
|
|
|
self.assertTrue(ntpath.ismount(b"\\\\localhost\\c$"))
|
|
|
|
self.assertTrue(ntpath.ismount(b"\\\\localhost\\c$\\"))
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
|
2024-01-26 14:14:24 -04:00
|
|
|
def test_isreserved(self):
|
|
|
|
self.assertFalse(ntpath.isreserved(''))
|
|
|
|
self.assertFalse(ntpath.isreserved('.'))
|
|
|
|
self.assertFalse(ntpath.isreserved('..'))
|
|
|
|
self.assertFalse(ntpath.isreserved('/'))
|
|
|
|
self.assertFalse(ntpath.isreserved('/foo/bar'))
|
|
|
|
# A name that ends with a space or dot is reserved.
|
|
|
|
self.assertTrue(ntpath.isreserved('foo.'))
|
|
|
|
self.assertTrue(ntpath.isreserved('foo '))
|
|
|
|
# ASCII control characters are reserved.
|
|
|
|
self.assertTrue(ntpath.isreserved('\foo'))
|
|
|
|
# Wildcard characters, colon, and pipe are reserved.
|
|
|
|
self.assertTrue(ntpath.isreserved('foo*bar'))
|
|
|
|
self.assertTrue(ntpath.isreserved('foo?bar'))
|
|
|
|
self.assertTrue(ntpath.isreserved('foo"bar'))
|
|
|
|
self.assertTrue(ntpath.isreserved('foo<bar'))
|
|
|
|
self.assertTrue(ntpath.isreserved('foo>bar'))
|
|
|
|
self.assertTrue(ntpath.isreserved('foo:bar'))
|
|
|
|
self.assertTrue(ntpath.isreserved('foo|bar'))
|
|
|
|
# Case-insensitive DOS-device names are reserved.
|
|
|
|
self.assertTrue(ntpath.isreserved('nul'))
|
|
|
|
self.assertTrue(ntpath.isreserved('aux'))
|
|
|
|
self.assertTrue(ntpath.isreserved('prn'))
|
|
|
|
self.assertTrue(ntpath.isreserved('con'))
|
|
|
|
self.assertTrue(ntpath.isreserved('conin$'))
|
|
|
|
self.assertTrue(ntpath.isreserved('conout$'))
|
|
|
|
# COM/LPT + 1-9 or + superscript 1-3 are reserved.
|
|
|
|
self.assertTrue(ntpath.isreserved('COM1'))
|
|
|
|
self.assertTrue(ntpath.isreserved('LPT9'))
|
|
|
|
self.assertTrue(ntpath.isreserved('com\xb9'))
|
|
|
|
self.assertTrue(ntpath.isreserved('com\xb2'))
|
|
|
|
self.assertTrue(ntpath.isreserved('lpt\xb3'))
|
|
|
|
# DOS-device name matching ignores characters after a dot or
|
|
|
|
# a colon and also ignores trailing spaces.
|
|
|
|
self.assertTrue(ntpath.isreserved('NUL.txt'))
|
|
|
|
self.assertTrue(ntpath.isreserved('PRN '))
|
|
|
|
self.assertTrue(ntpath.isreserved('AUX .txt'))
|
|
|
|
self.assertTrue(ntpath.isreserved('COM1:bar'))
|
|
|
|
self.assertTrue(ntpath.isreserved('LPT9 :bar'))
|
|
|
|
# DOS-device names are only matched at the beginning
|
|
|
|
# of a path component.
|
|
|
|
self.assertFalse(ntpath.isreserved('bar.com9'))
|
|
|
|
self.assertFalse(ntpath.isreserved('bar.lpt9'))
|
|
|
|
# The entire path is checked, except for the drive.
|
|
|
|
self.assertTrue(ntpath.isreserved('c:/bar/baz/NUL'))
|
|
|
|
self.assertTrue(ntpath.isreserved('c:/NUL/bar/baz'))
|
|
|
|
self.assertFalse(ntpath.isreserved('//./NUL'))
|
|
|
|
# Bytes are supported.
|
|
|
|
self.assertFalse(ntpath.isreserved(b''))
|
|
|
|
self.assertFalse(ntpath.isreserved(b'.'))
|
|
|
|
self.assertFalse(ntpath.isreserved(b'..'))
|
|
|
|
self.assertFalse(ntpath.isreserved(b'/'))
|
|
|
|
self.assertFalse(ntpath.isreserved(b'/foo/bar'))
|
|
|
|
self.assertTrue(ntpath.isreserved(b'foo.'))
|
|
|
|
self.assertTrue(ntpath.isreserved(b'nul'))
|
|
|
|
|
2018-07-25 10:36:54 -03:00
|
|
|
def assertEqualCI(self, s1, s2):
|
|
|
|
"""Assert that two strings are equal ignoring case differences."""
|
|
|
|
self.assertEqual(s1.lower(), s2.lower())
|
|
|
|
|
2018-02-22 14:39:10 -04:00
|
|
|
@unittest.skipUnless(nt, "OS helpers require 'nt' module")
|
|
|
|
def test_nt_helpers(self):
|
|
|
|
# Trivial validation that the helpers do not break, and support both
|
|
|
|
# unicode and bytes (UTF-8) paths
|
|
|
|
|
2018-07-25 10:36:54 -03:00
|
|
|
executable = nt._getfinalpathname(sys.executable)
|
|
|
|
|
|
|
|
for path in executable, os.fsencode(executable):
|
|
|
|
volume_path = nt._getvolumepathname(path)
|
|
|
|
path_drive = ntpath.splitdrive(path)[0]
|
|
|
|
volume_path_drive = ntpath.splitdrive(volume_path)[0]
|
|
|
|
self.assertEqualCI(path_drive, volume_path_drive)
|
2018-02-22 14:39:10 -04:00
|
|
|
|
|
|
|
cap, free = nt._getdiskusage(sys.exec_prefix)
|
|
|
|
self.assertGreater(cap, 0)
|
|
|
|
self.assertGreater(free, 0)
|
|
|
|
b_cap, b_free = nt._getdiskusage(sys.exec_prefix.encode())
|
|
|
|
# Free space may change, so only test the capacity is equal
|
|
|
|
self.assertEqual(b_cap, cap)
|
|
|
|
self.assertGreater(b_free, 0)
|
|
|
|
|
|
|
|
for path in [sys.prefix, sys.executable]:
|
|
|
|
final_path = nt._getfinalpathname(path)
|
|
|
|
self.assertIsInstance(final_path, str)
|
|
|
|
self.assertGreater(len(final_path), 0)
|
|
|
|
|
|
|
|
b_final_path = nt._getfinalpathname(path.encode())
|
|
|
|
self.assertIsInstance(b_final_path, bytes)
|
|
|
|
self.assertGreater(len(b_final_path), 0)
|
|
|
|
|
2022-11-22 13:19:34 -04:00
|
|
|
@unittest.skipIf(sys.platform != 'win32', "Can only test junctions with creation on win32.")
|
|
|
|
def test_isjunction(self):
|
|
|
|
with os_helper.temp_dir() as d:
|
|
|
|
with os_helper.change_cwd(d):
|
|
|
|
os.mkdir('tmpdir')
|
|
|
|
|
|
|
|
import _winapi
|
|
|
|
try:
|
|
|
|
_winapi.CreateJunction('tmpdir', 'testjunc')
|
|
|
|
except OSError:
|
|
|
|
raise unittest.SkipTest('creating the test junction failed')
|
|
|
|
|
|
|
|
self.assertTrue(ntpath.isjunction('testjunc'))
|
|
|
|
self.assertFalse(ntpath.isjunction('tmpdir'))
|
|
|
|
self.assertPathEqual(ntpath.realpath('testjunc'), ntpath.realpath('tmpdir'))
|
|
|
|
|
2023-02-08 10:34:24 -04:00
|
|
|
@unittest.skipIf(sys.platform != 'win32', "drive letters are a windows concept")
|
|
|
|
def test_isfile_driveletter(self):
|
|
|
|
drive = os.environ.get('SystemDrive')
|
|
|
|
if drive is None or len(drive) != 2 or drive[1] != ':':
|
|
|
|
raise unittest.SkipTest('SystemDrive is not defined or malformed')
|
|
|
|
self.assertFalse(os.path.isfile('\\\\.\\' + drive))
|
|
|
|
|
2024-05-21 17:36:36 -03:00
|
|
|
@unittest.skipUnless(hasattr(os, 'pipe'), "need os.pipe()")
|
|
|
|
def test_isfile_anonymous_pipe(self):
|
|
|
|
pr, pw = os.pipe()
|
|
|
|
try:
|
|
|
|
self.assertFalse(ntpath.isfile(pr))
|
|
|
|
finally:
|
|
|
|
os.close(pr)
|
|
|
|
os.close(pw)
|
|
|
|
|
|
|
|
@unittest.skipIf(sys.platform != 'win32', "windows only")
|
|
|
|
def test_isfile_named_pipe(self):
|
|
|
|
import _winapi
|
|
|
|
named_pipe = f'//./PIPE/python_isfile_test_{os.getpid()}'
|
|
|
|
h = _winapi.CreateNamedPipe(named_pipe,
|
|
|
|
_winapi.PIPE_ACCESS_INBOUND,
|
|
|
|
0, 1, 0, 0, 0, 0)
|
|
|
|
try:
|
|
|
|
self.assertFalse(ntpath.isfile(named_pipe))
|
|
|
|
finally:
|
|
|
|
_winapi.CloseHandle(h)
|
|
|
|
|
2023-02-08 10:34:24 -04:00
|
|
|
@unittest.skipIf(sys.platform != 'win32', "windows only")
|
|
|
|
def test_con_device(self):
|
|
|
|
self.assertFalse(os.path.isfile(r"\\.\CON"))
|
|
|
|
self.assertFalse(os.path.isdir(r"\\.\CON"))
|
|
|
|
self.assertFalse(os.path.islink(r"\\.\CON"))
|
|
|
|
self.assertTrue(os.path.exists(r"\\.\CON"))
|
|
|
|
|
|
|
|
@unittest.skipIf(sys.platform != 'win32', "Fast paths are only for win32")
|
|
|
|
@cpython_only
|
|
|
|
def test_fast_paths_in_use(self):
|
|
|
|
# There are fast paths of these functions implemented in posixmodule.c.
|
|
|
|
# Confirm that they are being used, and not the Python fallbacks in
|
|
|
|
# genericpath.py.
|
2024-05-24 15:04:17 -03:00
|
|
|
self.assertTrue(os.path.splitroot is nt._path_splitroot_ex)
|
|
|
|
self.assertFalse(inspect.isfunction(os.path.splitroot))
|
|
|
|
self.assertTrue(os.path.normpath is nt._path_normpath)
|
|
|
|
self.assertFalse(inspect.isfunction(os.path.normpath))
|
2023-02-08 10:34:24 -04:00
|
|
|
self.assertTrue(os.path.isdir is nt._path_isdir)
|
|
|
|
self.assertFalse(inspect.isfunction(os.path.isdir))
|
|
|
|
self.assertTrue(os.path.isfile is nt._path_isfile)
|
|
|
|
self.assertFalse(inspect.isfunction(os.path.isfile))
|
|
|
|
self.assertTrue(os.path.islink is nt._path_islink)
|
|
|
|
self.assertFalse(inspect.isfunction(os.path.islink))
|
2024-05-21 17:36:36 -03:00
|
|
|
self.assertTrue(os.path.isjunction is nt._path_isjunction)
|
|
|
|
self.assertFalse(inspect.isfunction(os.path.isjunction))
|
2023-02-08 10:34:24 -04:00
|
|
|
self.assertTrue(os.path.exists is nt._path_exists)
|
|
|
|
self.assertFalse(inspect.isfunction(os.path.exists))
|
2024-05-21 17:36:36 -03:00
|
|
|
self.assertTrue(os.path.lexists is nt._path_lexists)
|
|
|
|
self.assertFalse(inspect.isfunction(os.path.lexists))
|
2023-02-08 10:34:24 -04:00
|
|
|
|
2023-05-29 06:05:32 -03:00
|
|
|
@unittest.skipIf(os.name != 'nt', "Dev Drives only exist on Win32")
|
|
|
|
def test_isdevdrive(self):
|
|
|
|
# Result may be True or False, but shouldn't raise
|
|
|
|
self.assertIn(ntpath.isdevdrive(os_helper.TESTFN), (True, False))
|
|
|
|
# ntpath.isdevdrive can handle relative paths
|
|
|
|
self.assertIn(ntpath.isdevdrive("."), (True, False))
|
|
|
|
self.assertIn(ntpath.isdevdrive(b"."), (True, False))
|
|
|
|
# Volume syntax is supported
|
|
|
|
self.assertIn(ntpath.isdevdrive(os.listvolumes()[0]), (True, False))
|
|
|
|
# Invalid volume returns False from os.path method
|
|
|
|
self.assertFalse(ntpath.isdevdrive(r"\\?\Volume{00000000-0000-0000-0000-000000000000}\\"))
|
|
|
|
# Invalid volume raises from underlying helper
|
|
|
|
with self.assertRaises(OSError):
|
|
|
|
nt._path_isdevdrive(r"\\?\Volume{00000000-0000-0000-0000-000000000000}\\")
|
|
|
|
|
|
|
|
@unittest.skipIf(os.name == 'nt', "isdevdrive fallback only used off Win32")
|
|
|
|
def test_isdevdrive_fallback(self):
|
|
|
|
# Fallback always returns False
|
|
|
|
self.assertFalse(ntpath.isdevdrive(os_helper.TESTFN))
|
|
|
|
|
2022-11-22 13:19:34 -04:00
|
|
|
|
2013-01-09 21:12:50 -04:00
|
|
|
class NtCommonTest(test_genericpath.CommonTest, unittest.TestCase):
|
2010-03-08 08:24:53 -04:00
|
|
|
pathmodule = ntpath
|
2017-01-13 14:55:05 -04:00
|
|
|
attributes = ['relpath']
|
2010-03-08 08:24:53 -04:00
|
|
|
|
|
|
|
|
2019-09-10 10:52:48 -03:00
|
|
|
class PathLikeTests(NtpathTestCase):
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
path = ntpath
|
|
|
|
|
|
|
|
def setUp(self):
|
2020-08-03 13:49:18 -03:00
|
|
|
self.file_name = os_helper.TESTFN
|
|
|
|
self.file_path = FakePath(os_helper.TESTFN)
|
|
|
|
self.addCleanup(os_helper.unlink, self.file_name)
|
2016-08-26 18:44:48 -03:00
|
|
|
with open(self.file_name, 'xb', 0) as file:
|
|
|
|
file.write(b"test_ntpath.PathLikeTests")
|
|
|
|
|
2019-09-10 10:52:48 -03:00
|
|
|
def _check_function(self, func):
|
|
|
|
self.assertPathEqual(func(self.file_path), func(self.file_name))
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_normcase(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.normcase)
|
2022-06-06 20:47:27 -03:00
|
|
|
if sys.platform == 'win32':
|
|
|
|
self.assertEqual(ntpath.normcase('\u03a9\u2126'), 'ωΩ')
|
2023-08-11 15:13:46 -03:00
|
|
|
self.assertEqual(ntpath.normcase('abc\x00def'), 'abc\x00def')
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_isabs(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.isabs)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_join(self):
|
2018-03-02 05:53:51 -04:00
|
|
|
self.assertEqual(self.path.join('a', FakePath('b'), 'c'),
|
2016-08-26 18:44:48 -03:00
|
|
|
self.path.join('a', 'b', 'c'))
|
|
|
|
|
|
|
|
def test_path_split(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.split)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_splitext(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.splitext)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_splitdrive(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.splitdrive)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
2023-01-26 20:28:27 -04:00
|
|
|
def test_path_splitroot(self):
|
|
|
|
self._check_function(self.path.splitroot)
|
|
|
|
|
2016-08-26 18:44:48 -03:00
|
|
|
def test_path_basename(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.basename)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_dirname(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.dirname)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_islink(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.islink)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_lexists(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.lexists)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_ismount(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.ismount)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_expanduser(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.expanduser)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_expandvars(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.expandvars)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_normpath(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.normpath)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_abspath(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.abspath)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_realpath(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.realpath)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_relpath(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.relpath)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_commonpath(self):
|
|
|
|
common_path = self.path.commonpath([self.file_path, self.file_name])
|
2019-09-10 10:52:48 -03:00
|
|
|
self.assertPathEqual(common_path, self.file_name)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
def test_path_isdir(self):
|
2019-09-10 10:52:48 -03:00
|
|
|
self._check_function(self.path.isdir)
|
2016-08-26 18:44:48 -03:00
|
|
|
|
|
|
|
|
Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61913 | benjamin.peterson | 2008-03-25 22:14:42 +0100 (Tue, 25 Mar 2008) | 2 lines
Merged the ACKS from py3k
........
r61915 | thomas.heller | 2008-03-25 22:18:39 +0100 (Tue, 25 Mar 2008) | 1 line
Make _ctypes.c PY_SSIZE_T_CLEAN.
........
r61916 | benjamin.peterson | 2008-03-25 22:55:50 +0100 (Tue, 25 Mar 2008) | 3 lines
Opps! I merged the revisions, but forgot to add
the header to ACKS
........
r61918 | andrew.kuchling | 2008-03-26 01:16:50 +0100 (Wed, 26 Mar 2008) | 1 line
Minor docstring typos
........
r61919 | andrew.kuchling | 2008-03-26 01:30:02 +0100 (Wed, 26 Mar 2008) | 1 line
Add various items
........
r61922 | neal.norwitz | 2008-03-26 05:55:51 +0100 (Wed, 26 Mar 2008) | 6 lines
Try to get this test to be less flaky. It was failing sometimes because
the connect would succeed before the timeout occurred. Try using an
address and port that hopefully doesn't exist to ensure we get no response.
If this doesn't work, we can use a public address close to python.org
and hopefully that address never gets taken.
........
r61923 | jerry.seutter | 2008-03-26 06:03:03 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61924 | neal.norwitz | 2008-03-26 06:19:41 +0100 (Wed, 26 Mar 2008) | 5 lines
Ensure that the mailbox is closed to prevent problems on Windows with removing
an open file. This doesn't seem to be a problem in 2.6, but that appears
to be somewhat accidental (specific to reference counting). When this
gets merged to 3.0, it will make the 3.0 code simpler.
........
r61925 | jerry.seutter | 2008-03-26 06:32:51 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61926 | jerry.seutter | 2008-03-26 06:58:14 +0100 (Wed, 26 Mar 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
r61928 | georg.brandl | 2008-03-26 10:04:36 +0100 (Wed, 26 Mar 2008) | 2 lines
Add Josiah.
........
r61929 | georg.brandl | 2008-03-26 10:32:46 +0100 (Wed, 26 Mar 2008) | 2 lines
Add an example for an RFC 822 continuation.
........
r61931 | benjamin.peterson | 2008-03-26 12:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Added help options to PDB
........
r61935 | christian.heimes | 2008-03-26 13:32:49 +0100 (Wed, 26 Mar 2008) | 1 line
Prepare integration of bytearray backport branch
........
r61938 | christian.heimes | 2008-03-26 13:50:43 +0100 (Wed, 26 Mar 2008) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61943 | georg.brandl | 2008-03-26 13:57:47 +0100 (Wed, 26 Mar 2008) | 2 lines
Fix and simplify error handling, silencing a compiler warning.
........
2008-03-26 10:45:42 -03:00
|
|
|
if __name__ == "__main__":
|
|
|
|
unittest.main()
|