(original) (raw)
import ntpath import unittest import os from test import test_support class NtPathTest(unittest.TestCase): def test_splitext(self): self.assertEqual(ntpath.splitext("foo.ext"), ('foo', '.ext')) self.assertEqual(ntpath.splitext("/foo/foo.ext"), ('/foo/foo', '.ext')) self.assertEqual(ntpath.splitext(".ext"), ('.ext', '')) self.assertEqual(ntpath.splitext("\\foo.ext\\foo"), ('\\foo.ext\\foo', '')) self.assertEqual(ntpath.splitext("foo.ext\\"), ('foo.ext\\', '')) self.assertEqual(ntpath.splitext(""), ('', '')) self.assertEqual(ntpath.splitext("foo.bar.ext"), ('foo.bar', '.ext')) self.assertEqual(ntpath.splitext("xx/foo.bar.ext"), ('xx/foo.bar', '.ext')) self.assertEqual(ntpath.splitext("xx\\foo.bar.ext"), ('xx\\foo.bar', '.ext')) self.assertEqual(ntpath.splitext("c:a/b\\c.d"), ('c:a/b\\c', '.d')) def test_splitdrive(self): self.assertEqual(ntpath.splitdrive("c:\\foo\\bar"), ('c:', '\\foo\\bar')) self.assertEqual(ntpath.splitdrive("c:/foo/bar"), ('c:', '/foo/bar')) def test_splitunc(self): self.assertEqual(ntpath.splitunc("\\\\conky\\mountpoint\\foo\\bar"), ('\\\\conky\\mountpoint', '\\foo\\bar')) self.assertEqual(ntpath.splitunc("//conky/mountpoint/foo/bar"), ('//conky/mountpoint', '/foo/bar')) def test_split(self): self.assertEqual(ntpath.split("c:\\foo\\bar"), ('c:\\foo', 'bar')) self.assertEqual(ntpath.split("\\\\conky\\mountpoint\\foo\\bar"), ('\\\\conky\\mountpoint\\foo', 'bar')) self.assertEqual(ntpath.split("c:\\"), ('c:\\', '')) self.assertEqual(ntpath.split("\\\\conky\\mountpoint\\"), ('\\\\conky\\mountpoint', '')) self.assertEqual(ntpath.split("c:/"), ('c:/', '')) self.assertEqual(ntpath.split("//conky/mountpoint/"), ('//conky/mountpoint', '')) def test_isabs(self): self.assertEqual(ntpath.isabs("c:\\"), 1) self.assertEqual(ntpath.isabs("\\\\conky\\mountpoint\\"), 1) self.assertEqual(ntpath.isabs("\\foo"), 1) self.assertEqual(ntpath.isabs("\\foo\\bar"), 1) def test_commonprefix(self): self.assertEqual(ntpath.commonprefix(["/home/swenson/spam", "/home/swen/spam"]), "/home/swen") self.assertEqual(ntpath.commonprefix(["\\home\\swen\\spam", "\\home\\swen\\eggs"]), "\\home\\swen\\") self.assertEqual(ntpath.commonprefix(["/home/swen/spam", "/home/swen/spam"]), "/home/swen/spam") def test_join(self): self.assertEqual(ntpath.join(""), '') self.assertEqual(ntpath.join("", "", ""), '') self.assertEqual(ntpath.join("a"), 'a') self.assertEqual(ntpath.join("/a"), '/a') self.assertEqual(ntpath.join("\\a"), '\\a') self.assertEqual(ntpath.join("a:"), 'a:') self.assertEqual(ntpath.join("a:", "b"), 'a:b') self.assertEqual(ntpath.join("a:", "/b"), 'a:/b') self.assertEqual(ntpath.join("a:", "\\b"), 'a:\\b') self.assertEqual(ntpath.join("a", "/b"), '/b') self.assertEqual(ntpath.join("a", "\\b"), '\\b') self.assertEqual(ntpath.join("a", "b", "c"), 'a\\b\\c') self.assertEqual(ntpath.join("a\\", "b", "c"), 'a\\b\\c') self.assertEqual(ntpath.join("a", "b\\", "c"), 'a\\b\\c') self.assertEqual(ntpath.join("a", "b", "\\c"), '\\c') self.assertEqual(ntpath.join("d:\\", "\\pleep"), 'd:\\pleep') self.assertEqual(ntpath.join("d:\\", "a", "b"), 'd:\\a\\b') self.assertEqual(ntpath.join('c:', '/a'), 'c:/a') self.assertEqual(ntpath.join('c:/', '/a'), 'c:/a') self.assertEqual(ntpath.join('c:/a', '/b'), '/b') self.assertEqual(ntpath.join('c:', 'd:/'), 'd:/') self.assertEqual(ntpath.join('c:/', 'd:/'), 'd:/') self.assertEqual(ntpath.join('c:/', 'd:/a/b'), 'd:/a/b') self.assertEqual(ntpath.join(''), '') self.assertEqual(ntpath.join('', '', '', '', ''), '') self.assertEqual(ntpath.join('a'), 'a') self.assertEqual(ntpath.join('', 'a'), 'a') self.assertEqual(ntpath.join('', '', '', '', 'a'), 'a') self.assertEqual(ntpath.join('a', ''), 'a\\') self.assertEqual(ntpath.join('a', '', '', '', ''), 'a\\') self.assertEqual(ntpath.join('a\\', ''), 'a\\') self.assertEqual(ntpath.join('a\\', '', '', '', ''), 'a\\') def test_normpath(self): self.assertEqual(ntpath.normpath('A//////././//.//B'), r'A\B') self.assertEqual(ntpath.normpath('A/./B'), r'A\B') self.assertEqual(ntpath.normpath('A/foo/../B'), r'A\B') self.assertEqual(ntpath.normpath('C:A//B'), r'C:A\B') self.assertEqual(ntpath.normpath('D:A/./B'), r'D:A\B') self.assertEqual(ntpath.normpath('e:A/foo/../B'), r'e:A\B') self.assertEqual(ntpath.normpath('C:///A//B'), r'C:\A\B') self.assertEqual(ntpath.normpath('D:///A/./B'), r'D:\A\B') self.assertEqual(ntpath.normpath('e:///A/foo/../B'), r'e:\A\B') self.assertEqual(ntpath.normpath('..'), r'..') self.assertEqual(ntpath.normpath('.'), r'.') self.assertEqual(ntpath.normpath(''), r'.') self.assertEqual(ntpath.normpath('/'), '\\') self.assertEqual(ntpath.normpath('c:/'), 'c:\\') self.assertEqual(ntpath.normpath('/../.././..'), '\\') self.assertEqual(ntpath.normpath('c:/../../..'), 'c:\\') self.assertEqual(ntpath.normpath('../.././..'), r'..\..\..') self.assertEqual(ntpath.normpath('K:../.././..'), r'K:..\..\..') self.assertEqual(ntpath.normpath('C:////a/b'), r'C:\a\b') self.assertEqual(ntpath.normpath('//machine/share//a/b'), r'\\machine\share\a\b') def test_expandvars(self): oldenv = os.environ.copy() try: os.environ.clear() os.environ["foo"] = "bar" os.environ["{foo"] = "baz1" os.environ["{foo}"] = "baz2" self.assertEqual(ntpath.expandvars("foo"), "foo") self.assertEqual(ntpath.expandvars("$foo bar"), "bar bar") self.assertEqual(ntpath.expandvars("${foo}bar"), "barbar") self.assertEqual(ntpath.expandvars("$[foo]bar"), "$[foo]bar") self.assertEqual(ntpath.expandvars("$bar bar"), "$bar bar") self.assertEqual(ntpath.expandvars("$?bar"), "$?bar") self.assertEqual(ntpath.expandvars("${foo}bar"), "barbar") self.assertEqual(ntpath.expandvars("$foo}bar"), "bar}bar") self.assertEqual(ntpath.expandvars("${foo"), "${foo") self.assertEqual(ntpath.expandvars("${{foo}}"), "baz1}") self.assertEqual(ntpath.expandvars("$foo$foo"), "barbar") self.assertEqual(ntpath.expandvars("$bar$bar"), "$bar$bar") self.assertEqual(ntpath.expandvars("%foo% bar"), "bar bar") self.assertEqual(ntpath.expandvars("%foo%bar"), "barbar") self.assertEqual(ntpath.expandvars("%foo%%foo%"), "barbar") self.assertEqual(ntpath.expandvars("%%foo%%foo%foo%"), "%foo%foobar") self.assertEqual(ntpath.expandvars("%?bar%"), "%?bar%") self.assertEqual(ntpath.expandvars("%foo%%bar"), "bar%bar") self.assertEqual(ntpath.expandvars("\'%foo%\'%bar"), "\'%foo%\'%bar") finally: os.environ.clear() os.environ.update(oldenv) def test_relpath(self): currentdir = os.path.split(os.getcwd())[-1] self.assertEqual(ntpath.relpath("a"), 'a') self.assertEqual(ntpath.relpath(os.path.abspath("a")), 'a') self.assertEqual(ntpath.relpath("a/b"), 'a\\b') self.assertEqual(ntpath.relpath("../a/b"), '..\\a\\b') self.assertEqual(ntpath.relpath("a", "../b"), '..\\'+currentdir+'\\a') self.assertEqual(ntpath.relpath("a/b", "../c"), '..\\'+currentdir+'\\a\\b') self.assertEqual(ntpath.relpath("a", "b/c"), '..\\..\\a') self.assertEqual(ntpath.relpath("//conky/mountpoint/a", "//conky/mountpoint/b/c"), '..\\..\\a') self.assertEqual(ntpath.relpath("a", "a"), '.') # 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: nt = None if nt is not None: def test_nt_abspath(self): self.assertEqual(ntpath.abspath("C:\\"), "C:\\") def test_main(): test_support.run_unittest(NtPathTest) if __name__=="__main__": test_main()