(self)
| 1754 | # older than 10.6 (Snow Leopard) |
| 1755 | @support.requires_mac_ver(10, 6) |
| 1756 | def test_write_pty(self): |
| 1757 | master, slave = os.openpty() |
| 1758 | slave_write_obj = io.open(slave, 'wb', 0) |
| 1759 | |
| 1760 | proto = MyWritePipeProto(loop=self.loop) |
| 1761 | connect = self.loop.connect_write_pipe(lambda: proto, slave_write_obj) |
| 1762 | transport, p = self.loop.run_until_complete(connect) |
| 1763 | self.assertIs(p, proto) |
| 1764 | self.assertIs(transport, proto.transport) |
| 1765 | self.assertEqual('CONNECTED', proto.state) |
| 1766 | |
| 1767 | transport.write(b'1') |
| 1768 | |
| 1769 | data = bytearray() |
| 1770 | def reader(data): |
| 1771 | chunk = os.read(master, 1024) |
| 1772 | data += chunk |
| 1773 | return len(data) |
| 1774 | |
| 1775 | test_utils.run_until(self.loop, lambda: reader(data) >= 1, |
| 1776 | timeout=support.SHORT_TIMEOUT) |
| 1777 | self.assertEqual(b'1', data) |
| 1778 | |
| 1779 | transport.write(b'2345') |
| 1780 | test_utils.run_until(self.loop, lambda: reader(data) >= 5, |
| 1781 | timeout=support.SHORT_TIMEOUT) |
| 1782 | self.assertEqual(b'12345', data) |
| 1783 | self.assertEqual('CONNECTED', proto.state) |
| 1784 | |
| 1785 | os.close(master) |
| 1786 | |
| 1787 | # extra info is available |
| 1788 | self.assertIsNotNone(proto.transport.get_extra_info('pipe')) |
| 1789 | |
| 1790 | # close connection |
| 1791 | proto.transport.close() |
| 1792 | self.loop.run_until_complete(proto.done) |
| 1793 | self.assertEqual('CLOSED', proto.state) |
| 1794 | |
| 1795 | @unittest.skipUnless(sys.platform != 'win32', |
| 1796 | "Don't support pipes for Windows") |
no test coverage detected