Commit bcd3a1a1 authored by Terry Jan Reedy's avatar Terry Jan Reedy Committed by GitHub

bpo-33905: Add test for idlelib.stackview.StackBrowser. (GH-7852)

Increases coverage by 44%.
parent 419e88d1
"Test stackviewer, coverage 19%." "Test stackviewer, coverage 63%."
from idlelib import stackviewer from idlelib import stackviewer
import unittest import unittest
from test.support import requires from test.support import requires
from tkinter import Tk from tkinter import Tk
from idlelib.tree import TreeNode, ScrolledCanvas
import sys
class Test(unittest.TestCase):
class StackBrowserTest(unittest.TestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
svs = stackviewer.sys
try:
abc
except NameError:
svs.last_type, svs.last_value, svs.last_traceback = (
sys.exc_info())
requires('gui') requires('gui')
cls.root = Tk() cls.root = Tk()
cls.root.withdraw() cls.root.withdraw()
@classmethod @classmethod
def tearDownClass(cls): def tearDownClass(cls):
svs = stackviewer.sys
del svs.last_traceback, svs.last_type, svs.last_value
cls.root.update_idletasks() cls.root.update_idletasks()
## for id in cls.root.tk.call('after', 'info'): ## for id in cls.root.tk.call('after', 'info'):
## cls.root.after_cancel(id) # Need for EditorWindow. ## cls.root.after_cancel(id) # Need for EditorWindow.
...@@ -23,13 +36,11 @@ class Test(unittest.TestCase): ...@@ -23,13 +36,11 @@ class Test(unittest.TestCase):
del cls.root del cls.root
def test_init(self): def test_init(self):
try: sb = stackviewer.StackBrowser(self.root)
zzz isi = self.assertIsInstance
except NameError as e: isi(stackviewer.sc, ScrolledCanvas)
ex = e isi(stackviewer.item, stackviewer.StackTreeItem)
# Test runners suppress setting of sys.last_xyx, which stackviewer needs. isi(stackviewer.node, TreeNode)
# Revise stackviewer so following works.
# stackviewer.StackBrowser(self.root, ex=exc)
if __name__ == '__main__': if __name__ == '__main__':
......
...@@ -8,6 +8,7 @@ from idlelib.debugobj import ObjectTreeItem, make_objecttreeitem ...@@ -8,6 +8,7 @@ from idlelib.debugobj import ObjectTreeItem, make_objecttreeitem
from idlelib.tree import TreeNode, TreeItem, ScrolledCanvas from idlelib.tree import TreeNode, TreeItem, ScrolledCanvas
def StackBrowser(root, flist=None, tb=None, top=None): def StackBrowser(root, flist=None, tb=None, top=None):
global sc, item, node # For testing.
if top is None: if top is None:
top = tk.Toplevel(root) top = tk.Toplevel(root)
sc = ScrolledCanvas(top, bg="white", highlightthickness=0) sc = ScrolledCanvas(top, bg="white", highlightthickness=0)
...@@ -134,7 +135,6 @@ def _stack_viewer(parent): # htest # ...@@ -134,7 +135,6 @@ def _stack_viewer(parent): # htest #
intentional_name_error intentional_name_error
except NameError: except NameError:
exc_type, exc_value, exc_tb = sys.exc_info() exc_type, exc_value, exc_tb = sys.exc_info()
# inject stack trace to sys # inject stack trace to sys
sys.last_type = exc_type sys.last_type = exc_type
sys.last_value = exc_value sys.last_value = exc_value
...@@ -149,7 +149,7 @@ def _stack_viewer(parent): # htest # ...@@ -149,7 +149,7 @@ def _stack_viewer(parent): # htest #
if __name__ == '__main__': if __name__ == '__main__':
from unittest import main from unittest import main
main('idlelib.idle_test.test_stackviewer', verbosity=2) main('idlelib.idle_test.test_stackviewer', verbosity=2, exit=False)
from idlelib.idle_test.htest import run from idlelib.idle_test.htest import run
run(_stack_viewer) run(_stack_viewer)
Add test for idlelib.stackview.StackBrowser.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment