summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib/idle_test/test_textview.py
diff options
context:
space:
mode:
authorterryjreedy <tjreedy@udel.edu>2017-05-18 02:59:46 (GMT)
committerGitHub <noreply@github.com>2017-05-18 02:59:46 (GMT)
commit295304d412700cc6621bb592109fa42249a9dcdb (patch)
tree88645b04db06447c8f6bbb9dfd01966694858428 /Lib/idlelib/idle_test/test_textview.py
parentba365da9cee8901fad08ab0b61c7489c110e5c97 (diff)
downloadcpython-295304d412700cc6621bb592109fa42249a9dcdb.zip
cpython-295304d412700cc6621bb592109fa42249a9dcdb.tar.gz
cpython-295304d412700cc6621bb592109fa42249a9dcdb.tar.bz2
IDLE test_textview: add comments and test, increase coverage to 100% (#1641)
Diffstat (limited to 'Lib/idlelib/idle_test/test_textview.py')
-rw-r--r--Lib/idlelib/idle_test/test_textview.py33
1 files changed, 24 insertions, 9 deletions
diff --git a/Lib/idlelib/idle_test/test_textview.py b/Lib/idlelib/idle_test/test_textview.py
index 67fc0b7..57b886a 100644
--- a/Lib/idlelib/idle_test/test_textview.py
+++ b/Lib/idlelib/idle_test/test_textview.py
@@ -5,7 +5,7 @@ is a widget containing multiple widgets, all tests must be gui tests.
Using mock Text would not change this. Other mocks are used to retrieve
information about calls.
-Coverage: 94%.
+Coverage: 100%.
'''
from idlelib import textview as tv
from test.support import requires
@@ -28,14 +28,20 @@ def tearDownModule():
root.destroy() # Pyflakes falsely sees root as undefined.
del root
+# If we call TextViewer or wrapper functions with defaults
+# modal=True, _utest=False, test hangs on call to wait_window.
+# Have also gotten tk error 'can't invoke "event" command'.
+
class TV(tv.TextViewer): # Used in TextViewTest.
transient = Func()
grab_set = Func()
wait_window = Func()
-class TextViewTest(unittest.TestCase):
+# Call wrapper class with mock wait_window.
+class TextViewTest(unittest.TestCase):
+
def setUp(self):
TV.transient.__init__()
TV.grab_set.__init__()
@@ -64,6 +70,7 @@ class TextViewTest(unittest.TestCase):
view.destroy()
+# Call TextViewer with modal=False.
class ViewFunctionTest(unittest.TestCase):
@classmethod
@@ -77,26 +84,34 @@ class ViewFunctionTest(unittest.TestCase):
del cls.orig_error
def test_view_text(self):
- # If modal True, get tk error 'can't invoke "event" command'.
view = tv.view_text(root, 'Title', 'test text', modal=False)
self.assertIsInstance(view, tv.TextViewer)
view.Ok()
def test_view_file(self):
- test_dir = os.path.dirname(__file__)
- testfile = os.path.join(test_dir, 'test_textview.py')
- view = tv.view_file(root, 'Title', testfile, modal=False)
+ view = tv.view_file(root, 'Title', __file__, modal=False)
self.assertIsInstance(view, tv.TextViewer)
self.assertIn('Test', view.textView.get('1.0', '1.end'))
view.Ok()
+ def test_bad_file(self):
# Mock showerror will be used; view_file will return None.
- testfile = os.path.join(test_dir, '../notthere.py')
- view = tv.view_file(root, 'Title', testfile, modal=False)
+ view = tv.view_file(root, 'Title', 'abc.xyz', modal=False)
self.assertIsNone(view)
+ self.assertEqual(tv.showerror.title, 'File Load Error')
+
+ def test_bad_encoding(self):
+ p = os.path
+ fn = p.abspath(p.join(p.dirname(__file__), '..', 'CREDITS.txt'))
+ tv.showerror.title = None
+ view = tv.view_file(root, 'Title', fn, 'ascii', modal=False)
+ self.assertIsNone(view)
+ self.assertEqual(tv.showerror.title, 'Unicode Decode Error')
+
-class ButtonClickTextViewTest(unittest.TestCase):
+# Call TextViewer with _utest=True.
+class ButtonClickTest(unittest.TestCase):
def setUp(self):
self.view = None