|
|
|
@ -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 |
|
|
|
|