mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
bpo-41468: Improve and test IDLE run error exit (GH-21798)
A message box pops up when an unexpected error stops the run process. Tell users it is likely a random glitch, but report it if not.
(cherry picked from commit f2e161c279
)
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
This commit is contained in:
parent
6860cf5387
commit
a9fa66377f
4 changed files with 49 additions and 10 deletions
|
@ -1,9 +1,10 @@
|
|||
"Test run, coverage 42%."
|
||||
"Test run, coverage 49%."
|
||||
|
||||
from idlelib import run
|
||||
import unittest
|
||||
from unittest import mock
|
||||
from test.support import captured_stderr
|
||||
from idlelib.idle_test.mock_idle import Func
|
||||
from test.support import captured_output, captured_stderr
|
||||
|
||||
import io
|
||||
import sys
|
||||
|
@ -323,5 +324,32 @@ class RecursionLimitTest(unittest.TestCase):
|
|||
self.assertEqual(func.__doc__, "more")
|
||||
|
||||
|
||||
class HandleErrorTest(unittest.TestCase):
|
||||
# Method of MyRPCServer
|
||||
func = Func()
|
||||
@mock.patch('idlelib.run.thread.interrupt_main', new=func)
|
||||
def test_error(self):
|
||||
eq = self.assertEqual
|
||||
with captured_output('__stderr__') as err:
|
||||
try:
|
||||
raise EOFError
|
||||
except EOFError:
|
||||
run.MyRPCServer.handle_error(None, 'abc', '123')
|
||||
eq(run.exit_now, True)
|
||||
run.exit_now = False
|
||||
eq(err.getvalue(), '')
|
||||
|
||||
try:
|
||||
raise IndexError
|
||||
except IndexError:
|
||||
run.MyRPCServer.handle_error(None, 'abc', '123')
|
||||
eq(run.quitting, True)
|
||||
run.quitting = False
|
||||
msg = err.getvalue()
|
||||
self.assertIn('abc', msg)
|
||||
self.assertIn('123', msg)
|
||||
self.assertIn('IndexError', msg)
|
||||
eq(self.func.called, 2)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main(verbosity=2)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue