8000 [3.6] IDLE test_textview: add comments and test, increase coverage to… · Mariatta/cpython@59af20c · GitHub
[go: up one dir, main page]

Skip to content

Commit 59af20c

Browse files
terryjreedyMariatta
authored andcommitted
[3.6] IDLE test_textview: add comments and test, increase coverage to 100% (pythonGH-1641).
(cherry picked from commit 295304d)
1 parent 03c7600 commit 59af20c

File tree

2 files changed

+64
-7
lines changed

2 files changed

+64
-7
lines changed

Lib/idlelib/idle_test/test_textview.py

Lines changed: 62 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
Using mock Text would not change this. Other mocks are used to retrieve
66
information about calls.
77
8-
Coverage: 94%.
8+
Coverage: 100%.
99
'''
1010
from idlelib import textview as tv
1111
from test.support import requires
@@ -28,12 +28,18 @@ def tearDownModule():
2828
root.destroy() # Pyflakes falsely sees root as undefined.
2929
del root
3030

31+
# If we call TextViewer or wrapper functions with defaults
32+
# modal=True, _utest=False, test hangs on call to wait_window.
33+
# Have also gotten tk error 'can't invoke "event" command'.
34+
3135

3236
class TV(tv.TextViewer): # Used in TextViewTest.
3337
transient = Func()
3438
grab_set = Func()
3539
wait_window = Func()
3640

41+
42+
# Call wrapper class with mock wait_window.
3743
class TextViewTest(unittest.TestCase):
3844

3945
def setUp(self):
@@ -64,6 +70,7 @@ def test_ok(self):
6470
view.destroy()
6571

6672

73+
# Call TextViewer with modal=False.
6774
class ViewFunctionTest(unittest.TestCase):
6875

6976
@classmethod
@@ -77,23 +84,71 @@ def tearDownClass(cls):
7784
del cls.orig_error
7885

7986
def test_view_text(self):
80-
# If modal True, get tk error 'can't invoke "event" command'.
8187
view = tv.view_text(root, 'Title', 'test text', modal=False)
8288
self.assertIsInstance(view, tv.TextViewer)
8389
view.Ok()
8490

8591
def test_view_file(self):
86-
test_dir = os.path.dirname(__file__)
87-
testfile = os.path.join(test_dir, 'test_textview.py')
88-
view = tv.view_file(root, 'Title', testfile, modal=False)
92+
view = tv.view_file(root, 'Title', __file__, modal=False)
8993
self.assertIsInstance(view, tv.TextViewer)
9094
self.assertIn('Test', view.textView.get('1.0', '1.end'))
9195
view.Ok()
9296

97+
def test_bad_file(self):
9398
# Mock showerror will be used; view_file will return None.
94-
testfile = os.path.join(test_dir, '../notthere.py')
95-
view = tv.view_file(root, 'Title', testfile, modal=False)
99+
view = tv.view_file(root, 'Title', 'abc.xyz', modal=False)
96100
self.assertIsNone(view)
101+
self.assertEqual(tv.showerror.title, 'File Load Error')
102+
103+
def test_bad_encoding(self):
104+
p = os.path
105+
fn = p.abspath(p.join(p.dirname(__file__), '..', 'CREDITS.txt'))
106+
tv.showerror.title = None
107+
view = tv.view_file(root, 'Title', fn, 'ascii', modal=False)
108+
self.assertIsNone(view)
109+
self.assertEqual(tv.showerror.title, 'Unicode Decode Error')
110+
111+
112+
113+
# Call TextViewer with _utest=True.
114+
class ButtonClickTest(unittest.TestCase):
115+
116+
def setUp(self):
117+
self.view = None
118+
self.called = False
119+
120+
def tearDown(self):
121+
if self.view:
122+
self.view.destroy()
123+
124+
def test_view_text_bind_with_button(self):
125+
def _command():
126+
self.called = True
127+
self.view = tv.view_text(root, 'TITLE_TEXT', 'COMMAND', _utest=True)
128+
button = Button(root, text='BUTTON', command=_command)
129+
button.invoke()
130+
self.addCleanup(button.destroy)
131+
132+
self.assertEqual(self.called, True)
133+
self.assertEqual(self.view.title(), 'TITLE_TEXT')
134+
self.assertEqual(self.view.textView.get('1.0', '1.end'), 'COMMAND')
135+
136+
def test_view_file_bind_with_button(self):
137+
def _command():
138+
self.called = True
139+
self.view = tv.view_file(root, 'TITLE_FILE', __file__, _utest=True)
140+
button = Button(root, text='BUTTON', command=_command)
141+
button.invoke()
142+
self.addCleanup(button.destroy)
143+
144+
self.assertEqual(self.called, True)
145+
self.assertEqual(self.view.title(), 'TITLE_FILE')
146+
with open(__file__) as f:
147+
self.assertEqual(self.view.textView.get('1.0', '1.end'),
148+
f.readline().strip())
149+
f.readline()
150+
self.assertEqual(self.view.textView.get('3.0', '3.end'),
151+
f.readline().strip())
97152

98153

99154
if __name__ == '__main__':

Lib/idlelib/textview.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ def view_file(parent, title, filename, encoding=None, modal=True):
8282
parent=parent)
8383
else:
8484
return view_text(parent, title, contents, modal)
85+
return None
86+
8587

8688
if __name__ == '__main__':
8789
import unittest

0 commit comments

Comments
 (0)
0