blob: ec722f3c1e947fafa78bfcb724c2dd55e5259149 [file] [log] [blame]
Thomas Wouters89f507f2006-12-13 04:49:30 +00001import unittest
Benjamin Petersonee8712c2008-05-20 21:35:26 +00002from test import support
Thomas Wouters89f507f2006-12-13 04:49:30 +00003import os
4import genericpath
5
6class AllCommonTest(unittest.TestCase):
7
Thomas Wouters89f507f2006-12-13 04:49:30 +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):
Benjamin Petersonee8712c2008-05-20 21:35:26 +000027 f = open(support.TESTFN, "wb")
Thomas Wouters89f507f2006-12-13 04:49:30 +000028 try:
Guido van Rossum199fc752007-08-27 23:38:12 +000029 f.write(b"foo")
Thomas Wouters89f507f2006-12-13 04:49:30 +000030 f.close()
Benjamin Petersonee8712c2008-05-20 21:35:26 +000031 self.assertEqual(genericpath.getsize(support.TESTFN), 3)
Thomas Wouters89f507f2006-12-13 04:49:30 +000032 finally:
33 if not f.closed:
34 f.close()
Benjamin Petersonee8712c2008-05-20 21:35:26 +000035 os.remove(support.TESTFN)
Thomas Wouters89f507f2006-12-13 04:49:30 +000036
37 def test_time(self):
Benjamin Petersonee8712c2008-05-20 21:35:26 +000038 f = open(support.TESTFN, "wb")
Thomas Wouters89f507f2006-12-13 04:49:30 +000039 try:
Guido van Rossum199fc752007-08-27 23:38:12 +000040 f.write(b"foo")
Thomas Wouters89f507f2006-12-13 04:49:30 +000041 f.close()
Benjamin Petersonee8712c2008-05-20 21:35:26 +000042 f = open(support.TESTFN, "ab")
Guido van Rossum199fc752007-08-27 23:38:12 +000043 f.write(b"bar")
Thomas Wouters89f507f2006-12-13 04:49:30 +000044 f.close()
Benjamin Petersonee8712c2008-05-20 21:35:26 +000045 f = open(support.TESTFN, "rb")
Thomas Wouters89f507f2006-12-13 04:49:30 +000046 d = f.read()
47 f.close()
Guido van Rossumdc122882007-07-10 12:09:13 +000048 self.assertEqual(d, b"foobar")
Thomas Wouters89f507f2006-12-13 04:49:30 +000049
Ezio Melottia11865b2010-02-20 09:47:55 +000050 self.assertLessEqual(
51 genericpath.getctime(support.TESTFN),
Benjamin Petersonee8712c2008-05-20 21:35:26 +000052 genericpath.getmtime(support.TESTFN)
Thomas Wouters89f507f2006-12-13 04:49:30 +000053 )
54 finally:
55 if not f.closed:
56 f.close()
Benjamin Petersonee8712c2008-05-20 21:35:26 +000057 os.remove(support.TESTFN)
Thomas Wouters89f507f2006-12-13 04:49:30 +000058
59 def test_exists(self):
Benjamin Petersonee8712c2008-05-20 21:35:26 +000060 self.assertIs(genericpath.exists(support.TESTFN), False)
61 f = open(support.TESTFN, "wb")
Thomas Wouters89f507f2006-12-13 04:49:30 +000062 try:
Guido van Rossum199fc752007-08-27 23:38:12 +000063 f.write(b"foo")
Thomas Wouters89f507f2006-12-13 04:49:30 +000064 f.close()
Benjamin Petersonee8712c2008-05-20 21:35:26 +000065 self.assertIs(genericpath.exists(support.TESTFN), True)
Thomas Wouters89f507f2006-12-13 04:49:30 +000066 finally:
67 if not f.close():
68 f.close()
69 try:
Benjamin Petersonee8712c2008-05-20 21:35:26 +000070 os.remove(support.TESTFN)
Thomas Wouters89f507f2006-12-13 04:49:30 +000071 except os.error:
72 pass
73
74 self.assertRaises(TypeError, genericpath.exists)
75
76 def test_isdir(self):
Benjamin Petersonee8712c2008-05-20 21:35:26 +000077 self.assertIs(genericpath.isdir(support.TESTFN), False)
78 f = open(support.TESTFN, "wb")
Thomas Wouters89f507f2006-12-13 04:49:30 +000079 try:
Guido van Rossum199fc752007-08-27 23:38:12 +000080 f.write(b"foo")
Thomas Wouters89f507f2006-12-13 04:49:30 +000081 f.close()
Benjamin Petersonee8712c2008-05-20 21:35:26 +000082 self.assertIs(genericpath.isdir(support.TESTFN), False)
83 os.remove(support.TESTFN)
84 os.mkdir(support.TESTFN)
85 self.assertIs(genericpath.isdir(support.TESTFN), True)
86 os.rmdir(support.TESTFN)
Thomas Wouters89f507f2006-12-13 04:49:30 +000087 finally:
88 if not f.close():
89 f.close()
90 try:
Benjamin Petersonee8712c2008-05-20 21:35:26 +000091 os.remove(support.TESTFN)
Thomas Wouters89f507f2006-12-13 04:49:30 +000092 except os.error:
93 pass
94 try:
Benjamin Petersonee8712c2008-05-20 21:35:26 +000095 os.rmdir(support.TESTFN)
Thomas Wouters89f507f2006-12-13 04:49:30 +000096 except os.error:
97 pass
98
99 self.assertRaises(TypeError, genericpath.isdir)
100
101 def test_isfile(self):
Benjamin Petersonee8712c2008-05-20 21:35:26 +0000102 self.assertIs(genericpath.isfile(support.TESTFN), False)
103 f = open(support.TESTFN, "wb")
Thomas Wouters89f507f2006-12-13 04:49:30 +0000104 try:
Guido van Rossum199fc752007-08-27 23:38:12 +0000105 f.write(b"foo")
Thomas Wouters89f507f2006-12-13 04:49:30 +0000106 f.close()
Benjamin Petersonee8712c2008-05-20 21:35:26 +0000107 self.assertIs(genericpath.isfile(support.TESTFN), True)
108 os.remove(support.TESTFN)
109 os.mkdir(support.TESTFN)
110 self.assertIs(genericpath.isfile(support.TESTFN), False)
111 os.rmdir(support.TESTFN)
Thomas Wouters89f507f2006-12-13 04:49:30 +0000112 finally:
113 if not f.close():
114 f.close()
115 try:
Benjamin Petersonee8712c2008-05-20 21:35:26 +0000116 os.remove(support.TESTFN)
Thomas Wouters89f507f2006-12-13 04:49:30 +0000117 except os.error:
118 pass
119 try:
Benjamin Petersonee8712c2008-05-20 21:35:26 +0000120 os.rmdir(support.TESTFN)
Thomas Wouters89f507f2006-12-13 04:49:30 +0000121 except os.error:
122 pass
123
124 self.assertRaises(TypeError, genericpath.isdir)
125
126 def test_samefile(self):
Benjamin Petersonee8712c2008-05-20 21:35:26 +0000127 f = open(support.TESTFN + "1", "wb")
Thomas Wouters89f507f2006-12-13 04:49:30 +0000128 try:
Guido van Rossum199fc752007-08-27 23:38:12 +0000129 f.write(b"foo")
Thomas Wouters89f507f2006-12-13 04:49:30 +0000130 f.close()
131 self.assertIs(
132 genericpath.samefile(
Benjamin Petersonee8712c2008-05-20 21:35:26 +0000133 support.TESTFN + "1",
134 support.TESTFN + "1"
Thomas Wouters89f507f2006-12-13 04:49:30 +0000135 ),
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(
Benjamin Petersonee8712c2008-05-20 21:35:26 +0000142 support.TESTFN + "1",
143 support.TESTFN + "2"
Thomas Wouters89f507f2006-12-13 04:49:30 +0000144 )
145 self.assertIs(
146 genericpath.samefile(
Benjamin Petersonee8712c2008-05-20 21:35:26 +0000147 support.TESTFN + "1",
148 support.TESTFN + "2"
Thomas Wouters89f507f2006-12-13 04:49:30 +0000149 ),
150 True
151 )
Benjamin Petersonee8712c2008-05-20 21:35:26 +0000152 os.remove(support.TESTFN + "2")
153 f = open(support.TESTFN + "2", "wb")
Guido van Rossum199fc752007-08-27 23:38:12 +0000154 f.write(b"bar")
Thomas Wouters89f507f2006-12-13 04:49:30 +0000155 f.close()
156 self.assertIs(
157 genericpath.samefile(
Benjamin Petersonee8712c2008-05-20 21:35:26 +0000158 support.TESTFN + "1",
159 support.TESTFN + "2"
Thomas Wouters89f507f2006-12-13 04:49:30 +0000160 ),
161 False
162 )
163 finally:
164 if not f.close():
165 f.close()
166 try:
Benjamin Petersonee8712c2008-05-20 21:35:26 +0000167 os.remove(support.TESTFN + "1")
Thomas Wouters89f507f2006-12-13 04:49:30 +0000168 except os.error:
169 pass
170 try:
Benjamin Petersonee8712c2008-05-20 21:35:26 +0000171 os.remove(support.TESTFN + "2")
Thomas Wouters89f507f2006-12-13 04:49:30 +0000172 except os.error:
173 pass
174
175 self.assertRaises(TypeError, genericpath.samefile)
176
177def test_main():
Benjamin Petersonee8712c2008-05-20 21:35:26 +0000178 support.run_unittest(AllCommonTest)
Thomas Wouters89f507f2006-12-13 04:49:30 +0000179
180if __name__=="__main__":
181 test_main()