Skip to content

Commit dd51d16

Browse files
author
Steven D'Aprano
committed
Issue27573 code.interact prints a message when exiting.
1 parent a0d3eef commit dd51d16

3 files changed

Lines changed: 14 additions & 2 deletions

File tree

Doc/library/code.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,9 @@ interpreter objects as well as the following additions.
147147
.. versionchanged:: 3.4
148148
To suppress printing any banner, pass an empty string.
149149

150+
.. versionchanged:: 3.6
151+
Now prints a brief message when exiting.
152+
150153

151154
.. method:: InteractiveConsole.push(line)
152155

Lib/code.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ def interact(self, banner=None):
230230
self.write("\nKeyboardInterrupt\n")
231231
self.resetbuffer()
232232
more = 0
233+
self.write('now exiting %s...\n' % self.__class__.__name__)
233234

234235
def push(self, line):
235236
"""Push a line to the interpreter.

Lib/test/test_code_module.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,23 @@ def test_banner(self):
6969
# with banner
7070
self.infunc.side_effect = EOFError('Finished')
7171
self.console.interact(banner='Foo')
72-
self.assertEqual(len(self.stderr.method_calls), 2)
72+
self.assertEqual(len(self.stderr.method_calls), 3)
7373
banner_call = self.stderr.method_calls[0]
7474
self.assertEqual(banner_call, ['write', ('Foo\n',), {}])
7575

7676
# no banner
7777
self.stderr.reset_mock()
7878
self.infunc.side_effect = EOFError('Finished')
7979
self.console.interact(banner='')
80-
self.assertEqual(len(self.stderr.method_calls), 1)
80+
self.assertEqual(len(self.stderr.method_calls), 2)
81+
82+
def test_exit_msg(self):
83+
self.infunc.side_effect = EOFError('Finished')
84+
self.console.interact(banner='')
85+
self.assertEqual(len(self.stderr.method_calls), 2)
86+
err_msg = self.stderr.method_calls[1]
87+
expected = 'now exiting InteractiveConsole...\n'
88+
self.assertEqual(err_msg, ['write', (expected,), {}])
8189

8290
def test_cause_tb(self):
8391
self.infunc.side_effect = ["raise ValueError('') from AttributeError",

0 commit comments

Comments
 (0)