123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- "Test macosx, coverage 45% on Windows."
- from idlelib import macosx
- import unittest
- from test.support import requires
- import tkinter as tk
- import unittest.mock as mock
- from idlelib.filelist import FileList
- mactypes = {'carbon', 'cocoa', 'xquartz'}
- nontypes = {'other'}
- alltypes = mactypes | nontypes
- def setUpModule():
- global orig_tktype
- orig_tktype = macosx._tk_type
- def tearDownModule():
- macosx._tk_type = orig_tktype
- class InitTktypeTest(unittest.TestCase):
- "Test _init_tk_type."
- @classmethod
- def setUpClass(cls):
- requires('gui')
- cls.root = tk.Tk()
- cls.root.withdraw()
- 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 platform, types in ('darwin', alltypes), ('other', nontypes):
- with self.subTest(platform=platform):
- macosx.platform = platform
- macosx._tk_type = None
- macosx._init_tk_type()
- self.assertIn(macosx._tk_type, types)
- class IsTypeTkTest(unittest.TestCase):
- "Test each of the four isTypeTk predecates."
- isfuncs = ((macosx.isAquaTk, ('carbon', 'cocoa')),
- (macosx.isCarbonTk, ('carbon')),
- (macosx.isCocoaTk, ('cocoa')),
- (macosx.isXQuartz, ('xquartz')),
- )
- @mock.patch('idlelib.macosx._init_tk_type')
- def test_is_calls_init(self, mockinit):
- "Test that each isTypeTk calls _init_tk_type when _tk_type is None."
- macosx._tk_type = None
- for func, whentrue in self.isfuncs:
- with self.subTest(func=func):
- func()
- self.assertTrue(mockinit.called)
- mockinit.reset_mock()
- def test_isfuncs(self):
- "Test that each isTypeTk return correct bool."
- for func, whentrue in self.isfuncs:
- for tktype in alltypes:
- with self.subTest(func=func, whentrue=whentrue, tktype=tktype):
- macosx._tk_type = tktype
- (self.assertTrue if tktype in whentrue else self.assertFalse)\
- (func())
- class SetupTest(unittest.TestCase):
- "Test setupApp."
- @classmethod
- def setUpClass(cls):
- requires('gui')
- cls.root = tk.Tk()
- cls.root.withdraw()
- def cmd(tkpath, func):
- assert isinstance(tkpath, str)
- assert isinstance(func, type(cmd))
- cls.root.createcommand = cmd
- @classmethod
- def tearDownClass(cls):
- cls.root.update_idletasks()
- cls.root.destroy()
- del cls.root
- @mock.patch('idlelib.macosx.overrideRootMenu') #27312
- def test_setupapp(self, overrideRootMenu):
- "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 tktype in ('carbon', 'cocoa'):
- self.assertTrue(overrideRootMenu.called)
- overrideRootMenu.reset_mock()
- if __name__ == '__main__':
- unittest.main(verbosity=2)
|