aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/tests/QtWidgets/bug_1006.py
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside6/tests/QtWidgets/bug_1006.py')
-rw-r--r--sources/pyside6/tests/QtWidgets/bug_1006.py42
1 files changed, 12 insertions, 30 deletions
diff --git a/sources/pyside6/tests/QtWidgets/bug_1006.py b/sources/pyside6/tests/QtWidgets/bug_1006.py
index b8d59284e..74bf5e2da 100644
--- a/sources/pyside6/tests/QtWidgets/bug_1006.py
+++ b/sources/pyside6/tests/QtWidgets/bug_1006.py
@@ -1,31 +1,7 @@
-#############################################################################
-##
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the test suite of Qt for Python.
-##
-## $QT_BEGIN_LICENSE:GPL-EXCEPT$
-## Commercial License Usage
-## Licensees holding valid commercial Qt licenses may use this file in
-## accordance with the commercial license agreement provided with the
-## Software or, alternatively, in accordance with the terms contained in
-## a written agreement between you and The Qt Company. For licensing terms
-## and conditions see https://www.qt.io/terms-conditions. For further
-## information use the contact form at https://www.qt.io/contact-us.
-##
-## GNU General Public License Usage
-## Alternatively, this file may be used under the terms of the GNU
-## General Public License version 3 as published by the Free Software
-## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-## included in the packaging of this file. Please review the following
-## information to ensure the GNU General Public License requirements will
-## be met: https://www.gnu.org/licenses/gpl-3.0.html.
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+import gc
import os
import sys
import unittest
@@ -41,9 +17,10 @@ from PySide6.QtWidgets import QDialog, QLabel, QGridLayout, QHBoxLayout, QWidget
from helper.timedqapplication import TimedQApplication
+
class LabelWindow(QDialog):
def __init__(self, parent):
- super(LabelWindow, self).__init__(parent)
+ super().__init__(parent)
self.test_layout = QGridLayout()
label = QLabel("Label")
@@ -51,7 +28,6 @@ class LabelWindow(QDialog):
self.setLayout(self.test_layout)
self._destroyCalled = False
-
def replace(self, unit):
old_item = self.test_layout.itemAtPosition(0, 0)
old_label = old_item.widget()
@@ -60,6 +36,8 @@ class LabelWindow(QDialog):
self.test_layout.removeWidget(old_label)
unit.assertRaises(RuntimeError, old_item.widget)
del old_item
+ # PYSIDE-535: Need to collect garbage in PyPy to trigger deletion
+ gc.collect()
label = QLabel("Label New")
old_label.deleteLater()
@@ -69,13 +47,14 @@ class LabelWindow(QDialog):
def _destroyed(self, obj):
self._destroyCalled = True
+
class TestBug1006 (TimedQApplication):
def testLayoutItemLifeTime(self):
window = LabelWindow(None)
window.replace(self)
self.assertTrue(window._destroyCalled)
- self.app.exec_()
+ self.app.exec()
def testParentLayout(self):
def createLayout():
@@ -90,6 +69,7 @@ class TestBug1006 (TimedQApplication):
item = layout.itemAt(0)
self.assertTrue(isinstance(item.widget(), QWidget))
+ @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount")
def testRemoveOrphanWidget(self):
widget = QLabel()
layout = QHBoxLayout()
@@ -100,6 +80,7 @@ class TestBug1006 (TimedQApplication):
widget.setObjectName("MyWidget")
self.assertEqual(sys.getrefcount(widget), 2)
+ @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount")
def testRemoveChildWidget(self):
parent = QLabel()
widget = QLabel(parent)
@@ -113,5 +94,6 @@ class TestBug1006 (TimedQApplication):
widget.setObjectName("MyWidget")
self.assertEqual(sys.getrefcount(widget), 3)
+
if __name__ == "__main__":
unittest.main()