1"Test , coverage 17%." 2 3from idlelib import iomenu, util 4import unittest 5from test.support import requires 6from tkinter import Tk 7from idlelib.editor import EditorWindow 8 9 10class IOBindingTest(unittest.TestCase): 11 12 @classmethod 13 def setUpClass(cls): 14 requires('gui') 15 cls.root = Tk() 16 cls.root.withdraw() 17 cls.editwin = EditorWindow(root=cls.root) 18 cls.io = iomenu.IOBinding(cls.editwin) 19 20 @classmethod 21 def tearDownClass(cls): 22 cls.io.close() 23 cls.editwin._close() 24 del cls.editwin 25 cls.root.update_idletasks() 26 for id in cls.root.tk.call('after', 'info'): 27 cls.root.after_cancel(id) # Need for EditorWindow. 28 cls.root.destroy() 29 del cls.root 30 31 def test_init(self): 32 self.assertIs(self.io.editwin, self.editwin) 33 34 def test_fixnewlines_end(self): 35 eq = self.assertEqual 36 io = self.io 37 fix = io.fixnewlines 38 text = io.editwin.text 39 self.editwin.interp = None 40 eq(fix(), '') 41 del self.editwin.interp 42 text.insert(1.0, 'a') 43 eq(fix(), 'a'+io.eol_convention) 44 eq(text.get('1.0', 'end-1c'), 'a\n') 45 eq(fix(), 'a'+io.eol_convention) 46 47 48def _extension_in_filetypes(extension): 49 return any( 50 f'*{extension}' in filetype_tuple[1] 51 for filetype_tuple in iomenu.IOBinding.filetypes 52 ) 53 54 55class FiletypesTest(unittest.TestCase): 56 def test_python_source_files(self): 57 for extension in util.py_extensions: 58 with self.subTest(extension=extension): 59 self.assertTrue( 60 _extension_in_filetypes(extension) 61 ) 62 63 def test_text_files(self): 64 self.assertTrue(_extension_in_filetypes('.txt')) 65 66 def test_all_files(self): 67 self.assertTrue(_extension_in_filetypes('')) 68 69 70if __name__ == '__main__': 71 unittest.main(verbosity=2) 72