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)
|
||||
|
||||
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
|
||||
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
|
||||
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)
|
||||
|
||||
|
|
|
@ -216,7 +216,7 @@ class InteractiveConsole(InteractiveInterpreter):
|
|||
self.write("Python %s on %s\n%s\n(%s)\n" %
|
||||
(sys.version, sys.platform, cprt,
|
||||
self.__class__.__name__))
|
||||
else:
|
||||
elif banner:
|
||||
self.write("%s\n" % str(banner))
|
||||
more = 0
|
||||
while 1:
|
||||
|
|
|
@ -64,6 +64,20 @@ class TestInteractiveConsole(unittest.TestCase):
|
|||
self.console.interact()
|
||||
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():
|
||||
support.run_unittest(TestInteractiveConsole)
|
||||
|
|
Loading…
Reference in New Issue