@@ -1649,6 +1649,53 @@ def test_close_and_closed(self):
16491649 pair .close ()
16501650 self .assertTrue (pair .closed )
16511651
1652+ def test_reader_close_error_on_close (self ):
1653+ def reader_close ():
1654+ reader_non_existing
1655+ reader = self .MockRawIO ()
1656+ reader .close = reader_close
1657+ writer = self .MockRawIO ()
1658+ pair = self .tp (reader , writer )
1659+ with self .assertRaises (NameError ) as err :
1660+ pair .close ()
1661+ self .assertIn ('reader_non_existing' , str (err .exception ))
1662+ self .assertTrue (pair .closed )
1663+ self .assertFalse (reader .closed )
1664+ self .assertTrue (writer .closed )
1665+
1666+ def test_writer_close_error_on_close (self ):
1667+ def writer_close ():
1668+ writer_non_existing
1669+ reader = self .MockRawIO ()
1670+ writer = self .MockRawIO ()
1671+ writer .close = writer_close
1672+ pair = self .tp (reader , writer )
1673+ with self .assertRaises (NameError ) as err :
1674+ pair .close ()
1675+ self .assertIn ('writer_non_existing' , str (err .exception ))
1676+ self .assertFalse (pair .closed )
1677+ self .assertTrue (reader .closed )
1678+ self .assertFalse (writer .closed )
1679+
1680+ def test_reader_writer_close_error_on_close (self ):
1681+ def reader_close ():
1682+ reader_non_existing
1683+ def writer_close ():
1684+ writer_non_existing
1685+ reader = self .MockRawIO ()
1686+ reader .close = reader_close
1687+ writer = self .MockRawIO ()
1688+ writer .close = writer_close
1689+ pair = self .tp (reader , writer )
1690+ with self .assertRaises (NameError ) as err :
1691+ pair .close ()
1692+ self .assertIn ('reader_non_existing' , str (err .exception ))
1693+ self .assertIsInstance (err .exception .__context__ , NameError )
1694+ self .assertIn ('writer_non_existing' , str (err .exception .__context__ ))
1695+ self .assertFalse (pair .closed )
1696+ self .assertFalse (reader .closed )
1697+ self .assertFalse (writer .closed )
1698+
16521699 def test_isatty (self ):
16531700 class SelectableIsAtty (MockRawIO ):
16541701 def __init__ (self , isatty ):
0 commit comments