From: Steven D'Aprano Date: Sun, 14 Aug 2016 18:14:33 +0000 (+1000) Subject: Issue27573 code.interact prints a message when exiting. X-Git-Tag: v3.6.0a4~11 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dd51d16b485f013c8f6489fede4faf1686c59e5e;p=python Issue27573 code.interact prints a message when exiting. --- diff --git a/Doc/library/code.rst b/Doc/library/code.rst index 443af699f2..c573087af3 100644 --- a/Doc/library/code.rst +++ b/Doc/library/code.rst @@ -147,6 +147,9 @@ interpreter objects as well as the following additions. .. versionchanged:: 3.4 To suppress printing any banner, pass an empty string. + .. versionchanged:: 3.6 + Now prints a brief message when exiting. + .. method:: InteractiveConsole.push(line) diff --git a/Lib/code.py b/Lib/code.py index 53244e32ad..c8b72042e0 100644 --- a/Lib/code.py +++ b/Lib/code.py @@ -230,6 +230,7 @@ class InteractiveConsole(InteractiveInterpreter): self.write("\nKeyboardInterrupt\n") self.resetbuffer() more = 0 + self.write('now exiting %s...\n' % self.__class__.__name__) def push(self, line): """Push a line to the interpreter. diff --git a/Lib/test/test_code_module.py b/Lib/test/test_code_module.py index 3394b39e01..08ba3f3704 100644 --- a/Lib/test/test_code_module.py +++ b/Lib/test/test_code_module.py @@ -69,7 +69,7 @@ class TestInteractiveConsole(unittest.TestCase): # with banner self.infunc.side_effect = EOFError('Finished') self.console.interact(banner='Foo') - self.assertEqual(len(self.stderr.method_calls), 2) + self.assertEqual(len(self.stderr.method_calls), 3) banner_call = self.stderr.method_calls[0] self.assertEqual(banner_call, ['write', ('Foo\n',), {}]) @@ -77,7 +77,15 @@ class TestInteractiveConsole(unittest.TestCase): self.stderr.reset_mock() self.infunc.side_effect = EOFError('Finished') self.console.interact(banner='') - self.assertEqual(len(self.stderr.method_calls), 1) + self.assertEqual(len(self.stderr.method_calls), 2) + + def test_exit_msg(self): + self.infunc.side_effect = EOFError('Finished') + self.console.interact(banner='') + self.assertEqual(len(self.stderr.method_calls), 2) + err_msg = self.stderr.method_calls[1] + expected = 'now exiting InteractiveConsole...\n' + self.assertEqual(err_msg, ['write', (expected,), {}]) def test_cause_tb(self): self.infunc.side_effect = ["raise ValueError('') from AttributeError",