mirror of https://github.com/python/cpython
Closes #17730: in code.interact(), when banner="", do not print anything.
Also adds tests for banner printing.
This commit is contained in:
parent
a8fc7f6fac
commit
fbc3c3c2be
|
@ -132,12 +132,15 @@ interpreter objects as well as the following additions.
|
||||||
|
|
||||||
.. method:: InteractiveConsole.interact(banner=None)
|
.. method:: InteractiveConsole.interact(banner=None)
|
||||||
|
|
||||||
Closely emulate the interactive Python console. The optional banner argument
|
Closely emulate the interactive Python console. The optional *banner* argument
|
||||||
specify the banner to print before the first interaction; by default it prints a
|
specify the banner to print before the first interaction; by default it prints a
|
||||||
banner similar to the one printed by the standard Python interpreter, followed
|
banner similar to the one printed by the standard Python interpreter, followed
|
||||||
by the class name of the console object in parentheses (so as not to confuse
|
by the class name of the console object in parentheses (so as not to confuse
|
||||||
this with the real interpreter -- since it's so close!).
|
this with the real interpreter -- since it's so close!).
|
||||||
|
|
||||||
|
.. versionchanged:: 3.4
|
||||||
|
To suppress printing any banner, pass an empty string.
|
||||||
|
|
||||||
|
|
||||||
.. method:: InteractiveConsole.push(line)
|
.. method:: InteractiveConsole.push(line)
|
||||||
|
|
||||||
|
|
|
@ -216,7 +216,7 @@ class InteractiveConsole(InteractiveInterpreter):
|
||||||
self.write("Python %s on %s\n%s\n(%s)\n" %
|
self.write("Python %s on %s\n%s\n(%s)\n" %
|
||||||
(sys.version, sys.platform, cprt,
|
(sys.version, sys.platform, cprt,
|
||||||
self.__class__.__name__))
|
self.__class__.__name__))
|
||||||
else:
|
elif banner:
|
||||||
self.write("%s\n" % str(banner))
|
self.write("%s\n" % str(banner))
|
||||||
more = 0
|
more = 0
|
||||||
while 1:
|
while 1:
|
||||||
|
|
|
@ -64,6 +64,20 @@ class TestInteractiveConsole(unittest.TestCase):
|
||||||
self.console.interact()
|
self.console.interact()
|
||||||
self.assertTrue(hook.called)
|
self.assertTrue(hook.called)
|
||||||
|
|
||||||
|
def test_banner(self):
|
||||||
|
# with banner
|
||||||
|
self.infunc.side_effect = EOFError('Finished')
|
||||||
|
self.console.interact(banner='Foo')
|
||||||
|
self.assertEqual(len(self.stderr.method_calls), 2)
|
||||||
|
banner_call = self.stderr.method_calls[0]
|
||||||
|
self.assertEqual(banner_call, ['write', ('Foo\n',), {}])
|
||||||
|
|
||||||
|
# no banner
|
||||||
|
self.stderr.reset_mock()
|
||||||
|
self.infunc.side_effect = EOFError('Finished')
|
||||||
|
self.console.interact(banner='')
|
||||||
|
self.assertEqual(len(self.stderr.method_calls), 1)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def test_main():
|
||||||
support.run_unittest(TestInteractiveConsole)
|
support.run_unittest(TestInteractiveConsole)
|
||||||
|
|
Loading…
Reference in New Issue