changeset: 102129:d5ee1e5c1ac0 branch: 3.5 parent: 102127:783dfd77e4c1 user: Terry Jan Reedy date: Wed Jun 22 04:17:28 2016 -0400 files: Lib/idlelib/aboutDialog.py Lib/idlelib/idle_test/test_help_about.py Lib/idlelib/textView.py description: Issue #27365: Allow non-ascii in idlelib/NEWS.txt, for contributor names. Rest of patch that should not be cherry picked into 3.5.2 final. diff -r 783dfd77e4c1 -r d5ee1e5c1ac0 Lib/idlelib/aboutDialog.py --- a/Lib/idlelib/aboutDialog.py Wed Jun 22 03:55:20 2016 -0400 +++ b/Lib/idlelib/aboutDialog.py Wed Jun 22 04:17:28 2016 -0400 @@ -145,5 +145,7 @@ self.destroy() if __name__ == '__main__': + import unittest + unittest.main('idlelib.idle_test.test_helpabout', verbosity=2, exit=False) from idlelib.idle_test.htest import run run(AboutDialog) diff -r 783dfd77e4c1 -r d5ee1e5c1ac0 Lib/idlelib/idle_test/test_help_about.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/idlelib/idle_test/test_help_about.py Wed Jun 22 04:17:28 2016 -0400 @@ -0,0 +1,52 @@ +'''Test idlelib.help_about. + +Coverage: +''' +from idlelib import aboutDialog as help_about +from idlelib import textView as textview +from idlelib.idle_test.mock_idle import Func +from idlelib.idle_test.mock_tk import Mbox +import unittest + +About = help_about.AboutDialog +class Dummy_about_dialog(): + # Dummy class for testing file display functions. + idle_credits = About.ShowIDLECredits + idle_readme = About.ShowIDLEAbout + idle_news = About.ShowIDLENEWS + # Called by the above + display_file_text = About.display_file_text + + +class DisplayFileTest(unittest.TestCase): + "Test that .txt files are found and properly decoded." + dialog = Dummy_about_dialog() + + @classmethod + def setUpClass(cls): + cls.orig_mbox = textview.tkMessageBox + cls.orig_view = textview.view_text + cls.mbox = Mbox() + cls.view = Func() + textview.tkMessageBox = cls.mbox + textview.view_text = cls.view + cls.About = Dummy_about_dialog() + + @classmethod + def tearDownClass(cls): + textview.tkMessageBox = cls.orig_mbox + textview.view_text = cls.orig_view + + def test_file_isplay(self): + for handler in (self.dialog.idle_credits, + self.dialog.idle_readme, + self.dialog.idle_news): + self.mbox.showerror.message = '' + self.view.called = False + handler() + self.assertEqual(self.mbox.showerror.message, '') + self.assertEqual(self.view.called, True) + + +if __name__ == '__main__': + unittest.main(verbosity=2) diff -r 783dfd77e4c1 -r d5ee1e5c1ac0 Lib/idlelib/textView.py --- a/Lib/idlelib/textView.py Wed Jun 22 03:55:20 2016 -0400 +++ b/Lib/idlelib/textView.py Wed Jun 22 04:17:28 2016 -0400 @@ -76,6 +76,10 @@ tkMessageBox.showerror(title='File Load Error', message='Unable to load file %r .' % filename, parent=parent) + except UnicodeDecodeError as err: + tkMessageBox.showerror(title='Unicode Decode Error', + message=str(err), + parent=parent) else: return view_text(parent, title, contents, modal)