blob: c00874d390a71df7da7ed4ffed97001d4c15ea83 [file] [log] [blame]
Fred Drake2ec80fa2000-10-23 16:59:35 +00001import os
2
Marc-André Lemburg36619082001-01-17 19:11:13 +00003from test_support import verify, TESTFN
Marc-André Lemburgfa44d792000-08-25 22:37:31 +00004from UserList import UserList
5
6# verify writelines with instance sequence
7l = UserList(['1', '2'])
8f = open(TESTFN, 'wb')
9f.writelines(l)
10f.close()
11f = open(TESTFN, 'rb')
12buf = f.read()
13f.close()
Marc-André Lemburg36619082001-01-17 19:11:13 +000014verify(buf == '12')
Marc-André Lemburgfa44d792000-08-25 22:37:31 +000015
16# verify writelines with integers
17f = open(TESTFN, 'wb')
18try:
19 f.writelines([1, 2, 3])
20except TypeError:
21 pass
22else:
23 print "writelines accepted sequence of integers"
24f.close()
25
26# verify writelines with integers in UserList
27f = open(TESTFN, 'wb')
28l = UserList([1,2,3])
29try:
30 f.writelines(l)
31except TypeError:
32 pass
33else:
34 print "writelines accepted sequence of integers"
35f.close()
36
37# verify writelines with non-string object
38class NonString: pass
39
40f = open(TESTFN, 'wb')
41try:
42 f.writelines([NonString(), NonString()])
43except TypeError:
44 pass
45else:
46 print "writelines accepted sequence of non-string objects"
47f.close()
Fred Drake2ec80fa2000-10-23 16:59:35 +000048
Jeremy Hylton734c7fb2001-11-09 19:34:43 +000049# verify that we get a sensible error message for bad mode argument
Jeremy Hylton41c83212001-11-09 16:17:24 +000050bad_mode = "qwerty"
51try:
52 open(TESTFN, bad_mode)
53except IOError, msg:
Jeremy Hylton734c7fb2001-11-09 19:34:43 +000054 if msg[0] != 0:
55 s = str(msg)
56 if s.find(TESTFN) != -1 or s.find(bad_mode) == -1:
57 print "bad error message for invalid mode: %s" % s
58 # if msg[0] == 0, we're probably on Windows where there may be
59 # no obvious way to discover why open() failed.
Jeremy Hylton41c83212001-11-09 16:17:24 +000060else:
61 print "no error for invalid mode: %s" % bad_mode
62
Neal Norwitz653d85f2002-01-01 19:11:13 +000063f = open(TESTFN)
64if f.name != TESTFN:
65 raise TestError, 'file.name should be "%s"' % TESTFN
66if f.isatty():
67 raise TestError, 'file.isatty() should be false'
68
69if f.closed:
70 raise TestError, 'file.closed should be false'
71
72f.close()
73if not f.closed:
74 raise TestError, 'file.closed should be true'
75
76for methodname in ['fileno', 'flush', 'isatty', 'read', 'readinto', 'readline', 'readlines', 'seek', 'tell', 'truncate', 'write', 'xreadlines' ]:
77 method = getattr(f, methodname)
78 try:
79 method()
80 except ValueError:
81 pass
82 else:
83 raise TestError, 'file.%s() on a closed file should raise a ValueError' % methodname
84
85try:
86 f.writelines([])
87except ValueError:
88 pass
89else:
90 raise TestError, 'file.writelines([]) on a closed file should raise a ValueError'
91
Fred Drake2ec80fa2000-10-23 16:59:35 +000092os.unlink(TESTFN)