mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	Issue #27922: IDLE tests no longer flash tk widgets (Merge 3.5).
This commit is contained in:
		
						commit
						5f30f79357
					
				
					 9 changed files with 21 additions and 6 deletions
				
			
		|  | @ -14,6 +14,7 @@ class GetKeysTest(unittest.TestCase): | ||||||
|     @classmethod |     @classmethod | ||||||
|     def setUpClass(cls): |     def setUpClass(cls): | ||||||
|         cls.root = Tk() |         cls.root = Tk() | ||||||
|  |         cls.root.withdraw() | ||||||
| 
 | 
 | ||||||
|     @classmethod |     @classmethod | ||||||
|     def tearDownClass(cls): |     def tearDownClass(cls): | ||||||
|  |  | ||||||
|  | @ -14,6 +14,7 @@ class ConfigDialogTest(unittest.TestCase): | ||||||
|     @classmethod |     @classmethod | ||||||
|     def setUpClass(cls): |     def setUpClass(cls): | ||||||
|         cls.root = Tk() |         cls.root = Tk() | ||||||
|  |         cls.root.withdraw() | ||||||
| 
 | 
 | ||||||
|     @classmethod |     @classmethod | ||||||
|     def tearDownClass(cls): |     def tearDownClass(cls): | ||||||
|  |  | ||||||
|  | @ -17,6 +17,7 @@ class PasteTest(unittest.TestCase): | ||||||
|     @classmethod |     @classmethod | ||||||
|     def setUpClass(cls): |     def setUpClass(cls): | ||||||
|         cls.root = root = tk.Tk() |         cls.root = root = tk.Tk() | ||||||
|  |         cls.root.withdraw() | ||||||
|         pyshell.fix_x11_paste(root) |         pyshell.fix_x11_paste(root) | ||||||
|         cls.text = tk.Text(root) |         cls.text = tk.Text(root) | ||||||
|         cls.entry = tk.Entry(root) |         cls.entry = tk.Entry(root) | ||||||
|  |  | ||||||
|  | @ -68,6 +68,7 @@ class FetchTest(unittest.TestCase): | ||||||
|     def setUpClass(cls): |     def setUpClass(cls): | ||||||
|         requires('gui') |         requires('gui') | ||||||
|         cls.root = tk.Tk() |         cls.root = tk.Tk() | ||||||
|  |         cls.root.withdraw() | ||||||
| 
 | 
 | ||||||
|     def setUp(self): |     def setUp(self): | ||||||
|         self.text = text = TextWrapper(self.root) |         self.text = text = TextWrapper(self.root) | ||||||
|  |  | ||||||
|  | @ -37,6 +37,7 @@ class HyperParserTest(unittest.TestCase): | ||||||
|     def setUpClass(cls): |     def setUpClass(cls): | ||||||
|         requires('gui') |         requires('gui') | ||||||
|         cls.root = Tk() |         cls.root = Tk() | ||||||
|  |         cls.root.withdraw() | ||||||
|         cls.text = Text(cls.root) |         cls.text = Text(cls.root) | ||||||
|         cls.editwin = DummyEditwin(cls.text) |         cls.editwin = DummyEditwin(cls.text) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -22,6 +22,7 @@ class InitTktypeTest(unittest.TestCase): | ||||||
|     def setUpClass(cls): |     def setUpClass(cls): | ||||||
|         requires('gui') |         requires('gui') | ||||||
|         cls.root = tk.Tk() |         cls.root = tk.Tk() | ||||||
|  |         cls.root.withdraw() | ||||||
|         cls.orig_platform = macosx.platform |         cls.orig_platform = macosx.platform | ||||||
| 
 | 
 | ||||||
|     @classmethod |     @classmethod | ||||||
|  | @ -76,6 +77,7 @@ class SetupTest(unittest.TestCase): | ||||||
|     def setUpClass(cls): |     def setUpClass(cls): | ||||||
|         requires('gui') |         requires('gui') | ||||||
|         cls.root = tk.Tk() |         cls.root = tk.Tk() | ||||||
|  |         cls.root.withdraw() | ||||||
| 
 | 
 | ||||||
|     @classmethod |     @classmethod | ||||||
|     def tearDownClass(cls): |     def tearDownClass(cls): | ||||||
|  |  | ||||||
|  | @ -252,6 +252,7 @@ class QueryGuiTest(unittest.TestCase): | ||||||
|     def setUpClass(cls): |     def setUpClass(cls): | ||||||
|         requires('gui') |         requires('gui') | ||||||
|         cls.root = root = Tk() |         cls.root = root = Tk() | ||||||
|  |         cls.root.withdraw() | ||||||
|         cls.dialog = query.Query(root, 'TEST', 'test', _utest=True) |         cls.dialog = query.Query(root, 'TEST', 'test', _utest=True) | ||||||
|         cls.dialog.destroy = mock.Mock() |         cls.dialog.destroy = mock.Mock() | ||||||
| 
 | 
 | ||||||
|  | @ -295,6 +296,7 @@ def setUpClass(cls): | ||||||
| 
 | 
 | ||||||
|     def test_click_section_name(self): |     def test_click_section_name(self): | ||||||
|         root = Tk() |         root = Tk() | ||||||
|  |         root.withdraw() | ||||||
|         dialog =  query.SectionName(root, 'T', 't', {'abc'}, _utest=True) |         dialog =  query.SectionName(root, 'T', 't', {'abc'}, _utest=True) | ||||||
|         Equal = self.assertEqual |         Equal = self.assertEqual | ||||||
|         self.assertEqual(dialog.used_names, {'abc'}) |         self.assertEqual(dialog.used_names, {'abc'}) | ||||||
|  | @ -314,6 +316,7 @@ def setUpClass(cls): | ||||||
| 
 | 
 | ||||||
|     def test_click_module_name(self): |     def test_click_module_name(self): | ||||||
|         root = Tk() |         root = Tk() | ||||||
|  |         root.withdraw() | ||||||
|         dialog =  query.ModuleName(root, 'T', 't', 'idlelib', _utest=True) |         dialog =  query.ModuleName(root, 'T', 't', 'idlelib', _utest=True) | ||||||
|         self.assertEqual(dialog.text0, 'idlelib') |         self.assertEqual(dialog.text0, 'idlelib') | ||||||
|         self.assertEqual(dialog.entry.get(), 'idlelib') |         self.assertEqual(dialog.entry.get(), 'idlelib') | ||||||
|  | @ -332,6 +335,7 @@ def setUpClass(cls): | ||||||
| 
 | 
 | ||||||
|     def test_click_help_source(self): |     def test_click_help_source(self): | ||||||
|         root = Tk() |         root = Tk() | ||||||
|  |         root.withdraw() | ||||||
|         dialog =  query.HelpSource(root, 'T', menuitem='__test__', |         dialog =  query.HelpSource(root, 'T', menuitem='__test__', | ||||||
|                                    filepath=__file__, _utest=True) |                                    filepath=__file__, _utest=True) | ||||||
|         Equal = self.assertEqual |         Equal = self.assertEqual | ||||||
|  |  | ||||||
|  | @ -15,6 +15,7 @@ class InitCloseTest(unittest.TestCase): | ||||||
|     def setUpClass(cls): |     def setUpClass(cls): | ||||||
|         requires('gui') |         requires('gui') | ||||||
|         cls.root = Tk() |         cls.root = Tk() | ||||||
|  |         cls.root.withdraw() | ||||||
|         cls.text = Text(cls.root) |         cls.text = Text(cls.root) | ||||||
| 
 | 
 | ||||||
|     @classmethod |     @classmethod | ||||||
|  | @ -44,6 +45,7 @@ class WidgetRedirectorTest(unittest.TestCase): | ||||||
|     def setUpClass(cls): |     def setUpClass(cls): | ||||||
|         requires('gui') |         requires('gui') | ||||||
|         cls.root = Tk() |         cls.root = Tk() | ||||||
|  |         cls.root.withdraw() | ||||||
|         cls.text = Text(cls.root) |         cls.text = Text(cls.root) | ||||||
| 
 | 
 | ||||||
|     @classmethod |     @classmethod | ||||||
|  |  | ||||||
|  | @ -20,15 +20,16 @@ | ||||||
| def setUpModule(): | def setUpModule(): | ||||||
|     global root |     global root | ||||||
|     root = Tk() |     root = Tk() | ||||||
|  |     root.withdraw() | ||||||
| 
 | 
 | ||||||
| def tearDownModule(): | def tearDownModule(): | ||||||
|     global root |     global root | ||||||
|     root.update_idletasks() |     root.update_idletasks() | ||||||
|     root.destroy()  # pyflakes falsely sees root as undefined |     root.destroy()  # Pyflakes falsely sees root as undefined. | ||||||
|     del root |     del root | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class TV(tv.TextViewer):  # used by TextViewTest | class TV(tv.TextViewer):  # Used in TextViewTest. | ||||||
|     transient = Func() |     transient = Func() | ||||||
|     grab_set = Func() |     grab_set = Func() | ||||||
|     wait_window = Func() |     wait_window = Func() | ||||||
|  | @ -59,8 +60,8 @@ def test_ok(self): | ||||||
|         view.destroy = Func() |         view.destroy = Func() | ||||||
|         view.Ok() |         view.Ok() | ||||||
|         self.assertTrue(view.destroy.called) |         self.assertTrue(view.destroy.called) | ||||||
|         del view.destroy  # unmask real function |         del view.destroy  # Unmask real function. | ||||||
|         view.destroy |         view.destroy() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class ViewFunctionTest(unittest.TestCase): | class ViewFunctionTest(unittest.TestCase): | ||||||
|  | @ -76,9 +77,10 @@ def tearDownClass(cls): | ||||||
|         del cls.orig_error |         del cls.orig_error | ||||||
| 
 | 
 | ||||||
|     def test_view_text(self): |     def test_view_text(self): | ||||||
|         # If modal True, tkinter will error with 'can't invoke "event" command' |         # If modal True, get tk error 'can't invoke "event" command'. | ||||||
|         view = tv.view_text(root, 'Title', 'test text', modal=False) |         view = tv.view_text(root, 'Title', 'test text', modal=False) | ||||||
|         self.assertIsInstance(view, tv.TextViewer) |         self.assertIsInstance(view, tv.TextViewer) | ||||||
|  |         view.Ok() | ||||||
| 
 | 
 | ||||||
|     def test_view_file(self): |     def test_view_file(self): | ||||||
|         test_dir = os.path.dirname(__file__) |         test_dir = os.path.dirname(__file__) | ||||||
|  | @ -88,7 +90,7 @@ def test_view_file(self): | ||||||
|         self.assertIn('Test', view.textView.get('1.0', '1.end')) |         self.assertIn('Test', view.textView.get('1.0', '1.end')) | ||||||
|         view.Ok() |         view.Ok() | ||||||
| 
 | 
 | ||||||
|         # Mock showerror will be used and view_file will return None |         # Mock showerror will be used; view_file will return None. | ||||||
|         testfile = os.path.join(test_dir, '../notthere.py') |         testfile = os.path.join(test_dir, '../notthere.py') | ||||||
|         view = tv.view_file(root, 'Title', testfile, modal=False) |         view = tv.view_file(root, 'Title', testfile, modal=False) | ||||||
|         self.assertIsNone(view) |         self.assertIsNone(view) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Terry Jan Reedy
						Terry Jan Reedy