blob: 53c4607ee2c1262b2496fcbc145f05a53e780c1e [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
8 def assertIs(self, a, b):
9 self.assert_(a is b)
10
11 def test_commonprefix(self):
12 self.assertEqual(
13 genericpath.commonprefix([]),
14 ""
15 )
16 self.assertEqual(
17 genericpath.commonprefix(["/home/swenson/spam", "/home/swen/spam"]),
18 "/home/swen"
19 )
20 self.assertEqual(
21 genericpath.commonprefix(["/home/swen/spam", "/home/swen/eggs"]),
22 "/home/swen/"
23 )
24 self.assertEqual(
25 genericpath.commonprefix(["/home/swen/spam", "/home/swen/spam"]),
26 "/home/swen/spam"
27 )
28
29 def test_getsize(self):
30 f = open(test_support.TESTFN, "wb")
31 try:
32 f.write("foo")
33 f.close()
34 self.assertEqual(genericpath.getsize(test_support.TESTFN), 3)
35 finally:
36 if not f.closed:
37 f.close()
38 os.remove(test_support.TESTFN)
39
40 def test_time(self):
41 f = open(test_support.TESTFN, "wb")
42 try:
43 f.write("foo")
44 f.close()
45 f = open(test_support.TESTFN, "ab")
46 f.write("bar")
47 f.close()
48 f = open(test_support.TESTFN, "rb")
49 d = f.read()
50 f.close()
51 self.assertEqual(d, "foobar")
52
53 self.assert_(
54 genericpath.getctime(test_support.TESTFN) <=
55 genericpath.getmtime(test_support.TESTFN)
56 )
57 finally:
58 if not f.closed:
59 f.close()
60 os.remove(test_support.TESTFN)
61
62 def test_exists(self):
63 self.assertIs(genericpath.exists(test_support.TESTFN), False)
64 f = open(test_support.TESTFN, "wb")
65 try:
66 f.write("foo")
67 f.close()
68 self.assertIs(genericpath.exists(test_support.TESTFN), True)
69 finally:
70 if not f.close():
71 f.close()
72 try:
73 os.remove(test_support.TESTFN)
74 except os.error:
75 pass
76
77 self.assertRaises(TypeError, genericpath.exists)
78
79 def test_isdir(self):
80 self.assertIs(genericpath.isdir(test_support.TESTFN), False)
81 f = open(test_support.TESTFN, "wb")
82 try:
83 f.write("foo")
84 f.close()
85 self.assertIs(genericpath.isdir(test_support.TESTFN), False)
86 os.remove(test_support.TESTFN)
87 os.mkdir(test_support.TESTFN)
88 self.assertIs(genericpath.isdir(test_support.TESTFN), True)
89 os.rmdir(test_support.TESTFN)
90 finally:
91 if not f.close():
92 f.close()
93 try:
94 os.remove(test_support.TESTFN)
95 except os.error:
96 pass
97 try:
98 os.rmdir(test_support.TESTFN)
99 except os.error:
100 pass
101
102 self.assertRaises(TypeError, genericpath.isdir)
103
104 def test_isfile(self):
105 self.assertIs(genericpath.isfile(test_support.TESTFN), False)
106 f = open(test_support.TESTFN, "wb")
107 try:
108 f.write("foo")
109 f.close()
110 self.assertIs(genericpath.isfile(test_support.TESTFN), True)
111 os.remove(test_support.TESTFN)
112 os.mkdir(test_support.TESTFN)
113 self.assertIs(genericpath.isfile(test_support.TESTFN), False)
114 os.rmdir(test_support.TESTFN)
115 finally:
116 if not f.close():
117 f.close()
118 try:
119 os.remove(test_support.TESTFN)
120 except os.error:
121 pass
122 try:
123 os.rmdir(test_support.TESTFN)
124 except os.error:
125 pass
126
127 self.assertRaises(TypeError, genericpath.isdir)
128
129 def test_samefile(self):
130 f = open(test_support.TESTFN + "1", "wb")
131 try:
132 f.write("foo")
133 f.close()
134 self.assertIs(
135 genericpath.samefile(
136 test_support.TESTFN + "1",
137 test_support.TESTFN + "1"
138 ),
139 True
140 )
141 # If we don't have links, assume that os.stat doesn't return resonable
142 # inode information and thus, that samefile() doesn't work
143 if hasattr(os, "symlink"):
144 os.symlink(
145 test_support.TESTFN + "1",
146 test_support.TESTFN + "2"
147 )
148 self.assertIs(
149 genericpath.samefile(
150 test_support.TESTFN + "1",
151 test_support.TESTFN + "2"
152 ),
153 True
154 )
155 os.remove(test_support.TESTFN + "2")
156 f = open(test_support.TESTFN + "2", "wb")
157 f.write("bar")
158 f.close()
159 self.assertIs(
160 genericpath.samefile(
161 test_support.TESTFN + "1",
162 test_support.TESTFN + "2"
163 ),
164 False
165 )
166 finally:
167 if not f.close():
168 f.close()
169 try:
170 os.remove(test_support.TESTFN + "1")
171 except os.error:
172 pass
173 try:
174 os.remove(test_support.TESTFN + "2")
175 except os.error:
176 pass
177
178 self.assertRaises(TypeError, genericpath.samefile)
179
180def test_main():
181 test_support.run_unittest(AllCommonTest)
182
183if __name__=="__main__":
184 test_main()