[3.9] bpo-25130: Add calls of gc.collect() in tests to support PyPy (GH-28005). (GH-28028)

(cherry picked from commit 2a8127cafe)
This commit is contained in:
Serhiy Storchaka 2021-08-29 15:08:32 +03:00 committed by GitHub
parent dab74d68e3
commit 330aabbbbe
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
36 changed files with 143 additions and 15 deletions

View file

@ -77,6 +77,7 @@ class BitmapImageTest(AbstractTkTest, unittest.TestCase):
self.assertEqual(image.height(), 16)
self.assertIn('::img::test', self.root.image_names())
del image
support.gc_collect() # For PyPy or other GCs.
self.assertNotIn('::img::test', self.root.image_names())
def test_create_from_data(self):
@ -91,6 +92,7 @@ class BitmapImageTest(AbstractTkTest, unittest.TestCase):
self.assertEqual(image.height(), 16)
self.assertIn('::img::test', self.root.image_names())
del image
support.gc_collect() # For PyPy or other GCs.
self.assertNotIn('::img::test', self.root.image_names())
def assertEqualStrList(self, actual, expected):
@ -171,6 +173,7 @@ class PhotoImageTest(AbstractTkTest, unittest.TestCase):
self.assertEqual(image['file'], testfile)
self.assertIn('::img::test', self.root.image_names())
del image
support.gc_collect() # For PyPy or other GCs.
self.assertNotIn('::img::test', self.root.image_names())
def check_create_from_data(self, ext):
@ -188,6 +191,7 @@ class PhotoImageTest(AbstractTkTest, unittest.TestCase):
self.assertEqual(image['file'], '')
self.assertIn('::img::test', self.root.image_names())
del image
support.gc_collect() # For PyPy or other GCs.
self.assertNotIn('::img::test', self.root.image_names())
def test_create_from_ppm_file(self):

View file

@ -1,4 +1,6 @@
import unittest
from test import support
import gc
import tkinter
from tkinter import (Variable, StringVar, IntVar, DoubleVar, BooleanVar, Tcl,
@ -46,6 +48,7 @@ class TestVariable(TestBase):
v = Variable(self.root, "sample string", "varname")
self.assertTrue(self.info_exists("varname"))
del v
support.gc_collect() # For PyPy or other GCs.
self.assertFalse(self.info_exists("varname"))
def test_dont_unset_not_existing(self):
@ -53,9 +56,11 @@ class TestVariable(TestBase):
v1 = Variable(self.root, name="name")
v2 = Variable(self.root, name="name")
del v1
support.gc_collect() # For PyPy or other GCs.
self.assertFalse(self.info_exists("name"))
# shouldn't raise exception
del v2
support.gc_collect() # For PyPy or other GCs.
self.assertFalse(self.info_exists("name"))
def test_equality(self):

View file

@ -2,7 +2,7 @@ import sys
import unittest
import tkinter
from tkinter import ttk
from test.support import requires, run_unittest
from test.support import requires, run_unittest, gc_collect
from tkinter.test.support import AbstractTkTest, AbstractDefaultRootTest
requires('gui')
@ -18,6 +18,7 @@ class LabeledScaleTest(AbstractTkTest, unittest.TestCase):
x = ttk.LabeledScale(self.root)
var = x._variable._name
x.destroy()
gc_collect() # For PyPy or other GCs.
self.assertRaises(tkinter.TclError, x.tk.globalgetvar, var)
# manually created variable
@ -30,6 +31,7 @@ class LabeledScaleTest(AbstractTkTest, unittest.TestCase):
else:
self.assertEqual(float(x.tk.globalgetvar(name)), myvar.get())
del myvar
gc_collect() # For PyPy or other GCs.
self.assertRaises(tkinter.TclError, x.tk.globalgetvar, name)
# checking that the tracing callback is properly removed
@ -171,6 +173,7 @@ class LabeledScaleTest(AbstractTkTest, unittest.TestCase):
def test_resize(self):
x = ttk.LabeledScale(self.root)
x.pack(expand=True, fill='both')
gc_collect() # For PyPy or other GCs.
x.update()
width, height = x.master.winfo_width(), x.master.winfo_height()
@ -206,6 +209,7 @@ class OptionMenuTest(AbstractTkTest, unittest.TestCase):
optmenu.destroy()
self.assertEqual(optmenu.tk.globalgetvar(name), var.get())
del var
gc_collect() # For PyPy or other GCs.
self.assertRaises(tkinter.TclError, optmenu.tk.globalgetvar, name)
@ -251,6 +255,7 @@ class OptionMenuTest(AbstractTkTest, unittest.TestCase):
# check that variable is updated correctly
optmenu.pack()
gc_collect() # For PyPy or other GCs.
optmenu['menu'].invoke(0)
self.assertEqual(optmenu._variable.get(), items[0])

View file

@ -1,7 +1,7 @@
import unittest
import tkinter
from tkinter import ttk, TclError
from test.support import requires
from test.support import requires, gc_collect
import sys
from tkinter.test.test_ttk.test_functions import MockTclObj
@ -839,6 +839,7 @@ class ScaleTest(AbstractWidgetTest, unittest.TestCase):
self.assertEqual(conv(self.scale.get()), var.get())
self.assertEqual(conv(self.scale.get()), max + 5)
del var
gc_collect() # For PyPy or other GCs.
# the same happens with the value option
self.scale['value'] = max + 10