blob: d91271446c59a28fff0e4d685cbc46022c8d7d70 [file] [log] [blame]
Thomas Wouters89f507f2006-12-13 04:49:30 +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:
Guido van Rossum199fc752007-08-27 23:38:12 +000032 f.write(b"foo")
Thomas Wouters89f507f2006-12-13 04:49:30 +000033 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:
Guido van Rossum199fc752007-08-27 23:38:12 +000043 f.write(b"foo")
Thomas Wouters89f507f2006-12-13 04:49:30 +000044 f.close()
45 f = open(test_support.TESTFN, "ab")
Guido van Rossum199fc752007-08-27 23:38:12 +000046 f.write(b"bar")
Thomas Wouters89f507f2006-12-13 04:49:30 +000047 f.close()
48 f = open(test_support.TESTFN, "rb")
49 d = f.read()
50 f.close()
Guido van Rossumdc122882007-07-10 12:09:13 +000051 self.assertEqual(d, b"foobar")
Thomas Wouters89f507f2006-12-13 04:49:30 +000052
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:
Guido van Rossum199fc752007-08-27 23:38:12 +000066 f.write(b"foo")
Thomas Wouters89f507f2006-12-13 04:49:30 +000067 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:
Guido van Rossum199fc752007-08-27 23:38:12 +000083 f.write(b"foo")
Thomas Wouters89f507f2006-12-13 04:49:30 +000084 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:
Guido van Rossum199fc752007-08-27 23:38:12 +0000108 f.write(b"foo")
Thomas Wouters89f507f2006-12-13 04:49:30 +0000109 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:
Guido van Rossum199fc752007-08-27 23:38:12 +0000132 f.write(b"foo")
Thomas Wouters89f507f2006-12-13 04:49:30 +0000133 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")
Guido van Rossum199fc752007-08-27 23:38:12 +0000157 f.write(b"bar")
Thomas Wouters89f507f2006-12-13 04:49:30 +0000158 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()