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

Increases coverage by 44%.
This commit is contained in:
Terry Jan Reedy 2018-06-21 22:19:56 -04:00 committed by GitHub
parent 419e88d18c
commit bcd3a1a18d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 11 deletions

View file

@ -1,21 +1,34 @@
"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):
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__':

View file

@ -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 #
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 #
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)

View file

@ -0,0 +1 @@
Add test for idlelib.stackview.StackBrowser.