Issue #20567: Delete class attribute gui widgets in idle tests.

Code patch by Serhiy Storchaka
This commit is contained in:
Terry Jan Reedy 2014-02-27 18:47:49 -05:00
parent b807577da2
commit 9db1ab8250
6 changed files with 14 additions and 3 deletions

View File

@ -41,9 +41,10 @@ idle class. For the benefit of buildbot machines that do not have a graphics
screen, gui tests must be 'guarded' by "requires('gui')" in a setUp
function or method. This will typically be setUpClass.
All gui objects must be destroyed by the end of the test, perhaps in a tearDown
function. Creating the Tk root directly in a setUp allows a reference to be saved
so it can be properly destroyed in the corresponding tearDown.
To avoid interfering with other gui tests, all gui objects must be destroyed
and deleted by the end of the test. If a widget, such as a Tk root, is created
in a setUpX function, destroy it in the corresponding tearDownX. For module
and class attributes, also delete the widget.
---
@classmethod
def setUpClass(cls):
@ -53,6 +54,7 @@ so it can be properly destroyed in the corresponding tearDown.
@classmethod
def tearDownClass(cls):
cls.root.destroy()
del cls.root
---
Support.requires('gui') returns true if it is either called in a main module

View File

@ -277,6 +277,9 @@ class FormatEventTest(unittest.TestCase):
@classmethod
def tearDownClass(cls):
cls.root.destroy()
del cls.root
del cls.text
del cls.formatter
def test_short_line(self):
self.text.insert('1.0', "Short line\n")

View File

@ -80,6 +80,7 @@ class FetchTest(unittest.TestCase):
@classmethod
def tearDownClass(cls):
cls.root.destroy()
del cls.root
def fetch_test(self, reverse, line, prefix, index, *, bell=False):
# Perform one fetch as invoked by Alt-N or Alt-P

View File

@ -64,6 +64,7 @@ class GetSelectionTest(unittest.TestCase):
## @classmethod
## def tearDownClass(cls):
## cls.root.destroy()
## del cls.root
def test_get_selection(self):
# text = Text(master=self.root)
@ -219,6 +220,7 @@ class SearchTest(unittest.TestCase):
## @classmethod
## def tearDownClass(cls):
## cls.root.destroy()
## del cls.root
def test_search(self):
Equal = self.assertEqual
@ -261,6 +263,7 @@ class ForwardBackwardTest(unittest.TestCase):
## @classmethod
## def tearDownClass(cls):
## cls.root.destroy()
## del cls.root
@classmethod
def setUpClass(cls):

View File

@ -221,6 +221,7 @@ class TkTextTest(TextTest, unittest.TestCase):
@classmethod
def tearDownClass(cls):
cls.root.destroy()
del cls.root
if __name__ == '__main__':

View File

@ -14,6 +14,7 @@ if use_resources and 'gui' in use_resources:
try:
root = tk.Tk()
root.destroy()
del root
except tk.TclError:
while 'gui' in use_resources:
use_resources.remove('gui')