summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2016-06-12 19:49:20 (GMT)
committerTerry Jan Reedy <tjreedy@udel.edu>2016-06-12 19:49:20 (GMT)
commit2518fa8326578c0407e45a1397b78cbccd4b55b0 (patch)
tree3c9aef10e02b8cb8c853a97655206086f8fcf6af /Lib/idlelib
parent7670e3c12ec4d0c08db6b9ac82ebd5279b5f9da2 (diff)
downloadcpython-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.py2
-rw-r--r--Lib/idlelib/idle_test/test_macosx.py42
-rw-r--r--Lib/idlelib/macosx.py25
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)