Skip to content

Commit 634adcc

Browse files
Revert "Fix double decref in error path"
This reverts commit 6b63066.
1 parent 6b63066 commit 634adcc

File tree

1 file changed

+29
-3
lines changed

1 file changed

+29
-3
lines changed

Lib/idlelib/idle_test/test_run.py

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -396,12 +396,38 @@ def test_fatal_error(self):
396396
self.assertIn('IndexError', msg)
397397
eq(func.called, 2)
398398

399-
a = []
400-
x = a.append
399+
401400
class ExecRuncodeTest(unittest.TestCase):
402401

402+
@classmethod
403+
def setUpClass(cls):
404+
cls.addClassCleanup(setattr,run,'print_exception',run.print_exception)
405+
cls.prt = Func() # Need reference.
406+
run.print_exception = cls.prt
407+
mockrpc = mock.Mock()
408+
mockrpc.console.getvar = Func(result=False)
409+
cls.ex = run.Executive(mockrpc)
410+
411+
@classmethod
412+
def tearDownClass(cls):
413+
assert sys.excepthook == sys.__excepthook__
414+
403415
def test_exceptions(self):
404-
x(lambda a:a)
416+
ex = self.ex
417+
ex.runcode('1/0')
418+
self.assertIs(ex.user_exc_info[0], ZeroDivisionError)
419+
420+
self.addCleanup(setattr, sys, 'excepthook', sys.__excepthook__)
421+
sys.excepthook = lambda t, e, tb: run.print_exception(t)
422+
ex.runcode('1/0')
423+
self.assertIs(self.prt.args[0], ZeroDivisionError)
424+
425+
sys.excepthook = lambda: None
426+
ex.runcode('1/0')
427+
t, e, tb = ex.user_exc_info
428+
self.assertIs(t, TypeError)
429+
self.assertTrue(isinstance(e.__context__, ZeroDivisionError))
430+
405431

406432
if __name__ == '__main__':
407433
unittest.main(verbosity=2)

0 commit comments

Comments
 (0)