summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_io.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-03-24 21:21:57 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2015-03-24 21:21:57 (GMT)
commit7665be6087d879a96c4238684b2dfc642c67e60c (patch)
treee0b51ca3e484cd4717ed04857935a018234a3d9b /Lib/test/test_io.py
parent8ffe917cee26b83fed4f227c4ed16d4eec15dcf9 (diff)
downloadcpython-7665be6087d879a96c4238684b2dfc642c67e60c.zip
cpython-7665be6087d879a96c4238684b2dfc642c67e60c.tar.gz
cpython-7665be6087d879a96c4238684b2dfc642c67e60c.tar.bz2
Issue #21802: The reader in BufferedRWPair now is closed even when closing
writer failed in BufferedRWPair.close().
Diffstat (limited to 'Lib/test/test_io.py')
-rw-r--r--Lib/test/test_io.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py
index 668b023..5b2bf46 100644
--- a/Lib/test/test_io.py
+++ b/Lib/test/test_io.py
@@ -1588,6 +1588,53 @@ class BufferedRWPairTest(unittest.TestCase):
pair.close()
self.assertTrue(pair.closed)
+ def test_reader_close_error_on_close(self):
+ def reader_close():
+ reader_non_existing
+ reader = self.MockRawIO()
+ reader.close = reader_close
+ writer = self.MockRawIO()
+ pair = self.tp(reader, writer)
+ with self.assertRaises(NameError) as err:
+ pair.close()
+ self.assertIn('reader_non_existing', str(err.exception))
+ self.assertTrue(pair.closed)
+ self.assertFalse(reader.closed)
+ self.assertTrue(writer.closed)
+
+ def test_writer_close_error_on_close(self):
+ def writer_close():
+ writer_non_existing
+ reader = self.MockRawIO()
+ writer = self.MockRawIO()
+ writer.close = writer_close
+ pair = self.tp(reader, writer)
+ with self.assertRaises(NameError) as err:
+ pair.close()
+ self.assertIn('writer_non_existing', str(err.exception))
+ self.assertFalse(pair.closed)
+ self.assertTrue(reader.closed)
+ self.assertFalse(writer.closed)
+
+ def test_reader_writer_close_error_on_close(self):
+ def reader_close():
+ reader_non_existing
+ def writer_close():
+ writer_non_existing
+ reader = self.MockRawIO()
+ reader.close = reader_close
+ writer = self.MockRawIO()
+ writer.close = writer_close
+ pair = self.tp(reader, writer)
+ with self.assertRaises(NameError) as err:
+ pair.close()
+ self.assertIn('reader_non_existing', str(err.exception))
+ self.assertIsInstance(err.exception.__context__, NameError)
+ self.assertIn('writer_non_existing', str(err.exception.__context__))
+ self.assertFalse(pair.closed)
+ self.assertFalse(reader.closed)
+ self.assertFalse(writer.closed)
+
def test_isatty(self):
class SelectableIsAtty(MockRawIO):
def __init__(self, isatty):