def __del__(self):
"""Destructor. Calls close()."""
+ try:
+ closed = self.closed
+ except Exception:
+ # If getting closed fails, then the object is probably
+ # in an unusable state, so ignore.
+ return
+
+ if closed:
+ return
+
if _IOBASE_EMITS_UNRAISABLE:
self.close()
else:
def seekable(self):
return True
+ def seek(self, pos, whence=0):
+ # naive implementation, enough for tests
+ return 0
+
def writable(self):
return True
self.assertRaises(OSError, bufio.seek, 0)
self.assertRaises(OSError, bufio.tell)
+ # Silence destructor error
+ bufio.close = lambda: None
+
def test_no_extraneous_read(self):
# Issue #9550; when the raw IO object has satisfied the read request,
# we should not issue any additional reads, otherwise it may block
self.assertRaises(OSError, bufio.tell)
self.assertRaises(OSError, bufio.write, b"abcdef")
+ # Silence destructor error
+ bufio.close = lambda: None
+
def test_max_buffer_size_removal(self):
with self.assertRaises(TypeError):
self.tp(self.MockRawIO(), 8, 12)
# Silence destructor error
writer.close = lambda: None
+ writer = None
+
+ with support.catch_unraisable_exception():
+ pair = None
+ support.gc_collect()
def test_reader_writer_close_error_on_close(self):
def reader_close():