2 from test
import test_support
6 class PosixPathTest(unittest
.TestCase
):
8 def assertIs(self
, a
, b
):
11 def test_normcase(self
):
12 # Check that normcase() is idempotent
14 p
= posixpath
.normcase(p
)
15 self
.assertEqual(p
, posixpath
.normcase(p
))
17 self
.assertRaises(TypeError, posixpath
.normcase
)
20 self
.assertEqual(posixpath
.join("/foo", "bar", "/bar", "baz"), "/bar/baz")
21 self
.assertEqual(posixpath
.join("/foo", "bar", "baz"), "/foo/bar/baz")
22 self
.assertEqual(posixpath
.join("/foo/", "bar/", "baz/"), "/foo/bar/baz/")
24 self
.assertRaises(TypeError, posixpath
.join
)
26 def test_splitdrive(self
):
27 self
.assertEqual(posixpath
.splitdrive("/foo/bar"), ("", "/foo/bar"))
29 self
.assertRaises(TypeError, posixpath
.splitdrive
)
32 self
.assertEqual(posixpath
.split("/foo/bar"), ("/foo", "bar"))
33 self
.assertEqual(posixpath
.split("/"), ("/", ""))
34 self
.assertEqual(posixpath
.split("foo"), ("", "foo"))
35 self
.assertEqual(posixpath
.split("////foo"), ("////", "foo"))
36 self
.assertEqual(posixpath
.split("//foo//bar"), ("//foo", "bar"))
38 self
.assertRaises(TypeError, posixpath
.split
)
40 def test_splitext(self
):
41 self
.assertEqual(posixpath
.splitext("foo.ext"), ("foo", ".ext"))
42 self
.assertEqual(posixpath
.splitext("/foo/foo.ext"), ("/foo/foo", ".ext"))
43 self
.assertEqual(posixpath
.splitext(".ext"), ("", ".ext"))
44 self
.assertEqual(posixpath
.splitext("/foo.ext/foo"), ("/foo.ext/foo", ""))
45 self
.assertEqual(posixpath
.splitext("foo.ext/"), ("foo.ext/", ""))
46 self
.assertEqual(posixpath
.splitext(""), ("", ""))
47 self
.assertEqual(posixpath
.splitext("foo.bar.ext"), ("foo.bar", ".ext"))
49 self
.assertRaises(TypeError, posixpath
.splitext
)
52 self
.assertIs(posixpath
.isabs(""), False)
53 self
.assertIs(posixpath
.isabs("/"), True)
54 self
.assertIs(posixpath
.isabs("/foo"), True)
55 self
.assertIs(posixpath
.isabs("/foo/bar"), True)
56 self
.assertIs(posixpath
.isabs("foo/bar"), False)
58 self
.assertRaises(TypeError, posixpath
.isabs
)
60 def test_splitdrive(self
):
61 self
.assertEqual(posixpath
.splitdrive("/foo/bar"), ("", "/foo/bar"))
63 self
.assertRaises(TypeError, posixpath
.splitdrive
)
65 def test_basename(self
):
66 self
.assertEqual(posixpath
.basename("/foo/bar"), "bar")
67 self
.assertEqual(posixpath
.basename("/"), "")
68 self
.assertEqual(posixpath
.basename("foo"), "foo")
69 self
.assertEqual(posixpath
.basename("////foo"), "foo")
70 self
.assertEqual(posixpath
.basename("//foo//bar"), "bar")
72 self
.assertRaises(TypeError, posixpath
.basename
)
74 def test_dirname(self
):
75 self
.assertEqual(posixpath
.dirname("/foo/bar"), "/foo")
76 self
.assertEqual(posixpath
.dirname("/"), "/")
77 self
.assertEqual(posixpath
.dirname("foo"), "")
78 self
.assertEqual(posixpath
.dirname("////foo"), "////")
79 self
.assertEqual(posixpath
.dirname("//foo//bar"), "//foo")
81 self
.assertRaises(TypeError, posixpath
.dirname
)
83 def test_commonprefix(self
):
85 posixpath
.commonprefix([]),
89 posixpath
.commonprefix(["/home/swenson/spam", "/home/swen/spam"]),
93 posixpath
.commonprefix(["/home/swen/spam", "/home/swen/eggs"]),
97 posixpath
.commonprefix(["/home/swen/spam", "/home/swen/spam"]),
101 def test_getsize(self
):
102 f
= open(test_support
.TESTFN
, "wb")
106 self
.assertEqual(posixpath
.getsize(test_support
.TESTFN
), 3)
110 os
.remove(test_support
.TESTFN
)
113 f
= open(test_support
.TESTFN
, "wb")
117 f
= open(test_support
.TESTFN
, "ab")
120 f
= open(test_support
.TESTFN
, "rb")
123 self
.assertEqual(d
, "foobar")
126 posixpath
.getctime(test_support
.TESTFN
) <=
127 posixpath
.getmtime(test_support
.TESTFN
)
132 os
.remove(test_support
.TESTFN
)
134 def test_islink(self
):
135 self
.assertIs(posixpath
.islink(test_support
.TESTFN
+ "1"), False)
136 f
= open(test_support
.TESTFN
+ "1", "wb")
140 self
.assertIs(posixpath
.islink(test_support
.TESTFN
+ "1"), False)
141 if hasattr(os
, "symlink"):
142 os
.symlink(test_support
.TESTFN
+ "1", test_support
.TESTFN
+ "2")
143 self
.assertIs(posixpath
.islink(test_support
.TESTFN
+ "2"), True)
144 os
.remove(test_support
.TESTFN
+ "1")
145 self
.assertIs(posixpath
.islink(test_support
.TESTFN
+ "2"), True)
146 self
.assertIs(posixpath
.exists(test_support
.TESTFN
+ "2"), False)
151 os
.remove(test_support
.TESTFN
+ "1")
155 os
.remove(test_support
.TESTFN
+ "2")
159 self
.assertRaises(TypeError, posixpath
.islink
)
161 def test_exists(self
):
162 self
.assertIs(posixpath
.exists(test_support
.TESTFN
), False)
163 f
= open(test_support
.TESTFN
, "wb")
167 self
.assertIs(posixpath
.exists(test_support
.TESTFN
), True)
172 os
.remove(test_support
.TESTFN
)
176 self
.assertRaises(TypeError, posixpath
.exists
)
178 def test_isdir(self
):
179 self
.assertIs(posixpath
.isdir(test_support
.TESTFN
), False)
180 f
= open(test_support
.TESTFN
, "wb")
184 self
.assertIs(posixpath
.isdir(test_support
.TESTFN
), False)
185 os
.remove(test_support
.TESTFN
)
186 os
.mkdir(test_support
.TESTFN
)
187 self
.assertIs(posixpath
.isdir(test_support
.TESTFN
), True)
188 os
.rmdir(test_support
.TESTFN
)
193 os
.remove(test_support
.TESTFN
)
197 os
.rmdir(test_support
.TESTFN
)
201 self
.assertRaises(TypeError, posixpath
.isdir
)
203 def test_isfile(self
):
204 self
.assertIs(posixpath
.isfile(test_support
.TESTFN
), False)
205 f
= open(test_support
.TESTFN
, "wb")
209 self
.assertIs(posixpath
.isfile(test_support
.TESTFN
), True)
210 os
.remove(test_support
.TESTFN
)
211 os
.mkdir(test_support
.TESTFN
)
212 self
.assertIs(posixpath
.isfile(test_support
.TESTFN
), False)
213 os
.rmdir(test_support
.TESTFN
)
218 os
.remove(test_support
.TESTFN
)
222 os
.rmdir(test_support
.TESTFN
)
226 self
.assertRaises(TypeError, posixpath
.isdir
)
228 def test_samefile(self
):
229 f
= open(test_support
.TESTFN
+ "1", "wb")
235 test_support
.TESTFN
+ "1",
236 test_support
.TESTFN
+ "1"
240 # If we don't have links, assume that os.stat doesn't return resonable
241 # inode information and thus, that samefile() doesn't work
242 if hasattr(os
, "symlink"):
244 test_support
.TESTFN
+ "1",
245 test_support
.TESTFN
+ "2"
249 test_support
.TESTFN
+ "1",
250 test_support
.TESTFN
+ "2"
254 os
.remove(test_support
.TESTFN
+ "2")
255 f
= open(test_support
.TESTFN
+ "2", "wb")
260 test_support
.TESTFN
+ "1",
261 test_support
.TESTFN
+ "2"
269 os
.remove(test_support
.TESTFN
+ "1")
273 os
.remove(test_support
.TESTFN
+ "2")
277 self
.assertRaises(TypeError, posixpath
.samefile
)
279 def test_samestat(self
):
280 f
= open(test_support
.TESTFN
+ "1", "wb")
286 os
.stat(test_support
.TESTFN
+ "1"),
287 os
.stat(test_support
.TESTFN
+ "1")
291 # If we don't have links, assume that os.stat() doesn't return resonable
292 # inode information and thus, that samefile() doesn't work
293 if hasattr(os
, "symlink"):
294 if hasattr(os
, "symlink"):
295 os
.symlink(test_support
.TESTFN
+ "1", test_support
.TESTFN
+ "2")
298 os
.stat(test_support
.TESTFN
+ "1"),
299 os
.stat(test_support
.TESTFN
+ "2")
303 os
.remove(test_support
.TESTFN
+ "2")
304 f
= open(test_support
.TESTFN
+ "2", "wb")
309 os
.stat(test_support
.TESTFN
+ "1"),
310 os
.stat(test_support
.TESTFN
+ "2")
318 os
.remove(test_support
.TESTFN
+ "1")
322 os
.remove(test_support
.TESTFN
+ "2")
326 self
.assertRaises(TypeError, posixpath
.samestat
)
328 def test_ismount(self
):
329 if os
.name
in ('mac',):
331 self
.assertIs(posixpath
.ismount("/"), True)
333 self
.assertRaises(TypeError, posixpath
.ismount
)
335 def test_expanduser(self
):
336 self
.assertEqual(posixpath
.expanduser("foo"), "foo")
342 self
.assert_(isinstance(posixpath
.expanduser("~/"), basestring
))
343 # if home directory == root directory, this test makes no sense
344 if posixpath
.expanduser("~") != '/':
346 posixpath
.expanduser("~") + "/",
347 posixpath
.expanduser("~/")
349 self
.assert_(isinstance(posixpath
.expanduser("~root/"), basestring
))
350 self
.assert_(isinstance(posixpath
.expanduser("~foo/"), basestring
))
352 self
.assertRaises(TypeError, posixpath
.expanduser
)
354 def test_expandvars(self
):
355 oldenv
= os
.environ
.copy()
358 os
.environ
["foo"] = "bar"
359 os
.environ
["{foo"] = "baz1"
360 os
.environ
["{foo}"] = "baz2"
361 self
.assertEqual(posixpath
.expandvars("foo"), "foo")
362 self
.assertEqual(posixpath
.expandvars("$foo bar"), "bar bar")
363 self
.assertEqual(posixpath
.expandvars("${foo}bar"), "barbar")
364 self
.assertEqual(posixpath
.expandvars("$[foo]bar"), "$[foo]bar")
365 self
.assertEqual(posixpath
.expandvars("$bar bar"), "$bar bar")
366 self
.assertEqual(posixpath
.expandvars("$?bar"), "$?bar")
367 self
.assertEqual(posixpath
.expandvars("${foo}bar"), "barbar")
368 self
.assertEqual(posixpath
.expandvars("$foo}bar"), "bar}bar")
369 self
.assertEqual(posixpath
.expandvars("${foo"), "${foo")
370 self
.assertEqual(posixpath
.expandvars("${{foo}}"), "baz1}")
373 os
.environ
.update(oldenv
)
375 self
.assertRaises(TypeError, posixpath
.expandvars
)
377 def test_normpath(self
):
378 self
.assertEqual(posixpath
.normpath(""), ".")
379 self
.assertEqual(posixpath
.normpath("/"), "/")
380 self
.assertEqual(posixpath
.normpath("//"), "//")
381 self
.assertEqual(posixpath
.normpath("///"), "/")
382 self
.assertEqual(posixpath
.normpath("///foo/.//bar//"), "/foo/bar")
383 self
.assertEqual(posixpath
.normpath("///foo/.//bar//.//..//.//baz"), "/foo/baz")
384 self
.assertEqual(posixpath
.normpath("///..//./foo/.//bar"), "/foo/bar")
386 self
.assertRaises(TypeError, posixpath
.normpath
)
388 def test_abspath(self
):
389 self
.assert_("foo" in posixpath
.abspath("foo"))
391 self
.assertRaises(TypeError, posixpath
.abspath
)
393 def test_realpath(self
):
394 self
.assert_("foo" in posixpath
.realpath("foo"))
396 self
.assertRaises(TypeError, posixpath
.realpath
)
399 test_support
.run_unittest(PosixPathTest
)
401 if __name__
=="__main__":