summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib/StackViewer.py
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2014-05-27 06:47:38 (GMT)
committerTerry Jan Reedy <tjreedy@udel.edu>2014-05-27 06:47:38 (GMT)
commit985ef280545912b1a76d1980c27a33e0ee7eaf0a (patch)
treeeeaaaa1d96110340130d89095781a23d51042868 /Lib/idlelib/StackViewer.py
parent7e19b60daeb18c3295dd19ce53bb55328bc5cb3c (diff)
downloadcpython-985ef280545912b1a76d1980c27a33e0ee7eaf0a.zip
cpython-985ef280545912b1a76d1980c27a33e0ee7eaf0a.tar.gz
cpython-985ef280545912b1a76d1980c27a33e0ee7eaf0a.tar.bz2
Issue #21477: Idle htest: modify run; add more tests.
Patch by Saimadhav Heblikar. 2.7 backport of 90829, d7eea8f608c2.
Diffstat (limited to 'Lib/idlelib/StackViewer.py')
-rw-r--r--Lib/idlelib/StackViewer.py41
1 files changed, 28 insertions, 13 deletions
diff --git a/Lib/idlelib/StackViewer.py b/Lib/idlelib/StackViewer.py
index 732773f..74c9136 100644
--- a/Lib/idlelib/StackViewer.py
+++ b/Lib/idlelib/StackViewer.py
@@ -1,9 +1,12 @@
import os
import sys
import linecache
+import re
+import Tkinter as tk
from idlelib.TreeWidget import TreeNode, TreeItem, ScrolledCanvas
from idlelib.ObjectBrowser import ObjectTreeItem, make_objecttreeitem
+from idlelib.PyShell import PyShellFileList
def StackBrowser(root, flist=None, tb=None, top=None):
if top is None:
@@ -121,17 +124,29 @@ class VariablesTreeItem(ObjectTreeItem):
sublist.append(item)
return sublist
-
-def _test():
- try:
- import testcode
- reload(testcode)
+def _stack_viewer(parent):
+ root = tk.Tk()
+ root.title("Test StackViewer")
+ width, height, x, y = list(map(int, re.split('[x+]', parent.geometry())))
+ root.geometry("+%d+%d"%(x, y + 150))
+ flist = PyShellFileList(root)
+ try: # to obtain a traceback object
+ a
except:
- sys.last_type, sys.last_value, sys.last_traceback = sys.exc_info()
- from Tkinter import Tk
- root = Tk()
- StackBrowser(None, top=root)
- root.mainloop()
-
-if __name__ == "__main__":
- _test()
+ exc_type, exc_value, exc_tb = sys.exc_info()
+
+ # inject stack trace to sys
+ sys.last_type = exc_type
+ sys.last_value = exc_value
+ sys.last_traceback = exc_tb
+
+ StackBrowser(root, flist=flist, top=root, tb=exc_tb)
+
+ # restore sys to original state
+ del sys.last_type
+ del sys.last_value
+ del sys.last_traceback
+
+if __name__ == '__main__':
+ from idlelib.idle_test.htest import run
+ run(_stack_viewer)