◐ Shell
clean mode source ↗

bpo-30303: IDLE test_textview: add comments and test; increase coverage to 100% by terryjreedy · Pull Request #1641 · python/cpython

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