Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 096c6aa

Browse files
committed
Issue #27365: partial merge
2 parents 317c56d + 06a1fcb commit 096c6aa

3 files changed

Lines changed: 64 additions & 8 deletions

File tree

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
'''Test idlelib.help_about.
2+
3+
Coverage:
4+
'''
5+
from idlelib import aboutDialog as help_about
6+
from idlelib import textView as textview
7+
from idlelib.idle_test.mock_idle import Func
8+
from idlelib.idle_test.mock_tk import Mbox
9+
import unittest
10+
11+
About = help_about.AboutDialog
12+
class Dummy_about_dialog():
13+
# Dummy class for testing file display functions.
14+
idle_credits = About.ShowIDLECredits
15+
idle_readme = About.ShowIDLEAbout
16+
idle_news = About.ShowIDLENEWS
17+
# Called by the above
18+
display_file_text = About.display_file_text
19+
20+
21+
class DisplayFileTest(unittest.TestCase):
22+
"Test that .txt files are found and properly decoded."
23+
dialog = Dummy_about_dialog()
24+
25+
@classmethod
26+
def setUpClass(cls):
27+
cls.orig_mbox = textview.tkMessageBox
28+
cls.orig_view = textview.view_text
29+
cls.mbox = Mbox()
30+
cls.view = Func()
31+
textview.tkMessageBox = cls.mbox
32+
textview.view_text = cls.view
33+
cls.About = Dummy_about_dialog()
34+
35+
@classmethod
36+
def tearDownClass(cls):
37+
textview.tkMessageBox = cls.orig_mbox
38+
textview.view_text = cls.orig_view
39+
40+
def test_file_isplay(self):
41+
for handler in (self.dialog.idle_credits,
42+
self.dialog.idle_readme,
43+
self.dialog.idle_news):
44+
self.mbox.showerror.message = ''
45+
self.view.called = False
46+
handler()
47+
self.assertEqual(self.mbox.showerror.message, '')
48+
self.assertEqual(self.view.called, True)
49+
50+
51+
if __name__ == '__main__':
52+
unittest.main(verbosity=2)

Lib/idlelib/idle_test/test_textview.py

Lines changed: 8 additions & 8 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-
The coverage is essentially 100%.
8+
Coverage: 94%.
99
'''
1010
from idlelib import textview as tv
1111
from test.support import requires
@@ -15,7 +15,7 @@
1515
import os
1616
from tkinter import Tk
1717
from idlelib.idle_test.mock_idle import Func
18-
from idlelib.idle_test.mock_tk import Mbox
18+
from idlelib.idle_test.mock_tk import Mbox_func
1919

2020
def setUpModule():
2121
global root
@@ -64,17 +64,17 @@ def test_ok(self):
6464
view.destroy
6565

6666

67-
class textviewTest(unittest.TestCase):
67+
class ViewFunctionTest(unittest.TestCase):
6868

6969
@classmethod
7070
def setUpClass(cls):
71-
cls.orig_mbox = tv.tkMessageBox
72-
tv.tkMessageBox = Mbox
71+
cls.orig_error = tv.showerror
72+
tv.showerror = Mbox_func()
7373

7474
@classmethod
7575
def tearDownClass(cls):
76-
tv.tkMessageBox = cls.orig_mbox
77-
del cls.orig_mbox
76+
tv.showerror = cls.orig_error
77+
del cls.orig_error
7878

7979
def test_view_text(self):
8080
# If modal True, tkinter will error with 'can't invoke "event" command'
@@ -89,7 +89,7 @@ def test_view_file(self):
8989
self.assertIn('Test', view.textView.get('1.0', '1.end'))
9090
view.Ok()
9191

92-
# Mock messagebox will be used and view_file will not return anything
92+
# Mock showerror will be used and view_file will return None
9393
testfile = os.path.join(test_dir, '../notthere.py')
9494
view = tv.view_file(root, 'Title', testfile, modal=False)
9595
self.assertIsNone(view)

Lib/idlelib/textView.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ def view_file(parent, title, filename, encoding=None, modal=True):
7777
tkMessageBox.showerror(title='File Load Error',
7878
message='Unable to load file %r .' % filename,
7979
parent=parent)
80+
except UnicodeDecodeError as err:
81+
tkMessageBox.showerror(title='Unicode Decode Error',
82+
message=str(err),
83+
parent=parent)
8084
else:
8185
return view_text(parent, title, contents, modal)
8286

0 commit comments

Comments
 (0)