blob: 24d8bb2e72647ea8f4712804a2b29aab81085957 [file] [log] [blame]
Ezio Melotti502f8eb2010-02-20 09:16:04 +00001import os
Ezio Melotti6d2e3f42010-02-21 10:32:09 +00002import sys
Martin v. Löwisde333792002-12-12 20:30:20 +00003import macpath
4from test import test_support
5import unittest
6
7
8class MacPathTestCase(unittest.TestCase):
9
10 def test_abspath(self):
11 self.assert_(macpath.abspath("xx:yy") == "xx:yy")
12
Ezio Melotti502f8eb2010-02-20 09:16:04 +000013 # Issue 3426: check that abspath retuns unicode when the arg is unicode
14 # and str when it's str, with both ASCII and non-ASCII cwds
15 saved_cwd = os.getcwd()
Ezio Melotti6d2e3f42010-02-21 10:32:09 +000016 cwds = ['cwd']
17 try:
18 cwds.append(u'\xe7w\xf0'.encode(sys.getfilesystemencoding()
19 or 'ascii'))
20 except UnicodeEncodeError:
21 pass # the cwd can't be encoded -- test with ascii cwd only
22 for cwd in cwds:
Ezio Melotti502f8eb2010-02-20 09:16:04 +000023 try:
24 os.mkdir(cwd)
25 os.chdir(cwd)
26 for path in ('', 'foo', 'f\xf2\xf2', '/foo', 'C:\\'):
27 self.assertTrue(isinstance(macpath.abspath(path), str))
28 for upath in (u'', u'fuu', u'f\xf9\xf9', u'/fuu', u'U:\\'):
29 self.assertTrue(isinstance(macpath.abspath(upath), unicode))
30 finally:
31 os.chdir(saved_cwd)
32 os.rmdir(cwd)
33
34
Martin v. Löwisde333792002-12-12 20:30:20 +000035 def test_isabs(self):
36 isabs = macpath.isabs
37 self.assert_(isabs("xx:yy"))
38 self.assert_(isabs("xx:yy:"))
39 self.assert_(isabs("xx:"))
40 self.failIf(isabs("foo"))
41 self.failIf(isabs(":foo"))
42 self.failIf(isabs(":foo:bar"))
43 self.failIf(isabs(":foo:bar:"))
44
45
46 def test_commonprefix(self):
47 commonprefix = macpath.commonprefix
48 self.assert_(commonprefix(["home:swenson:spam", "home:swen:spam"])
49 == "home:swen")
50 self.assert_(commonprefix([":home:swen:spam", ":home:swen:eggs"])
51 == ":home:swen:")
52 self.assert_(commonprefix([":home:swen:spam", ":home:swen:spam"])
53 == ":home:swen:spam")
54
55 def test_split(self):
56 split = macpath.split
57 self.assertEquals(split("foo:bar"),
58 ('foo:', 'bar'))
59 self.assertEquals(split("conky:mountpoint:foo:bar"),
60 ('conky:mountpoint:foo', 'bar'))
61
62 self.assertEquals(split(":"), ('', ''))
63 self.assertEquals(split(":conky:mountpoint:"),
64 (':conky:mountpoint', ''))
65
66 def test_splitdrive(self):
67 splitdrive = macpath.splitdrive
68 self.assertEquals(splitdrive("foo:bar"), ('', 'foo:bar'))
69 self.assertEquals(splitdrive(":foo:bar"), ('', ':foo:bar'))
70
71 def test_splitext(self):
72 splitext = macpath.splitext
73 self.assertEquals(splitext(":foo.ext"), (':foo', '.ext'))
74 self.assertEquals(splitext("foo:foo.ext"), ('foo:foo', '.ext'))
Martin v. Löwis05c075d2007-03-07 11:04:33 +000075 self.assertEquals(splitext(".ext"), ('.ext', ''))
Martin v. Löwisde333792002-12-12 20:30:20 +000076 self.assertEquals(splitext("foo.ext:foo"), ('foo.ext:foo', ''))
77 self.assertEquals(splitext(":foo.ext:"), (':foo.ext:', ''))
78 self.assertEquals(splitext(""), ('', ''))
79 self.assertEquals(splitext("foo.bar.ext"), ('foo.bar', '.ext'))
80
81
82def test_main():
83 test_support.run_unittest(MacPathTestCase)
84
85
86if __name__ == "__main__":
87 test_main()