Skip to content

Commit

Permalink
IDLE test_textview: add comments and test, increase coverage to 100% (p…
Browse files Browse the repository at this point in the history
  • Loading branch information
terryjreedy authored May 18, 2017
1 parent ba365da commit 295304d
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 9 deletions.
33 changes: 24 additions & 9 deletions Lib/idlelib/idle_test/test_textview.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
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
Expand All @@ -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__()
Expand Down Expand Up @@ -64,6 +70,7 @@ def test_ok(self):
view.destroy()


# Call TextViewer with modal=False.
class ViewFunctionTest(unittest.TestCase):

@classmethod
Expand All @@ -77,26 +84,34 @@ def tearDownClass(cls):
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
Expand Down
1 change: 1 addition & 0 deletions Lib/idlelib/textview.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ def view_file(parent, title, filename, encoding=None, modal=True, _utest=False):
parent=parent)
else:
return view_text(parent, title, contents, modal, _utest=_utest)
return None


if __name__ == '__main__':
Expand Down

0 comments on commit 295304d

Please sign in to comment.