diff options
author | Terry Jan Reedy <tjreedy@udel.edu> | 2016-06-12 19:49:20 (GMT) |
---|---|---|
committer | Terry Jan Reedy <tjreedy@udel.edu> | 2016-06-12 19:49:20 (GMT) |
commit | 2518fa8326578c0407e45a1397b78cbccd4b55b0 (patch) | |
tree | 3c9aef10e02b8cb8c853a97655206086f8fcf6af /Lib/idlelib | |
parent | 7670e3c12ec4d0c08db6b9ac82ebd5279b5f9da2 (diff) | |
download | cpython-2518fa8326578c0407e45a1397b78cbccd4b55b0.zip cpython-2518fa8326578c0407e45a1397b78cbccd4b55b0.tar.gz cpython-2518fa8326578c0407e45a1397b78cbccd4b55b0.tar.bz2 |
Issue #27239: Continue refactoring idlelib.macosx and adding macosx tests.
Diffstat (limited to 'Lib/idlelib')
-rw-r--r-- | Lib/idlelib/idle_test/htest.py | 2 | ||||
-rw-r--r-- | Lib/idlelib/idle_test/test_macosx.py | 42 | ||||
-rw-r--r-- | Lib/idlelib/macosx.py | 25 |
3 files changed, 53 insertions, 16 deletions
diff --git a/Lib/idlelib/idle_test/htest.py b/Lib/idlelib/idle_test/htest.py index 5fd33a6..d0177bb 100644 --- a/Lib/idlelib/idle_test/htest.py +++ b/Lib/idlelib/idle_test/htest.py @@ -66,7 +66,6 @@ outwin.OutputWindow (indirectly being tested with grep test) ''' from importlib import import_module -from idlelib.macosx import _init_tk_type import tkinter as tk from tkinter.ttk import Scrollbar @@ -338,7 +337,6 @@ def run(*tests): root = tk.Tk() root.title('IDLE htest') root.resizable(0, 0) - _init_tk_type(root) # a scrollable Label like constant width text widget. frameLabel = tk.Frame(root, padx=10) diff --git a/Lib/idlelib/idle_test/test_macosx.py b/Lib/idlelib/idle_test/test_macosx.py index 0f90fb6..d7f8f5d 100644 --- a/Lib/idlelib/idle_test/test_macosx.py +++ b/Lib/idlelib/idle_test/test_macosx.py @@ -1,4 +1,6 @@ -'''Test idlelib.macosx.py +'''Test idlelib.macosx.py. + +Coverage: 71% on Windows. ''' from idlelib import macosx from test.support import requires @@ -6,8 +8,8 @@ import sys import tkinter as tk import unittest import unittest.mock as mock +from idlelib.filelist import FileList -MAC = sys.platform == 'darwin' mactypes = {'carbon', 'cocoa', 'xquartz'} nontypes = {'other'} alltypes = mactypes | nontypes @@ -20,21 +22,23 @@ class InitTktypeTest(unittest.TestCase): def setUpClass(cls): requires('gui') cls.root = tk.Tk() + cls.orig_platform = macosx.platform @classmethod def tearDownClass(cls): cls.root.update_idletasks() cls.root.destroy() del cls.root + macosx.platform = cls.orig_platform def test_init_sets_tktype(self): "Test that _init_tk_type sets _tk_type according to platform." - for root in (None, self.root): - with self.subTest(root=root): + for platform, types in ('darwin', alltypes), ('other', nontypes): + with self.subTest(platform=platform): + macosx.platform = platform macosx._tk_type == None - macosx._init_tk_type(root) - self.assertIn(macosx._tk_type, - mactypes if MAC else nontypes) + macosx._init_tk_type() + self.assertIn(macosx._tk_type, types) class IsTypeTkTest(unittest.TestCase): @@ -65,5 +69,29 @@ class IsTypeTkTest(unittest.TestCase): (func()) +class SetupTest(unittest.TestCase): + "Test setupApp." + + @classmethod + def setUpClass(cls): + requires('gui') + cls.root = tk.Tk() + + @classmethod + def tearDownClass(cls): + cls.root.update_idletasks() + cls.root.destroy() + del cls.root + + def test_setupapp(self): + "Call setupApp with each possible graphics type." + root = self.root + flist = FileList(root) + for tktype in alltypes: + with self.subTest(tktype=tktype): + macosx._tk_type = tktype + macosx.setupApp(root, flist) + + if __name__ == '__main__': unittest.main(verbosity=2) diff --git a/Lib/idlelib/macosx.py b/Lib/idlelib/macosx.py index 98d7887..f9f558d 100644 --- a/Lib/idlelib/macosx.py +++ b/Lib/idlelib/macosx.py @@ -1,20 +1,24 @@ """ A number of functions that enhance IDLE on Mac OSX. """ -import sys +from sys import platform # Used in _init_tk_type, changed by test. import tkinter import warnings + +## Define functions that query the Mac graphics type. +## _tk_type and its initializer are private to this section. + _tk_type = None -def _init_tk_type(idleroot=None): +def _init_tk_type(): """ Initializes OS X Tk variant values for isAquaTk(), isCarbonTk(), isCocoaTk(), and isXQuartz(). """ global _tk_type - if sys.platform == 'darwin': - root = idleroot or tkinter.Tk() + if platform == 'darwin': + root = tkinter.Tk() ws = root.tk.call('tk', 'windowingsystem') if 'x11' in ws: _tk_type = "xquartz" @@ -24,8 +28,7 @@ def _init_tk_type(idleroot=None): _tk_type = "cocoa" else: _tk_type = "carbon" - if not idleroot: - root.destroy + root.destroy() else: _tk_type = "other" @@ -62,6 +65,7 @@ def isXQuartz(): _init_tk_type() return _tk_type == "xquartz" + def tkVersionWarning(root): """ Returns a string warning message if the Tk version in use appears to @@ -82,6 +86,9 @@ def tkVersionWarning(root): else: return False + +## Fix the menu and related functions. + def addOpenEventSupport(root, flist): """ This ensures that the application will respond to open AppleEvents, which @@ -233,9 +240,13 @@ def setupApp(root, flist): isAquaTk(), isCarbonTk(), isCocoaTk(), isXQuartz() functions which are initialized here as well. """ - _init_tk_type(root) if isAquaTk(): hideTkConsole(root) overrideRootMenu(root, flist) addOpenEventSupport(root, flist) fixb2context(root) + + +if __name__ == '__main__': + from unittest import main + main('idlelib.idle_test.test_macosx', verbosity=2) |