blob: e9e1d715ef8f8db582e6a5063d903f7e6f31295a [file] [log] [blame]
Guido van Rossumead9d8d1999-02-03 17:21:21 +00001import ntpath
Mark Hammond673c6cf2000-08-14 06:21:26 +00002import os
Brian Curtin13a0db52010-09-06 19:46:17 +00003import sys
Victor Stinner1ab6c2d2011-11-15 22:27:41 +01004import unittest
5import warnings
Georg Brandl1b37e872010-03-14 10:45:50 +00006from test.support import TestFailed
Florent Xiclunac9c79782010-03-08 12:24:53 +00007from test import support, test_genericpath
Brian Curtin62857742010-09-06 17:07:27 +00008from tempfile import TemporaryFile
Guido van Rossumead9d8d1999-02-03 17:21:21 +00009
Guido van Rossumead9d8d1999-02-03 17:21:21 +000010
11def tester(fn, wantResult):
Eric S. Raymondfc170b12001-02-09 11:51:27 +000012 fn = fn.replace("\\", "\\\\")
Fred Drake004d5e62000-10-23 17:22:08 +000013 gotResult = eval(fn)
14 if wantResult != gotResult:
Christian Heimesf6cd9672008-03-26 13:45:42 +000015 raise TestFailed("%s should return: %s but returned: %s" \
16 %(str(fn), str(wantResult), str(gotResult)))
Tim Peters6578dc92002-12-24 18:31:27 +000017
Amaury Forgeot d'Arcc72ef8b2008-10-03 18:38:26 +000018 # then with bytes
19 fn = fn.replace("('", "(b'")
20 fn = fn.replace('("', '(b"')
21 fn = fn.replace("['", "[b'")
22 fn = fn.replace('["', '[b"')
23 fn = fn.replace(", '", ", b'")
24 fn = fn.replace(', "', ', b"')
Serhiy Storchakadbb10192014-02-13 10:13:53 +020025 fn = os.fsencode(fn).decode('latin1')
26 fn = fn.encode('ascii', 'backslashreplace').decode('ascii')
Victor Stinner1ab6c2d2011-11-15 22:27:41 +010027 with warnings.catch_warnings():
28 warnings.simplefilter("ignore", DeprecationWarning)
29 gotResult = eval(fn)
Amaury Forgeot d'Arcc72ef8b2008-10-03 18:38:26 +000030 if isinstance(wantResult, str):
Serhiy Storchakadbb10192014-02-13 10:13:53 +020031 wantResult = os.fsencode(wantResult)
Amaury Forgeot d'Arcc72ef8b2008-10-03 18:38:26 +000032 elif isinstance(wantResult, tuple):
Serhiy Storchakadbb10192014-02-13 10:13:53 +020033 wantResult = tuple(os.fsencode(r) for r in wantResult)
Amaury Forgeot d'Arcc72ef8b2008-10-03 18:38:26 +000034
35 gotResult = eval(fn)
36 if wantResult != gotResult:
37 raise TestFailed("%s should return: %s but returned: %s" \
38 %(str(fn), str(wantResult), repr(gotResult)))
Guido van Rossumead9d8d1999-02-03 17:21:21 +000039
Mark Hammond5a607a32009-05-06 08:04:54 +000040
Christian Heimesf6cd9672008-03-26 13:45:42 +000041class TestNtpath(unittest.TestCase):
42 def test_splitext(self):
43 tester('ntpath.splitext("foo.ext")', ('foo', '.ext'))
44 tester('ntpath.splitext("/foo/foo.ext")', ('/foo/foo', '.ext'))
45 tester('ntpath.splitext(".ext")', ('.ext', ''))
46 tester('ntpath.splitext("\\foo.ext\\foo")', ('\\foo.ext\\foo', ''))
47 tester('ntpath.splitext("foo.ext\\")', ('foo.ext\\', ''))
48 tester('ntpath.splitext("")', ('', ''))
49 tester('ntpath.splitext("foo.bar.ext")', ('foo.bar', '.ext'))
50 tester('ntpath.splitext("xx/foo.bar.ext")', ('xx/foo.bar', '.ext'))
51 tester('ntpath.splitext("xx\\foo.bar.ext")', ('xx\\foo.bar', '.ext'))
52 tester('ntpath.splitext("c:a/b\\c.d")', ('c:a/b\\c', '.d'))
Guido van Rossumead9d8d1999-02-03 17:21:21 +000053
Christian Heimesf6cd9672008-03-26 13:45:42 +000054 def test_splitdrive(self):
55 tester('ntpath.splitdrive("c:\\foo\\bar")',
56 ('c:', '\\foo\\bar'))
57 tester('ntpath.splitdrive("c:/foo/bar")',
58 ('c:', '/foo/bar'))
Mark Hammond5a607a32009-05-06 08:04:54 +000059 tester('ntpath.splitdrive("\\\\conky\\mountpoint\\foo\\bar")',
Christian Heimesf6cd9672008-03-26 13:45:42 +000060 ('\\\\conky\\mountpoint', '\\foo\\bar'))
Mark Hammond5a607a32009-05-06 08:04:54 +000061 tester('ntpath.splitdrive("//conky/mountpoint/foo/bar")',
Christian Heimesf6cd9672008-03-26 13:45:42 +000062 ('//conky/mountpoint', '/foo/bar'))
Mark Hammond5a607a32009-05-06 08:04:54 +000063 tester('ntpath.splitdrive("\\\\\\conky\\mountpoint\\foo\\bar")',
64 ('', '\\\\\\conky\\mountpoint\\foo\\bar'))
65 tester('ntpath.splitdrive("///conky/mountpoint/foo/bar")',
66 ('', '///conky/mountpoint/foo/bar'))
67 tester('ntpath.splitdrive("\\\\conky\\\\mountpoint\\foo\\bar")',
68 ('', '\\\\conky\\\\mountpoint\\foo\\bar'))
69 tester('ntpath.splitdrive("//conky//mountpoint/foo/bar")',
70 ('', '//conky//mountpoint/foo/bar'))
Serhiy Storchaka3d7e1152013-12-16 14:34:55 +020071 # Issue #19911: UNC part containing U+0130
72 self.assertEqual(ntpath.splitdrive('//conky/MOUNTPOİNT/foo/bar'),
73 ('//conky/MOUNTPOİNT', '/foo/bar'))
Guido van Rossumead9d8d1999-02-03 17:21:21 +000074
Serhiy Storchaka593568b2013-12-16 15:13:28 +020075 def test_splitunc(self):
76 with self.assertWarns(DeprecationWarning):
77 ntpath.splitunc('')
78 with support.check_warnings(('', DeprecationWarning)):
79 tester('ntpath.splitunc("c:\\foo\\bar")',
80 ('', 'c:\\foo\\bar'))
81 tester('ntpath.splitunc("c:/foo/bar")',
82 ('', 'c:/foo/bar'))
83 tester('ntpath.splitunc("\\\\conky\\mountpoint\\foo\\bar")',
84 ('\\\\conky\\mountpoint', '\\foo\\bar'))
85 tester('ntpath.splitunc("//conky/mountpoint/foo/bar")',
86 ('//conky/mountpoint', '/foo/bar'))
87 tester('ntpath.splitunc("\\\\\\conky\\mountpoint\\foo\\bar")',
88 ('', '\\\\\\conky\\mountpoint\\foo\\bar'))
89 tester('ntpath.splitunc("///conky/mountpoint/foo/bar")',
90 ('', '///conky/mountpoint/foo/bar'))
91 tester('ntpath.splitunc("\\\\conky\\\\mountpoint\\foo\\bar")',
92 ('', '\\\\conky\\\\mountpoint\\foo\\bar'))
93 tester('ntpath.splitunc("//conky//mountpoint/foo/bar")',
94 ('', '//conky//mountpoint/foo/bar'))
95 self.assertEqual(ntpath.splitunc('//conky/MOUNTPOİNT/foo/bar'),
96 ('//conky/MOUNTPOİNT', '/foo/bar'))
97
Christian Heimesf6cd9672008-03-26 13:45:42 +000098 def test_split(self):
99 tester('ntpath.split("c:\\foo\\bar")', ('c:\\foo', 'bar'))
100 tester('ntpath.split("\\\\conky\\mountpoint\\foo\\bar")',
101 ('\\\\conky\\mountpoint\\foo', 'bar'))
Guido van Rossumead9d8d1999-02-03 17:21:21 +0000102
Christian Heimesf6cd9672008-03-26 13:45:42 +0000103 tester('ntpath.split("c:\\")', ('c:\\', ''))
104 tester('ntpath.split("\\\\conky\\mountpoint\\")',
Mark Hammond5a607a32009-05-06 08:04:54 +0000105 ('\\\\conky\\mountpoint\\', ''))
Guido van Rossumead9d8d1999-02-03 17:21:21 +0000106
Christian Heimesf6cd9672008-03-26 13:45:42 +0000107 tester('ntpath.split("c:/")', ('c:/', ''))
Mark Hammond5a607a32009-05-06 08:04:54 +0000108 tester('ntpath.split("//conky/mountpoint/")', ('//conky/mountpoint/', ''))
Mark Hammond673c6cf2000-08-14 06:21:26 +0000109
Christian Heimesf6cd9672008-03-26 13:45:42 +0000110 def test_isabs(self):
111 tester('ntpath.isabs("c:\\")', 1)
112 tester('ntpath.isabs("\\\\conky\\mountpoint\\")', 1)
113 tester('ntpath.isabs("\\foo")', 1)
114 tester('ntpath.isabs("\\foo\\bar")', 1)
Tim Petersd4f7f602001-07-19 19:11:41 +0000115
Christian Heimesf6cd9672008-03-26 13:45:42 +0000116 def test_commonprefix(self):
117 tester('ntpath.commonprefix(["/home/swenson/spam", "/home/swen/spam"])',
118 "/home/swen")
119 tester('ntpath.commonprefix(["\\home\\swen\\spam", "\\home\\swen\\eggs"])',
120 "\\home\\swen\\")
121 tester('ntpath.commonprefix(["/home/swen/spam", "/home/swen/spam"])',
122 "/home/swen/spam")
Tim Peters6a3e5f12001-11-05 21:25:02 +0000123
Christian Heimesf6cd9672008-03-26 13:45:42 +0000124 def test_join(self):
125 tester('ntpath.join("")', '')
126 tester('ntpath.join("", "", "")', '')
127 tester('ntpath.join("a")', 'a')
128 tester('ntpath.join("/a")', '/a')
129 tester('ntpath.join("\\a")', '\\a')
130 tester('ntpath.join("a:")', 'a:')
Christian Heimesf6cd9672008-03-26 13:45:42 +0000131 tester('ntpath.join("a:", "\\b")', 'a:\\b')
Christian Heimesf6cd9672008-03-26 13:45:42 +0000132 tester('ntpath.join("a", "\\b")', '\\b')
133 tester('ntpath.join("a", "b", "c")', 'a\\b\\c')
134 tester('ntpath.join("a\\", "b", "c")', 'a\\b\\c')
135 tester('ntpath.join("a", "b\\", "c")', 'a\\b\\c')
136 tester('ntpath.join("a", "b", "\\c")', '\\c')
137 tester('ntpath.join("d:\\", "\\pleep")', 'd:\\pleep')
138 tester('ntpath.join("d:\\", "a", "b")', 'd:\\a\\b')
Tim Peters54a14a32001-08-30 22:05:26 +0000139
Christian Heimesf6cd9672008-03-26 13:45:42 +0000140 tester("ntpath.join('', 'a')", 'a')
141 tester("ntpath.join('', '', '', '', 'a')", 'a')
142 tester("ntpath.join('a', '')", 'a\\')
143 tester("ntpath.join('a', '', '', '', '')", 'a\\')
144 tester("ntpath.join('a\\', '')", 'a\\')
145 tester("ntpath.join('a\\', '', '', '', '')", 'a\\')
Serhiy Storchakac369c2c2014-01-27 23:15:14 +0200146 tester("ntpath.join('a/', '')", 'a/')
Tim Peters54a14a32001-08-30 22:05:26 +0000147
Serhiy Storchakac369c2c2014-01-27 23:15:14 +0200148 tester("ntpath.join('a/b', 'x/y')", 'a/b\\x/y')
149 tester("ntpath.join('/a/b', 'x/y')", '/a/b\\x/y')
150 tester("ntpath.join('/a/b/', 'x/y')", '/a/b/x/y')
151 tester("ntpath.join('c:', 'x/y')", 'c:x/y')
152 tester("ntpath.join('c:a/b', 'x/y')", 'c:a/b\\x/y')
153 tester("ntpath.join('c:a/b/', 'x/y')", 'c:a/b/x/y')
154 tester("ntpath.join('c:/', 'x/y')", 'c:/x/y')
155 tester("ntpath.join('c:/a/b', 'x/y')", 'c:/a/b\\x/y')
156 tester("ntpath.join('c:/a/b/', 'x/y')", 'c:/a/b/x/y')
157 tester("ntpath.join('//computer/share', 'x/y')", '//computer/share\\x/y')
158 tester("ntpath.join('//computer/share/', 'x/y')", '//computer/share/x/y')
159 tester("ntpath.join('//computer/share/a/b', 'x/y')", '//computer/share/a/b\\x/y')
Mark Hammond5a607a32009-05-06 08:04:54 +0000160
Serhiy Storchakac369c2c2014-01-27 23:15:14 +0200161 tester("ntpath.join('a/b', '/x/y')", '/x/y')
162 tester("ntpath.join('/a/b', '/x/y')", '/x/y')
163 tester("ntpath.join('c:', '/x/y')", 'c:/x/y')
164 tester("ntpath.join('c:a/b', '/x/y')", 'c:/x/y')
165 tester("ntpath.join('c:/', '/x/y')", 'c:/x/y')
166 tester("ntpath.join('c:/a/b', '/x/y')", 'c:/x/y')
167 tester("ntpath.join('//computer/share', '/x/y')", '//computer/share/x/y')
168 tester("ntpath.join('//computer/share/', '/x/y')", '//computer/share/x/y')
169 tester("ntpath.join('//computer/share/a', '/x/y')", '//computer/share/x/y')
170
171 tester("ntpath.join('c:', 'C:x/y')", 'C:x/y')
172 tester("ntpath.join('c:a/b', 'C:x/y')", 'C:a/b\\x/y')
173 tester("ntpath.join('c:/', 'C:x/y')", 'C:/x/y')
174 tester("ntpath.join('c:/a/b', 'C:x/y')", 'C:/a/b\\x/y')
175
176 for x in ('', 'a/b', '/a/b', 'c:', 'c:a/b', 'c:/', 'c:/a/b',
177 '//computer/share', '//computer/share/', '//computer/share/a/b'):
178 for y in ('d:', 'd:x/y', 'd:/', 'd:/x/y',
179 '//machine/common', '//machine/common/', '//machine/common/x/y'):
180 tester("ntpath.join(%r, %r)" % (x, y), y)
Mark Hammond5a607a32009-05-06 08:04:54 +0000181
182 tester("ntpath.join('\\\\computer\\share\\', 'a', 'b')", '\\\\computer\\share\\a\\b')
183 tester("ntpath.join('\\\\computer\\share', 'a', 'b')", '\\\\computer\\share\\a\\b')
184 tester("ntpath.join('\\\\computer\\share', 'a\\b')", '\\\\computer\\share\\a\\b')
185 tester("ntpath.join('//computer/share/', 'a', 'b')", '//computer/share/a\\b')
186 tester("ntpath.join('//computer/share', 'a', 'b')", '//computer/share\\a\\b')
187 tester("ntpath.join('//computer/share', 'a/b')", '//computer/share\\a/b')
188
Christian Heimesf6cd9672008-03-26 13:45:42 +0000189 def test_normpath(self):
190 tester("ntpath.normpath('A//////././//.//B')", r'A\B')
191 tester("ntpath.normpath('A/./B')", r'A\B')
192 tester("ntpath.normpath('A/foo/../B')", r'A\B')
193 tester("ntpath.normpath('C:A//B')", r'C:A\B')
194 tester("ntpath.normpath('D:A/./B')", r'D:A\B')
195 tester("ntpath.normpath('e:A/foo/../B')", r'e:A\B')
Tim Peters54a14a32001-08-30 22:05:26 +0000196
Christian Heimesf6cd9672008-03-26 13:45:42 +0000197 tester("ntpath.normpath('C:///A//B')", r'C:\A\B')
198 tester("ntpath.normpath('D:///A/./B')", r'D:\A\B')
199 tester("ntpath.normpath('e:///A/foo/../B')", r'e:\A\B')
Thomas Woutersb2137042007-02-01 18:02:27 +0000200
Christian Heimesf6cd9672008-03-26 13:45:42 +0000201 tester("ntpath.normpath('..')", r'..')
202 tester("ntpath.normpath('.')", r'.')
203 tester("ntpath.normpath('')", r'.')
204 tester("ntpath.normpath('/')", '\\')
205 tester("ntpath.normpath('c:/')", 'c:\\')
206 tester("ntpath.normpath('/../.././..')", '\\')
207 tester("ntpath.normpath('c:/../../..')", 'c:\\')
208 tester("ntpath.normpath('../.././..')", r'..\..\..')
209 tester("ntpath.normpath('K:../.././..')", r'K:..\..\..')
210 tester("ntpath.normpath('C:////a/b')", r'C:\a\b')
211 tester("ntpath.normpath('//machine/share//a/b')", r'\\machine\share\a\b')
Fred Drake5e997312002-01-15 03:46:43 +0000212
Georg Brandlcfb68212010-07-31 21:40:15 +0000213 tester("ntpath.normpath('\\\\.\\NUL')", r'\\.\NUL')
214 tester("ntpath.normpath('\\\\?\\D:/XY\\Z')", r'\\?\D:/XY\Z')
215
Christian Heimesf6cd9672008-03-26 13:45:42 +0000216 def test_expandvars(self):
Walter Dörwald155374d2009-05-01 19:58:58 +0000217 with support.EnvironmentVarGuard() as env:
218 env.clear()
219 env["foo"] = "bar"
220 env["{foo"] = "baz1"
221 env["{foo}"] = "baz2"
Christian Heimesf6cd9672008-03-26 13:45:42 +0000222 tester('ntpath.expandvars("foo")', "foo")
223 tester('ntpath.expandvars("$foo bar")', "bar bar")
224 tester('ntpath.expandvars("${foo}bar")', "barbar")
225 tester('ntpath.expandvars("$[foo]bar")', "$[foo]bar")
226 tester('ntpath.expandvars("$bar bar")', "$bar bar")
227 tester('ntpath.expandvars("$?bar")', "$?bar")
Christian Heimesf6cd9672008-03-26 13:45:42 +0000228 tester('ntpath.expandvars("$foo}bar")', "bar}bar")
229 tester('ntpath.expandvars("${foo")', "${foo")
230 tester('ntpath.expandvars("${{foo}}")', "baz1}")
231 tester('ntpath.expandvars("$foo$foo")', "barbar")
232 tester('ntpath.expandvars("$bar$bar")', "$bar$bar")
233 tester('ntpath.expandvars("%foo% bar")', "bar bar")
234 tester('ntpath.expandvars("%foo%bar")', "barbar")
235 tester('ntpath.expandvars("%foo%%foo%")', "barbar")
236 tester('ntpath.expandvars("%%foo%%foo%foo%")', "%foo%foobar")
237 tester('ntpath.expandvars("%?bar%")', "%?bar%")
238 tester('ntpath.expandvars("%foo%%bar")', "bar%bar")
239 tester('ntpath.expandvars("\'%foo%\'%bar")', "\'%foo%\'%bar")
Guido van Rossumd8faa362007-04-27 19:54:29 +0000240
Serhiy Storchakadbb10192014-02-13 10:13:53 +0200241 @unittest.skipUnless(support.FS_NONASCII, 'need support.FS_NONASCII')
242 def test_expandvars_nonascii(self):
243 def check(value, expected):
244 tester('ntpath.expandvars(%r)' % value, expected)
245 with support.EnvironmentVarGuard() as env:
246 env.clear()
247 nonascii = support.FS_NONASCII
248 env['spam'] = nonascii
249 env[nonascii] = 'ham' + nonascii
250 check('$spam bar', '%s bar' % nonascii)
251 check('$%s bar' % nonascii, '$%s bar' % nonascii)
252 check('${spam}bar', '%sbar' % nonascii)
253 check('${%s}bar' % nonascii, 'ham%sbar' % nonascii)
254 check('$spam}bar', '%s}bar' % nonascii)
255 check('$%s}bar' % nonascii, '$%s}bar' % nonascii)
256 check('%spam% bar', '%s bar' % nonascii)
257 check('%{}% bar'.format(nonascii), 'ham%s bar' % nonascii)
258 check('%spam%bar', '%sbar' % nonascii)
259 check('%{}%bar'.format(nonascii), 'ham%sbar' % nonascii)
260
Christian Heimesf6cd9672008-03-26 13:45:42 +0000261 def test_abspath(self):
262 # ntpath.abspath() can only be used on a system with the "nt" module
263 # (reasonably), so we protect this test with "import nt". This allows
264 # the rest of the tests for the ntpath module to be run to completion
265 # on any platform, since most of the module is intended to be usable
266 # from any platform.
267 try:
268 import nt
Mark Hammond5a607a32009-05-06 08:04:54 +0000269 tester('ntpath.abspath("C:\\")', "C:\\")
Christian Heimesf6cd9672008-03-26 13:45:42 +0000270 except ImportError:
Zachary Ware9fe6d862013-12-08 00:20:35 -0600271 self.skipTest('nt module not available')
Christian Heimesf6cd9672008-03-26 13:45:42 +0000272
273 def test_relpath(self):
274 currentdir = os.path.split(os.getcwd())[-1]
275 tester('ntpath.relpath("a")', 'a')
276 tester('ntpath.relpath(os.path.abspath("a"))', 'a')
277 tester('ntpath.relpath("a/b")', 'a\\b')
278 tester('ntpath.relpath("../a/b")', '..\\a\\b')
279 tester('ntpath.relpath("a", "../b")', '..\\'+currentdir+'\\a')
280 tester('ntpath.relpath("a/b", "../c")', '..\\'+currentdir+'\\a\\b')
281 tester('ntpath.relpath("a", "b/c")', '..\\..\\a')
Mark Hammond5a607a32009-05-06 08:04:54 +0000282 tester('ntpath.relpath("c:/foo/bar/bat", "c:/x/y")', '..\\..\\foo\\bar\\bat')
Christian Heimesf6cd9672008-03-26 13:45:42 +0000283 tester('ntpath.relpath("//conky/mountpoint/a", "//conky/mountpoint/b/c")', '..\\..\\a')
284 tester('ntpath.relpath("a", "a")', '.')
Mark Hammond5a607a32009-05-06 08:04:54 +0000285 tester('ntpath.relpath("/foo/bar/bat", "/x/y/z")', '..\\..\\..\\foo\\bar\\bat')
286 tester('ntpath.relpath("/foo/bar/bat", "/foo/bar")', 'bat')
287 tester('ntpath.relpath("/foo/bar/bat", "/")', 'foo\\bar\\bat')
288 tester('ntpath.relpath("/", "/foo/bar/bat")', '..\\..\\..')
289 tester('ntpath.relpath("/foo/bar/bat", "/x")', '..\\foo\\bar\\bat')
290 tester('ntpath.relpath("/x", "/foo/bar/bat")', '..\\..\\..\\x')
291 tester('ntpath.relpath("/", "/")', '.')
292 tester('ntpath.relpath("/a", "/a")', '.')
293 tester('ntpath.relpath("/a/b", "/a/b")', '.')
Hirokazu Yamamotob08820a2010-10-18 12:13:18 +0000294 tester('ntpath.relpath("c:/foo", "C:/FOO")', '.')
Christian Heimesf6cd9672008-03-26 13:45:42 +0000295
Brian Curtin62857742010-09-06 17:07:27 +0000296 def test_sameopenfile(self):
297 with TemporaryFile() as tf1, TemporaryFile() as tf2:
298 # Make sure the same file is really the same
299 self.assertTrue(ntpath.sameopenfile(tf1.fileno(), tf1.fileno()))
300 # Make sure different files are really different
301 self.assertFalse(ntpath.sameopenfile(tf1.fileno(), tf2.fileno()))
Brian Curtin13a0db52010-09-06 19:46:17 +0000302 # Make sure invalid values don't cause issues on win32
303 if sys.platform == "win32":
Hirokazu Yamamoto26253bb2010-12-05 04:16:47 +0000304 with self.assertRaises(OSError):
Brian Curtin13a0db52010-09-06 19:46:17 +0000305 # Invalid file descriptors shouldn't display assert
306 # dialogs (#4804)
307 ntpath.sameopenfile(-1, -1)
Brian Curtin62857742010-09-06 17:07:27 +0000308
Christian Heimesf6cd9672008-03-26 13:45:42 +0000309
Ezio Melottid0dfe9a2013-01-10 03:12:50 +0200310class NtCommonTest(test_genericpath.CommonTest, unittest.TestCase):
Florent Xiclunac9c79782010-03-08 12:24:53 +0000311 pathmodule = ntpath
312 attributes = ['relpath', 'splitunc']
313
314
Christian Heimesf6cd9672008-03-26 13:45:42 +0000315if __name__ == "__main__":
316 unittest.main()