changeset: 101338:27a49daf7925 user: Martin Panter date: Sun May 15 03:05:36 2016 +0000 files: Lib/test/test_readline.py description: Issue #26870: Close pty master in case of exception diff -r 4195fa81b188 -r 27a49daf7925 Lib/test/test_readline.py --- a/Lib/test/test_readline.py Sun May 15 01:26:25 2016 +0000 +++ b/Lib/test/test_readline.py Sun May 15 03:05:36 2016 +0000 @@ -1,6 +1,7 @@ """ Very minimal unittests for parts of the readline module. """ +from contextlib import ExitStack from errno import EIO import os import selectors @@ -123,7 +124,10 @@ args = (sys.executable, '-c', script) proc = subprocess.Popen(args, stdin=slave, stdout=slave, stderr=slave) os.close(slave) - with proc, selectors.DefaultSelector() as sel: + with ExitStack() as cleanup: + cleanup.enter_context(proc) + cleanup.callback(os.close, master) + sel = cleanup.enter_context(selectors.DefaultSelector()) sel.register(master, selectors.EVENT_READ | selectors.EVENT_WRITE) os.set_blocking(master, False) while True: @@ -137,7 +141,6 @@ raise chunk = b"" if not chunk: - os.close(master) return output output.extend(chunk) if events & selectors.EVENT_WRITE: