@@ -1588,6 +1588,53 @@ def test_close_and_closed(self):
15881588 pair .close ()
15891589 self .assertTrue (pair .closed )
15901590
1591+ def test_reader_close_error_on_close (self ):
1592+ def reader_close ():
1593+ reader_non_existing
1594+ reader = self .MockRawIO ()
1595+ reader .close = reader_close
1596+ writer = self .MockRawIO ()
1597+ pair = self .tp (reader , writer )
1598+ with self .assertRaises (NameError ) as err :
1599+ pair .close ()
1600+ self .assertIn ('reader_non_existing' , str (err .exception ))
1601+ self .assertTrue (pair .closed )
1602+ self .assertFalse (reader .closed )
1603+ self .assertTrue (writer .closed )
1604+
1605+ def test_writer_close_error_on_close (self ):
1606+ def writer_close ():
1607+ writer_non_existing
1608+ reader = self .MockRawIO ()
1609+ writer = self .MockRawIO ()
1610+ writer .close = writer_close
1611+ pair = self .tp (reader , writer )
1612+ with self .assertRaises (NameError ) as err :
1613+ pair .close ()
1614+ self .assertIn ('writer_non_existing' , str (err .exception ))
1615+ self .assertFalse (pair .closed )
1616+ self .assertTrue (reader .closed )
1617+ self .assertFalse (writer .closed )
1618+
1619+ def test_reader_writer_close_error_on_close (self ):
1620+ def reader_close ():
1621+ reader_non_existing
1622+ def writer_close ():
1623+ writer_non_existing
1624+ reader = self .MockRawIO ()
1625+ reader .close = reader_close
1626+ writer = self .MockRawIO ()
1627+ writer .close = writer_close
1628+ pair = self .tp (reader , writer )
1629+ with self .assertRaises (NameError ) as err :
1630+ pair .close ()
1631+ self .assertIn ('reader_non_existing' , str (err .exception ))
1632+ self .assertIsInstance (err .exception .__context__ , NameError )
1633+ self .assertIn ('writer_non_existing' , str (err .exception .__context__ ))
1634+ self .assertFalse (pair .closed )
1635+ self .assertFalse (reader .closed )
1636+ self .assertFalse (writer .closed )
1637+
15911638 def test_isatty (self ):
15921639 class SelectableIsAtty (MockRawIO ):
15931640 def __init__ (self , isatty ):
0 commit comments