| 
									
										
										
										
											2002-06-11 06:22:31 +00:00
										 |  |  | import sys | 
					
						
							| 
									
										
										
										
											2000-10-23 16:59:35 +00:00
										 |  |  | import os | 
					
						
							| 
									
										
										
										
											2002-04-01 00:09:00 +00:00
										 |  |  | from array import array | 
					
						
							| 
									
										
										
										
											2000-10-23 16:59:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-07-30 23:27:12 +00:00
										 |  |  | from test.test_support import verify, TESTFN, TestFailed | 
					
						
							| 
									
										
										
										
											2000-08-25 22:37:31 +00:00
										 |  |  | from UserList import UserList | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # verify writelines with instance sequence | 
					
						
							|  |  |  | l = UserList(['1', '2']) | 
					
						
							|  |  |  | f = open(TESTFN, 'wb') | 
					
						
							|  |  |  | f.writelines(l) | 
					
						
							|  |  |  | f.close() | 
					
						
							|  |  |  | f = open(TESTFN, 'rb') | 
					
						
							|  |  |  | buf = f.read() | 
					
						
							|  |  |  | f.close() | 
					
						
							| 
									
										
										
										
											2001-01-17 19:11:13 +00:00
										 |  |  | verify(buf == '12') | 
					
						
							| 
									
										
										
										
											2000-08-25 22:37:31 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-04-01 00:09:00 +00:00
										 |  |  | # verify readinto | 
					
						
							|  |  |  | a = array('c', 'x'*10) | 
					
						
							|  |  |  | f = open(TESTFN, 'rb') | 
					
						
							|  |  |  | n = f.readinto(a) | 
					
						
							|  |  |  | f.close() | 
					
						
							|  |  |  | verify(buf == a.tostring()[:n]) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-08-25 22:37:31 +00:00
										 |  |  | # verify writelines with integers | 
					
						
							|  |  |  | f = open(TESTFN, 'wb') | 
					
						
							|  |  |  | try: | 
					
						
							|  |  |  |     f.writelines([1, 2, 3]) | 
					
						
							|  |  |  | except TypeError: | 
					
						
							|  |  |  |     pass | 
					
						
							|  |  |  | else: | 
					
						
							|  |  |  |     print "writelines accepted sequence of integers" | 
					
						
							|  |  |  | f.close() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # verify writelines with integers in UserList | 
					
						
							|  |  |  | f = open(TESTFN, 'wb') | 
					
						
							|  |  |  | l = UserList([1,2,3]) | 
					
						
							|  |  |  | try: | 
					
						
							|  |  |  |     f.writelines(l) | 
					
						
							|  |  |  | except TypeError: | 
					
						
							|  |  |  |     pass | 
					
						
							|  |  |  | else: | 
					
						
							|  |  |  |     print "writelines accepted sequence of integers" | 
					
						
							|  |  |  | f.close() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # verify writelines with non-string object | 
					
						
							|  |  |  | class NonString: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f = open(TESTFN, 'wb') | 
					
						
							|  |  |  | try: | 
					
						
							|  |  |  |     f.writelines([NonString(), NonString()]) | 
					
						
							|  |  |  | except TypeError: | 
					
						
							|  |  |  |     pass | 
					
						
							|  |  |  | else: | 
					
						
							|  |  |  |     print "writelines accepted sequence of non-string objects" | 
					
						
							|  |  |  | f.close() | 
					
						
							| 
									
										
										
										
											2000-10-23 16:59:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-11-09 19:34:43 +00:00
										 |  |  | # verify that we get a sensible error message for bad mode argument | 
					
						
							| 
									
										
										
										
											2001-11-09 16:17:24 +00:00
										 |  |  | bad_mode = "qwerty" | 
					
						
							|  |  |  | try: | 
					
						
							|  |  |  |     open(TESTFN, bad_mode) | 
					
						
							|  |  |  | except IOError, msg: | 
					
						
							| 
									
										
										
										
											2001-11-09 19:34:43 +00:00
										 |  |  |     if msg[0] != 0: | 
					
						
							|  |  |  |         s = str(msg) | 
					
						
							|  |  |  |         if s.find(TESTFN) != -1 or s.find(bad_mode) == -1: | 
					
						
							|  |  |  |             print "bad error message for invalid mode: %s" % s | 
					
						
							|  |  |  |     # if msg[0] == 0, we're probably on Windows where there may be | 
					
						
							|  |  |  |     # no obvious way to discover why open() failed. | 
					
						
							| 
									
										
										
										
											2001-11-09 16:17:24 +00:00
										 |  |  | else: | 
					
						
							|  |  |  |     print "no error for invalid mode: %s" % bad_mode | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-01-01 19:11:13 +00:00
										 |  |  | f = open(TESTFN) | 
					
						
							|  |  |  | if f.name != TESTFN: | 
					
						
							| 
									
										
										
										
											2002-04-01 18:59:20 +00:00
										 |  |  |     raise TestFailed, 'file.name should be "%s"' % TESTFN | 
					
						
							| 
									
										
										
										
											2002-01-01 19:11:13 +00:00
										 |  |  | if f.isatty(): | 
					
						
							| 
									
										
										
										
											2002-04-01 18:59:20 +00:00
										 |  |  |     raise TestFailed, 'file.isatty() should be false' | 
					
						
							| 
									
										
										
										
											2002-01-01 19:11:13 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if f.closed: | 
					
						
							| 
									
										
										
										
											2002-04-01 18:59:20 +00:00
										 |  |  |     raise TestFailed, 'file.closed should be false' | 
					
						
							| 
									
										
										
										
											2002-01-01 19:11:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-04-01 00:09:00 +00:00
										 |  |  | try: | 
					
						
							|  |  |  |     f.readinto("") | 
					
						
							|  |  |  | except TypeError: | 
					
						
							|  |  |  |     pass | 
					
						
							|  |  |  | else: | 
					
						
							| 
									
										
										
										
											2002-04-01 18:59:20 +00:00
										 |  |  |     raise TestFailed, 'file.readinto("") should raise a TypeError' | 
					
						
							| 
									
										
										
										
											2002-04-01 00:09:00 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-01-01 19:11:13 +00:00
										 |  |  | f.close() | 
					
						
							|  |  |  | if not f.closed: | 
					
						
							| 
									
										
										
										
											2002-04-01 18:59:20 +00:00
										 |  |  |     raise TestFailed, 'file.closed should be true' | 
					
						
							| 
									
										
										
										
											2002-01-01 19:11:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-08-06 15:58:24 +00:00
										 |  |  | methods = ['fileno', 'flush', 'isatty', 'next', 'read', 'readinto', | 
					
						
							|  |  |  |            'readline', 'readlines', 'seek', 'tell', 'truncate', 'write', | 
					
						
							|  |  |  |            'xreadlines', '__iter__'] | 
					
						
							| 
									
										
										
										
											2002-06-11 06:22:31 +00:00
										 |  |  | if sys.platform.startswith('atheos'): | 
					
						
							|  |  |  |     methods.remove('truncate') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | for methodname in methods: | 
					
						
							| 
									
										
										
										
											2002-01-01 19:11:13 +00:00
										 |  |  |     method = getattr(f, methodname) | 
					
						
							|  |  |  |     try: | 
					
						
							|  |  |  |         method() | 
					
						
							|  |  |  |     except ValueError: | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  |     else: | 
					
						
							| 
									
										
										
										
											2002-04-01 18:59:20 +00:00
										 |  |  |         raise TestFailed, 'file.%s() on a closed file should raise a ValueError' % methodname | 
					
						
							| 
									
										
										
										
											2002-01-01 19:11:13 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | try: | 
					
						
							|  |  |  |     f.writelines([]) | 
					
						
							|  |  |  | except ValueError: | 
					
						
							|  |  |  |     pass | 
					
						
							|  |  |  | else: | 
					
						
							| 
									
										
										
										
											2002-04-01 18:59:20 +00:00
										 |  |  |     raise TestFailed, 'file.writelines([]) on a closed file should raise a ValueError' | 
					
						
							| 
									
										
										
										
											2002-01-01 19:11:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-10-23 16:59:35 +00:00
										 |  |  | os.unlink(TESTFN) |