blob: 15f12e44c36aecc6cd174eabb3e5b336f42347bf [file] [log] [blame]
Jack Diederich7b604642006-08-26 18:42:06 +00001import unittest
2from test import test_support
3import os
4import genericpath
5
6class AllCommonTest(unittest.TestCase):
7
Jack Diederich7b604642006-08-26 18:42:06 +00008 def test_commonprefix(self):
9 self.assertEqual(
10 genericpath.commonprefix([]),
11 ""
12 )
13 self.assertEqual(
14 genericpath.commonprefix(["/home/swenson/spam", "/home/swen/spam"]),
15 "/home/swen"
16 )
17 self.assertEqual(
18 genericpath.commonprefix(["/home/swen/spam", "/home/swen/eggs"]),
19 "/home/swen/"
20 )
21 self.assertEqual(
22 genericpath.commonprefix(["/home/swen/spam", "/home/swen/spam"]),
23 "/home/swen/spam"
24 )
25
26 def test_getsize(self):
27 f = open(test_support.TESTFN, "wb")
28 try:
29 f.write("foo")
30 f.close()
31 self.assertEqual(genericpath.getsize(test_support.TESTFN), 3)
32 finally:
33 if not f.closed:
34 f.close()
35 os.remove(test_support.TESTFN)
36
37 def test_time(self):
38 f = open(test_support.TESTFN, "wb")
39 try:
40 f.write("foo")
41 f.close()
42 f = open(test_support.TESTFN, "ab")
43 f.write("bar")
44 f.close()
45 f = open(test_support.TESTFN, "rb")
46 d = f.read()
47 f.close()
48 self.assertEqual(d, "foobar")
49
Ezio Melottie3467d52010-02-20 09:40:07 +000050 self.assertLessEqual(
51 genericpath.getctime(test_support.TESTFN),
Jack Diederich7b604642006-08-26 18:42:06 +000052 genericpath.getmtime(test_support.TESTFN)
53 )
54 finally:
55 if not f.closed:
56 f.close()
57 os.remove(test_support.TESTFN)
58
59 def test_exists(self):
60 self.assertIs(genericpath.exists(test_support.TESTFN), False)
61 f = open(test_support.TESTFN, "wb")
62 try:
63 f.write("foo")
64 f.close()
65 self.assertIs(genericpath.exists(test_support.TESTFN), True)
66 finally:
67 if not f.close():
68 f.close()
69 try:
70 os.remove(test_support.TESTFN)
71 except os.error:
72 pass
73
74 self.assertRaises(TypeError, genericpath.exists)
75
76 def test_isdir(self):
77 self.assertIs(genericpath.isdir(test_support.TESTFN), False)
78 f = open(test_support.TESTFN, "wb")
79 try:
80 f.write("foo")
81 f.close()
82 self.assertIs(genericpath.isdir(test_support.TESTFN), False)
83 os.remove(test_support.TESTFN)
84 os.mkdir(test_support.TESTFN)
85 self.assertIs(genericpath.isdir(test_support.TESTFN), True)
86 os.rmdir(test_support.TESTFN)
87 finally:
88 if not f.close():
89 f.close()
90 try:
91 os.remove(test_support.TESTFN)
92 except os.error:
93 pass
94 try:
95 os.rmdir(test_support.TESTFN)
96 except os.error:
97 pass
98
99 self.assertRaises(TypeError, genericpath.isdir)
100
101 def test_isfile(self):
102 self.assertIs(genericpath.isfile(test_support.TESTFN), False)
103 f = open(test_support.TESTFN, "wb")
104 try:
105 f.write("foo")
106 f.close()
107 self.assertIs(genericpath.isfile(test_support.TESTFN), True)
108 os.remove(test_support.TESTFN)
109 os.mkdir(test_support.TESTFN)
110 self.assertIs(genericpath.isfile(test_support.TESTFN), False)
111 os.rmdir(test_support.TESTFN)
112 finally:
113 if not f.close():
114 f.close()
115 try:
116 os.remove(test_support.TESTFN)
117 except os.error:
118 pass
119 try:
120 os.rmdir(test_support.TESTFN)
121 except os.error:
122 pass
123
124 self.assertRaises(TypeError, genericpath.isdir)
125
126 def test_samefile(self):
127 f = open(test_support.TESTFN + "1", "wb")
128 try:
129 f.write("foo")
130 f.close()
131 self.assertIs(
132 genericpath.samefile(
133 test_support.TESTFN + "1",
134 test_support.TESTFN + "1"
135 ),
136 True
137 )
138 # If we don't have links, assume that os.stat doesn't return resonable
139 # inode information and thus, that samefile() doesn't work
140 if hasattr(os, "symlink"):
141 os.symlink(
142 test_support.TESTFN + "1",
143 test_support.TESTFN + "2"
144 )
145 self.assertIs(
146 genericpath.samefile(
147 test_support.TESTFN + "1",
148 test_support.TESTFN + "2"
149 ),
150 True
151 )
152 os.remove(test_support.TESTFN + "2")
153 f = open(test_support.TESTFN + "2", "wb")
154 f.write("bar")
155 f.close()
156 self.assertIs(
157 genericpath.samefile(
158 test_support.TESTFN + "1",
159 test_support.TESTFN + "2"
160 ),
161 False
162 )
163 finally:
164 if not f.close():
165 f.close()
166 try:
167 os.remove(test_support.TESTFN + "1")
168 except os.error:
169 pass
170 try:
171 os.remove(test_support.TESTFN + "2")
172 except os.error:
173 pass
174
175 self.assertRaises(TypeError, genericpath.samefile)
176
Ezio Melotti9e9af212010-02-20 22:34:21 +0000177
178# XXX at some point this should probably go in some class that contains common
179# tests for all test_*path modules.
180def _issue3426(self, cwd, abspath):
181 # Issue 3426: check that abspath retuns unicode when the arg is unicode
182 # and str when it's str, with both ASCII and non-ASCII cwds
183 with test_support.temp_cwd(cwd):
184 for path in ('', 'foo', 'f\xf2\xf2', '/foo', 'C:\\'):
185 self.assertIsInstance(abspath(path), str)
186 for upath in (u'', u'fuu', u'f\xf9\xf9', u'/fuu', u'U:\\'):
187 self.assertIsInstance(abspath(upath), unicode)
188
189
Jack Diederich7b604642006-08-26 18:42:06 +0000190def test_main():
191 test_support.run_unittest(AllCommonTest)
192
193if __name__=="__main__":
194 test_main()