Skip to content

Commit 83d6172

Browse files
Revert sys.ps1 and sys.ps2 after code interact
1 parent 9211b3d commit 83d6172

File tree

2 files changed

+42
-6
lines changed

2 files changed

+42
-6
lines changed

Lib/code.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,12 +218,14 @@ def interact(self, banner=None, exitmsg=None):
218218
219219
"""
220220
try:
221-
sys.ps1
221+
_ps1 = sys.ps1
222222
except AttributeError:
223+
_ps1 = None
223224
sys.ps1 = ">>> "
224225
try:
225-
sys.ps2
226+
_ps2 = sys.ps2
226227
except AttributeError:
228+
_ps2 = None
227229
sys.ps2 = "... "
228230
cprt = 'Type "help", "copyright", "credits" or "license" for more information.'
229231
if banner is None:
@@ -287,6 +289,12 @@ def interact(self, banner=None, exitmsg=None):
287289
if _quit is not None:
288290
builtins.quit = _quit
289291

292+
if _ps1 is None:
293+
del sys.ps1
294+
295+
if _ps2 is None:
296+
del sys.ps2
297+
290298
if exitmsg is None:
291299
self.write('now exiting %s...\n' % self.__class__.__name__)
292300
elif exitmsg != '':

Lib/test/test_code_module.py

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,47 @@ def setUp(self):
3939
self.mock_sys()
4040

4141
def test_ps1(self):
42-
self.infunc.side_effect = EOFError('Finished')
42+
self.infunc.side_effect = [
43+
"import code",
44+
"code.sys.ps1",
45+
EOFError('Finished')
46+
]
4347
self.console.interact()
44-
self.assertEqual(self.sysmod.ps1, '>>> ')
48+
output = ''.join(''.join(call[1]) for call in self.stdout.method_calls)
49+
self.assertIn('>>> ', output)
50+
self.assertFalse(hasattr(self.sysmod, 'ps1'))
51+
52+
self.infunc.side_effect = [
53+
"import code",
54+
"code.sys.ps1",
55+
EOFError('Finished')
56+
]
4557
self.sysmod.ps1 = 'custom1> '
4658
self.console.interact()
59+
output = ''.join(''.join(call[1]) for call in self.stdout.method_calls)
60+
self.assertIn('custom1> ', output)
4761
self.assertEqual(self.sysmod.ps1, 'custom1> ')
4862

4963
def test_ps2(self):
50-
self.infunc.side_effect = EOFError('Finished')
64+
self.infunc.side_effect = [
65+
"import code",
66+
"code.sys.ps2",
67+
EOFError('Finished')
68+
]
5169
self.console.interact()
52-
self.assertEqual(self.sysmod.ps2, '... ')
70+
output = ''.join(''.join(call[1]) for call in self.stdout.method_calls)
71+
self.assertIn('... ', output)
72+
self.assertFalse(hasattr(self.sysmod, 'ps2'))
73+
74+
self.infunc.side_effect = [
75+
"import code",
76+
"code.sys.ps2",
77+
EOFError('Finished')
78+
]
5379
self.sysmod.ps2 = 'custom2> '
5480
self.console.interact()
81+
output = ''.join(''.join(call[1]) for call in self.stdout.method_calls)
82+
self.assertIn('custom2> ', output)
5583
self.assertEqual(self.sysmod.ps2, 'custom2> ')
5684

5785
def test_console_stderr(self):

0 commit comments

Comments
 (0)