1 | import ntpath
|
---|
2 | import os
|
---|
3 | from test.test_support import TestFailed
|
---|
4 | from test import test_support, test_genericpath
|
---|
5 | import unittest
|
---|
6 |
|
---|
7 |
|
---|
8 | def tester(fn, wantResult):
|
---|
9 | fn = fn.replace("\\", "\\\\")
|
---|
10 | gotResult = eval(fn)
|
---|
11 | if wantResult != gotResult:
|
---|
12 | raise TestFailed, "%s should return: %s but returned: %s" \
|
---|
13 | %(str(fn), str(wantResult), str(gotResult))
|
---|
14 |
|
---|
15 |
|
---|
16 | class TestNtpath(unittest.TestCase):
|
---|
17 | def test_splitext(self):
|
---|
18 | tester('ntpath.splitext("foo.ext")', ('foo', '.ext'))
|
---|
19 | tester('ntpath.splitext("/foo/foo.ext")', ('/foo/foo', '.ext'))
|
---|
20 | tester('ntpath.splitext(".ext")', ('.ext', ''))
|
---|
21 | tester('ntpath.splitext("\\foo.ext\\foo")', ('\\foo.ext\\foo', ''))
|
---|
22 | tester('ntpath.splitext("foo.ext\\")', ('foo.ext\\', ''))
|
---|
23 | tester('ntpath.splitext("")', ('', ''))
|
---|
24 | tester('ntpath.splitext("foo.bar.ext")', ('foo.bar', '.ext'))
|
---|
25 | tester('ntpath.splitext("xx/foo.bar.ext")', ('xx/foo.bar', '.ext'))
|
---|
26 | tester('ntpath.splitext("xx\\foo.bar.ext")', ('xx\\foo.bar', '.ext'))
|
---|
27 | tester('ntpath.splitext("c:a/b\\c.d")', ('c:a/b\\c', '.d'))
|
---|
28 |
|
---|
29 | def test_splitdrive(self):
|
---|
30 | tester('ntpath.splitdrive("c:\\foo\\bar")',
|
---|
31 | ('c:', '\\foo\\bar'))
|
---|
32 | tester('ntpath.splitdrive("c:/foo/bar")',
|
---|
33 | ('c:', '/foo/bar'))
|
---|
34 |
|
---|
35 | def test_splitunc(self):
|
---|
36 | tester('ntpath.splitunc("\\\\conky\\mountpoint\\foo\\bar")',
|
---|
37 | ('\\\\conky\\mountpoint', '\\foo\\bar'))
|
---|
38 | tester('ntpath.splitunc("//conky/mountpoint/foo/bar")',
|
---|
39 | ('//conky/mountpoint', '/foo/bar'))
|
---|
40 |
|
---|
41 | def test_split(self):
|
---|
42 | tester('ntpath.split("c:\\foo\\bar")', ('c:\\foo', 'bar'))
|
---|
43 | tester('ntpath.split("\\\\conky\\mountpoint\\foo\\bar")',
|
---|
44 | ('\\\\conky\\mountpoint\\foo', 'bar'))
|
---|
45 |
|
---|
46 | tester('ntpath.split("c:\\")', ('c:\\', ''))
|
---|
47 | tester('ntpath.split("\\\\conky\\mountpoint\\")',
|
---|
48 | ('\\\\conky\\mountpoint', ''))
|
---|
49 |
|
---|
50 | tester('ntpath.split("c:/")', ('c:/', ''))
|
---|
51 | tester('ntpath.split("//conky/mountpoint/")', ('//conky/mountpoint', ''))
|
---|
52 |
|
---|
53 | def test_isabs(self):
|
---|
54 | tester('ntpath.isabs("c:\\")', 1)
|
---|
55 | tester('ntpath.isabs("\\\\conky\\mountpoint\\")', 1)
|
---|
56 | tester('ntpath.isabs("\\foo")', 1)
|
---|
57 | tester('ntpath.isabs("\\foo\\bar")', 1)
|
---|
58 |
|
---|
59 | def test_commonprefix(self):
|
---|
60 | tester('ntpath.commonprefix(["/home/swenson/spam", "/home/swen/spam"])',
|
---|
61 | "/home/swen")
|
---|
62 | tester('ntpath.commonprefix(["\\home\\swen\\spam", "\\home\\swen\\eggs"])',
|
---|
63 | "\\home\\swen\\")
|
---|
64 | tester('ntpath.commonprefix(["/home/swen/spam", "/home/swen/spam"])',
|
---|
65 | "/home/swen/spam")
|
---|
66 |
|
---|
67 | def test_join(self):
|
---|
68 | tester('ntpath.join("")', '')
|
---|
69 | tester('ntpath.join("", "", "")', '')
|
---|
70 | tester('ntpath.join("a")', 'a')
|
---|
71 | tester('ntpath.join("/a")', '/a')
|
---|
72 | tester('ntpath.join("\\a")', '\\a')
|
---|
73 | tester('ntpath.join("a:")', 'a:')
|
---|
74 | tester('ntpath.join("a:", "b")', 'a:b')
|
---|
75 | tester('ntpath.join("a:", "/b")', 'a:/b')
|
---|
76 | tester('ntpath.join("a:", "\\b")', 'a:\\b')
|
---|
77 | tester('ntpath.join("a", "/b")', '/b')
|
---|
78 | tester('ntpath.join("a", "\\b")', '\\b')
|
---|
79 | tester('ntpath.join("a", "b", "c")', 'a\\b\\c')
|
---|
80 | tester('ntpath.join("a\\", "b", "c")', 'a\\b\\c')
|
---|
81 | tester('ntpath.join("a", "b\\", "c")', 'a\\b\\c')
|
---|
82 | tester('ntpath.join("a", "b", "\\c")', '\\c')
|
---|
83 | tester('ntpath.join("d:\\", "\\pleep")', 'd:\\pleep')
|
---|
84 | tester('ntpath.join("d:\\", "a", "b")', 'd:\\a\\b')
|
---|
85 | tester("ntpath.join('c:', '/a')", 'c:/a')
|
---|
86 | tester("ntpath.join('c:/', '/a')", 'c:/a')
|
---|
87 | tester("ntpath.join('c:/a', '/b')", '/b')
|
---|
88 | tester("ntpath.join('c:', 'd:/')", 'd:/')
|
---|
89 | tester("ntpath.join('c:/', 'd:/')", 'd:/')
|
---|
90 | tester("ntpath.join('c:/', 'd:/a/b')", 'd:/a/b')
|
---|
91 |
|
---|
92 | tester("ntpath.join('')", '')
|
---|
93 | tester("ntpath.join('', '', '', '', '')", '')
|
---|
94 | tester("ntpath.join('a')", 'a')
|
---|
95 | tester("ntpath.join('', 'a')", 'a')
|
---|
96 | tester("ntpath.join('', '', '', '', 'a')", 'a')
|
---|
97 | tester("ntpath.join('a', '')", 'a\\')
|
---|
98 | tester("ntpath.join('a', '', '', '', '')", 'a\\')
|
---|
99 | tester("ntpath.join('a\\', '')", 'a\\')
|
---|
100 | tester("ntpath.join('a\\', '', '', '', '')", 'a\\')
|
---|
101 |
|
---|
102 | def test_normpath(self):
|
---|
103 | tester("ntpath.normpath('A//////././//.//B')", r'A\B')
|
---|
104 | tester("ntpath.normpath('A/./B')", r'A\B')
|
---|
105 | tester("ntpath.normpath('A/foo/../B')", r'A\B')
|
---|
106 | tester("ntpath.normpath('C:A//B')", r'C:A\B')
|
---|
107 | tester("ntpath.normpath('D:A/./B')", r'D:A\B')
|
---|
108 | tester("ntpath.normpath('e:A/foo/../B')", r'e:A\B')
|
---|
109 |
|
---|
110 | tester("ntpath.normpath('C:///A//B')", r'C:\A\B')
|
---|
111 | tester("ntpath.normpath('D:///A/./B')", r'D:\A\B')
|
---|
112 | tester("ntpath.normpath('e:///A/foo/../B')", r'e:\A\B')
|
---|
113 |
|
---|
114 | tester("ntpath.normpath('..')", r'..')
|
---|
115 | tester("ntpath.normpath('.')", r'.')
|
---|
116 | tester("ntpath.normpath('')", r'.')
|
---|
117 | tester("ntpath.normpath('/')", '\\')
|
---|
118 | tester("ntpath.normpath('c:/')", 'c:\\')
|
---|
119 | tester("ntpath.normpath('/../.././..')", '\\')
|
---|
120 | tester("ntpath.normpath('c:/../../..')", 'c:\\')
|
---|
121 | tester("ntpath.normpath('../.././..')", r'..\..\..')
|
---|
122 | tester("ntpath.normpath('K:../.././..')", r'K:..\..\..')
|
---|
123 | tester("ntpath.normpath('C:////a/b')", r'C:\a\b')
|
---|
124 | tester("ntpath.normpath('//machine/share//a/b')", r'\\machine\share\a\b')
|
---|
125 |
|
---|
126 | tester("ntpath.normpath('\\\\.\\NUL')", r'\\.\NUL')
|
---|
127 | tester("ntpath.normpath('\\\\?\\D:/XY\\Z')", r'\\?\D:/XY\Z')
|
---|
128 |
|
---|
129 | def test_expandvars(self):
|
---|
130 | with test_support.EnvironmentVarGuard() as env:
|
---|
131 | env.clear()
|
---|
132 | env["foo"] = "bar"
|
---|
133 | env["{foo"] = "baz1"
|
---|
134 | env["{foo}"] = "baz2"
|
---|
135 | tester('ntpath.expandvars("foo")', "foo")
|
---|
136 | tester('ntpath.expandvars("$foo bar")', "bar bar")
|
---|
137 | tester('ntpath.expandvars("${foo}bar")', "barbar")
|
---|
138 | tester('ntpath.expandvars("$[foo]bar")', "$[foo]bar")
|
---|
139 | tester('ntpath.expandvars("$bar bar")', "$bar bar")
|
---|
140 | tester('ntpath.expandvars("$?bar")', "$?bar")
|
---|
141 | tester('ntpath.expandvars("${foo}bar")', "barbar")
|
---|
142 | tester('ntpath.expandvars("$foo}bar")', "bar}bar")
|
---|
143 | tester('ntpath.expandvars("${foo")', "${foo")
|
---|
144 | tester('ntpath.expandvars("${{foo}}")', "baz1}")
|
---|
145 | tester('ntpath.expandvars("$foo$foo")', "barbar")
|
---|
146 | tester('ntpath.expandvars("$bar$bar")', "$bar$bar")
|
---|
147 | tester('ntpath.expandvars("%foo% bar")', "bar bar")
|
---|
148 | tester('ntpath.expandvars("%foo%bar")', "barbar")
|
---|
149 | tester('ntpath.expandvars("%foo%%foo%")', "barbar")
|
---|
150 | tester('ntpath.expandvars("%%foo%%foo%foo%")', "%foo%foobar")
|
---|
151 | tester('ntpath.expandvars("%?bar%")', "%?bar%")
|
---|
152 | tester('ntpath.expandvars("%foo%%bar")', "bar%bar")
|
---|
153 | tester('ntpath.expandvars("\'%foo%\'%bar")', "\'%foo%\'%bar")
|
---|
154 |
|
---|
155 | def test_abspath(self):
|
---|
156 | # ntpath.abspath() can only be used on a system with the "nt" module
|
---|
157 | # (reasonably), so we protect this test with "import nt". This allows
|
---|
158 | # the rest of the tests for the ntpath module to be run to completion
|
---|
159 | # on any platform, since most of the module is intended to be usable
|
---|
160 | # from any platform.
|
---|
161 | # XXX this needs more tests
|
---|
162 | try:
|
---|
163 | import nt
|
---|
164 | except ImportError:
|
---|
165 | # check that the function is there even if we are not on Windows
|
---|
166 | ntpath.abspath
|
---|
167 | else:
|
---|
168 | tester('ntpath.abspath("C:\\")', "C:\\")
|
---|
169 |
|
---|
170 | def test_relpath(self):
|
---|
171 | currentdir = os.path.split(os.getcwd())[-1]
|
---|
172 | tester('ntpath.relpath("a")', 'a')
|
---|
173 | tester('ntpath.relpath(os.path.abspath("a"))', 'a')
|
---|
174 | tester('ntpath.relpath("a/b")', 'a\\b')
|
---|
175 | tester('ntpath.relpath("../a/b")', '..\\a\\b')
|
---|
176 | tester('ntpath.relpath("a", "../b")', '..\\'+currentdir+'\\a')
|
---|
177 | tester('ntpath.relpath("a/b", "../c")', '..\\'+currentdir+'\\a\\b')
|
---|
178 | tester('ntpath.relpath("a", "b/c")', '..\\..\\a')
|
---|
179 | tester('ntpath.relpath("//conky/mountpoint/a", "//conky/mountpoint/b/c")', '..\\..\\a')
|
---|
180 | tester('ntpath.relpath("a", "a")', '.')
|
---|
181 | tester('ntpath.relpath("/foo/bar/bat", "/x/y/z")', '..\\..\\..\\foo\\bar\\bat')
|
---|
182 | tester('ntpath.relpath("/foo/bar/bat", "/foo/bar")', 'bat')
|
---|
183 | tester('ntpath.relpath("/foo/bar/bat", "/")', 'foo\\bar\\bat')
|
---|
184 | tester('ntpath.relpath("/", "/foo/bar/bat")', '..\\..\\..')
|
---|
185 | tester('ntpath.relpath("/foo/bar/bat", "/x")', '..\\foo\\bar\\bat')
|
---|
186 | tester('ntpath.relpath("/x", "/foo/bar/bat")', '..\\..\\..\\x')
|
---|
187 | tester('ntpath.relpath("/", "/")', '.')
|
---|
188 | tester('ntpath.relpath("/a", "/a")', '.')
|
---|
189 | tester('ntpath.relpath("/a/b", "/a/b")', '.')
|
---|
190 | tester('ntpath.relpath("c:/foo", "C:/FOO")', '.')
|
---|
191 |
|
---|
192 |
|
---|
193 | class NtCommonTest(test_genericpath.CommonTest):
|
---|
194 | pathmodule = ntpath
|
---|
195 | attributes = ['relpath', 'splitunc']
|
---|
196 |
|
---|
197 |
|
---|
198 | def test_main():
|
---|
199 | test_support.run_unittest(TestNtpath, NtCommonTest)
|
---|
200 |
|
---|
201 |
|
---|
202 | if __name__ == "__main__":
|
---|
203 | unittest.main()
|
---|