mirror of
https://github.com/python/cpython.git
synced 2026-05-18 18:33:57 -04:00
6733bed57e
All changes are mirrored to the underlying os.environ dict, but rolled back on exit from the with block.
184 lines
8.0 KiB
Python
184 lines
8.0 KiB
Python
import ntpath
|
|
import os
|
|
from test.test_support import verbose, TestFailed
|
|
import test.test_support as test_support
|
|
import unittest
|
|
|
|
|
|
def tester(fn, wantResult):
|
|
fn = fn.replace("\\", "\\\\")
|
|
gotResult = eval(fn)
|
|
if wantResult != gotResult:
|
|
raise TestFailed, "%s should return: %s but returned: %s" \
|
|
%(str(fn), str(wantResult), str(gotResult))
|
|
|
|
|
|
class TestNtpath(unittest.TestCase):
|
|
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):
|
|
tester('ntpath.splitdrive("c:\\foo\\bar")',
|
|
('c:', '\\foo\\bar'))
|
|
tester('ntpath.splitdrive("c:/foo/bar")',
|
|
('c:', '/foo/bar'))
|
|
|
|
def test_splitunc(self):
|
|
tester('ntpath.splitunc("\\\\conky\\mountpoint\\foo\\bar")',
|
|
('\\\\conky\\mountpoint', '\\foo\\bar'))
|
|
tester('ntpath.splitunc("//conky/mountpoint/foo/bar")',
|
|
('//conky/mountpoint', '/foo/bar'))
|
|
|
|
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\\")',
|
|
('\\\\conky\\mountpoint', ''))
|
|
|
|
tester('ntpath.split("c:/")', ('c:/', ''))
|
|
tester('ntpath.split("//conky/mountpoint/")', ('//conky/mountpoint', ''))
|
|
|
|
def test_isabs(self):
|
|
tester('ntpath.isabs("c:\\")', 1)
|
|
tester('ntpath.isabs("\\\\conky\\mountpoint\\")', 1)
|
|
tester('ntpath.isabs("\\foo")', 1)
|
|
tester('ntpath.isabs("\\foo\\bar")', 1)
|
|
|
|
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")', 'a:/b')
|
|
tester('ntpath.join("a:", "\\b")', 'a:\\b')
|
|
tester('ntpath.join("a", "/b")', '/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')
|
|
tester('ntpath.join("a", "b", "\\c")', '\\c')
|
|
tester('ntpath.join("d:\\", "\\pleep")', 'd:\\pleep')
|
|
tester('ntpath.join("d:\\", "a", "b")', 'd:\\a\\b')
|
|
tester("ntpath.join('c:', '/a')", 'c:/a')
|
|
tester("ntpath.join('c:/', '/a')", 'c:/a')
|
|
tester("ntpath.join('c:/a', '/b')", '/b')
|
|
tester("ntpath.join('c:', 'd:/')", 'd:/')
|
|
tester("ntpath.join('c:/', 'd:/')", 'd:/')
|
|
tester("ntpath.join('c:/', 'd:/a/b')", 'd:/a/b')
|
|
|
|
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', '', '', '', '')", 'a\\')
|
|
tester("ntpath.join('a\\', '')", 'a\\')
|
|
tester("ntpath.join('a\\', '', '', '', '')", 'a\\')
|
|
|
|
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')
|
|
|
|
def test_expandvars(self):
|
|
with test_support.EnvironmentVarGuard() as env:
|
|
env.clear()
|
|
env["foo"] = "bar"
|
|
env["{foo"] = "baz1"
|
|
env["{foo}"] = "baz2"
|
|
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")', "barbar")
|
|
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")
|
|
|
|
def test_abspath(self):
|
|
# ntpath.abspath() can only be used on a system with the "nt" module
|
|
# (reasonably), so we protect this test with "import nt". This allows
|
|
# the rest of the tests for the ntpath module to be run to completion
|
|
# on any platform, since most of the module is intended to be usable
|
|
# from any platform.
|
|
try:
|
|
import nt
|
|
except ImportError:
|
|
pass
|
|
else:
|
|
tester('ntpath.abspath("C:\\")', "C:\\")
|
|
|
|
def test_relpath(self):
|
|
currentdir = os.path.split(os.getcwd())[-1]
|
|
tester('ntpath.relpath("a")', 'a')
|
|
tester('ntpath.relpath(os.path.abspath("a"))', 'a')
|
|
tester('ntpath.relpath("a/b")', 'a\\b')
|
|
tester('ntpath.relpath("../a/b")', '..\\a\\b')
|
|
tester('ntpath.relpath("a", "../b")', '..\\'+currentdir+'\\a')
|
|
tester('ntpath.relpath("a/b", "../c")', '..\\'+currentdir+'\\a\\b')
|
|
tester('ntpath.relpath("a", "b/c")', '..\\..\\a')
|
|
tester('ntpath.relpath("//conky/mountpoint/a", "//conky/mountpoint/b/c")', '..\\..\\a')
|
|
tester('ntpath.relpath("a", "a")', '.')
|
|
|
|
|
|
def test_main():
|
|
test_support.run_unittest(TestNtpath)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|