diff options
author | Christian Tismer <tismer@stackless.com> | 2021-08-28 12:49:20 +0200 |
---|---|---|
committer | Christian Tismer <tismer@stackless.com> | 2021-08-30 22:34:19 +0200 |
commit | 9412438ebec18721e1e825e07784821c185544ae (patch) | |
tree | a9ffef36cf02ce7eed7c2c59b6758a8200307b7c /sources/pyside6/tests/QtWidgets | |
parent | 1a185feb6779ecdead6ae88f8f44f1d18616b37a (diff) |
PyPySide: Skip all tests which use reference counting
[ChangeLog][PySide6] Tests which use reference counting
need to be skipped in upcoming PyPy builds.
Task-number: PYSIDE-535
Change-Id: I5dca3257d3dc40f53e9b4e4a69e24c07938047c2
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'sources/pyside6/tests/QtWidgets')
17 files changed, 62 insertions, 35 deletions
diff --git a/sources/pyside6/tests/QtWidgets/bug_1002.py b/sources/pyside6/tests/QtWidgets/bug_1002.py index ab9cee147..756d936ee 100644 --- a/sources/pyside6/tests/QtWidgets/bug_1002.py +++ b/sources/pyside6/tests/QtWidgets/bug_1002.py @@ -41,6 +41,7 @@ from helper.usesqapplication import UsesQApplication class TestBug1002 (UsesQApplication): + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testReturnWindow(self): widget = QWidget() button = QPushButton(widget) diff --git a/sources/pyside6/tests/QtWidgets/bug_1006.py b/sources/pyside6/tests/QtWidgets/bug_1006.py index 9a1b7e653..81639c34c 100644 --- a/sources/pyside6/tests/QtWidgets/bug_1006.py +++ b/sources/pyside6/tests/QtWidgets/bug_1006.py @@ -91,6 +91,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() @@ -101,6 +102,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) diff --git a/sources/pyside6/tests/QtWidgets/bug_547.py b/sources/pyside6/tests/QtWidgets/bug_547.py index 984a0c858..f5a321228 100644 --- a/sources/pyside6/tests/QtWidgets/bug_547.py +++ b/sources/pyside6/tests/QtWidgets/bug_547.py @@ -45,6 +45,7 @@ from PySide6.QtWidgets import QApplication, QTreeWidget, QTreeWidgetItem class MyMainWindow(unittest.TestCase): app = QApplication(sys.argv) + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testCase1(self): self._tree = QTreeWidget() self._tree.setColumnCount(2) @@ -62,6 +63,7 @@ class MyMainWindow(unittest.TestCase): self.assertEqual(sys.getrefcount(self._i1), 3) self.assertEqual(sys.getrefcount(self._i11), 3) + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testCase2(self): self._tree = QTreeWidget() self._tree.setColumnCount(2) @@ -78,6 +80,7 @@ class MyMainWindow(unittest.TestCase): self.assertEqual(sys.getrefcount(self._i1), 3) self.assertEqual(sys.getrefcount(self._i11), 3) + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def _updateTree(self): self._tree.clear() if self._i1 and self._i11: diff --git a/sources/pyside6/tests/QtWidgets/bug_576.py b/sources/pyside6/tests/QtWidgets/bug_576.py index b148f7c89..7a078ce9d 100644 --- a/sources/pyside6/tests/QtWidgets/bug_576.py +++ b/sources/pyside6/tests/QtWidgets/bug_576.py @@ -48,6 +48,7 @@ class Bug576(unittest.TestCase): self._destroyed = True self.assertTrue(isinstance(button, QPushButton)) + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testWidgetParent(self): self._destroyed = False app = QApplication(sys.argv) diff --git a/sources/pyside6/tests/QtWidgets/bug_585.py b/sources/pyside6/tests/QtWidgets/bug_585.py index 82d581af9..05a9cf3d8 100644 --- a/sources/pyside6/tests/QtWidgets/bug_585.py +++ b/sources/pyside6/tests/QtWidgets/bug_585.py @@ -41,6 +41,7 @@ from PySide6.QtWidgets import QApplication, QTreeWidget, QTreeWidgetItem class Bug585(unittest.TestCase): + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testCase(self): app = QApplication([]) self._tree = QTreeWidget() diff --git a/sources/pyside6/tests/QtWidgets/bug_674.py b/sources/pyside6/tests/QtWidgets/bug_674.py index 95e32edd1..ca66271f6 100644 --- a/sources/pyside6/tests/QtWidgets/bug_674.py +++ b/sources/pyside6/tests/QtWidgets/bug_674.py @@ -40,6 +40,7 @@ from PySide6.QtWidgets import QApplication, QGraphicsScene class TestBug679(unittest.TestCase): '''QGraphicsScene::clear() is missing''' + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testIt(self): app = QApplication([]) diff --git a/sources/pyside6/tests/QtWidgets/bug_811.py b/sources/pyside6/tests/QtWidgets/bug_811.py index 38fbd652c..bfcd30f05 100644 --- a/sources/pyside6/tests/QtWidgets/bug_811.py +++ b/sources/pyside6/tests/QtWidgets/bug_811.py @@ -49,6 +49,7 @@ class TestUserData(QTextBlockUserData): class TestUserDataRefCount(UsesQApplication): + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testRefcount(self): textedit = QTextEdit() textedit.setReadOnly(True) diff --git a/sources/pyside6/tests/QtWidgets/event_filter_test.py b/sources/pyside6/tests/QtWidgets/event_filter_test.py index aee5a2926..08ca8c7b3 100644 --- a/sources/pyside6/tests/QtWidgets/event_filter_test.py +++ b/sources/pyside6/tests/QtWidgets/event_filter_test.py @@ -48,6 +48,7 @@ class MyFilter(QObject): class EventFilter(UsesQApplication): + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testRefCount(self): o = QObject() filt = MyFilter() diff --git a/sources/pyside6/tests/QtWidgets/keep_reference_test.py b/sources/pyside6/tests/QtWidgets/keep_reference_test.py index 1766f16ee..9c661feeb 100644 --- a/sources/pyside6/tests/QtWidgets/keep_reference_test.py +++ b/sources/pyside6/tests/QtWidgets/keep_reference_test.py @@ -37,7 +37,6 @@ sys.path.append(os.fspath(Path(__file__).resolve().parents[1])) from init_paths import init_test_paths init_test_paths(False) -from sys import getrefcount from helper.usesqapplication import UsesQApplication from PySide6.QtCore import QAbstractTableModel from PySide6.QtWidgets import QTableView @@ -73,32 +72,34 @@ class KeepReferenceTest(UsesQApplication): samemodel = view.model() self.assertEqual(model, samemodel) + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testReferenceCounting(self): '''Tests reference count of model object referred by view objects.''' model1 = TestModel() - refcount1 = getrefcount(model1) + refcount1 = sys.getrefcount(model1) view1 = QTableView() view1.setModel(model1) - self.assertEqual(getrefcount(view1.model()), refcount1 + 1) + self.assertEqual(sys.getrefcount(view1.model()), refcount1 + 1) view2 = QTableView() view2.setModel(model1) - self.assertEqual(getrefcount(view2.model()), refcount1 + 2) + self.assertEqual(sys.getrefcount(view2.model()), refcount1 + 2) model2 = TestModel() view2.setModel(model2) - self.assertEqual(getrefcount(view1.model()), refcount1 + 1) + self.assertEqual(sys.getrefcount(view1.model()), refcount1 + 1) + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testReferenceCountingWhenDeletingReferrer(self): '''Tests reference count of model object referred by deceased view object.''' model = TestModel() - refcount1 = getrefcount(model) + refcount1 = sys.getrefcount(model) view = QTableView() view.setModel(model) - self.assertEqual(getrefcount(view.model()), refcount1 + 1) + self.assertEqual(sys.getrefcount(view.model()), refcount1 + 1) del view - self.assertEqual(getrefcount(model), refcount1) + self.assertEqual(sys.getrefcount(model), refcount1) def testReferreedObjectSurvivalAfterContextEnd(self): '''Model object assigned to a view object must survive after getting out of context.''' diff --git a/sources/pyside6/tests/QtWidgets/qlayout_ref_test.py b/sources/pyside6/tests/QtWidgets/qlayout_ref_test.py index 255119562..e7e61e75a 100644 --- a/sources/pyside6/tests/QtWidgets/qlayout_ref_test.py +++ b/sources/pyside6/tests/QtWidgets/qlayout_ref_test.py @@ -30,7 +30,6 @@ import os import sys -from sys import getrefcount import unittest from pathlib import Path @@ -64,28 +63,30 @@ class SaveReference(UsesQApplication): del self.widget1 super(SaveReference, self).tearDown() + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def checkLayoutReference(self, layout): # Checks the reference cound handling of layout.addWidget - self.assertEqual(getrefcount(self.widget1), 2) + self.assertEqual(sys.getrefcount(self.widget1), 2) layout.addWidget(self.widget1) - self.assertEqual(getrefcount(self.widget1), 3) + self.assertEqual(sys.getrefcount(self.widget1), 3) - self.assertEqual(getrefcount(self.widget2), 2) + self.assertEqual(sys.getrefcount(self.widget2), 2) layout.addWidget(self.widget2) - self.assertEqual(getrefcount(self.widget2), 3) + self.assertEqual(sys.getrefcount(self.widget2), 3) # Check if doesn't mess around with previous widget refcount - self.assertEqual(getrefcount(self.widget1), 3) + self.assertEqual(sys.getrefcount(self.widget1), 3) + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testMoveLayout(self): l = QHBoxLayout() - self.assertEqual(getrefcount(self.widget1), 2) + self.assertEqual(sys.getrefcount(self.widget1), 2) l.addWidget(self.widget1) - self.assertEqual(getrefcount(self.widget1), 3) + self.assertEqual(sys.getrefcount(self.widget1), 3) w = QWidget() w.setLayout(l) - self.assertEqual(getrefcount(self.widget1), 3) + self.assertEqual(sys.getrefcount(self.widget1), 3) def testHBoxReference(self): # QHBoxLayout.addWidget reference count @@ -133,18 +134,20 @@ class MultipleAdd(UsesQApplication): del self.win super(MultipleAdd, self).tearDown() + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testRefCount(self): # Multiple QLayout.addWidget calls on the same widget - self.assertEqual(getrefcount(self.widget), 2) + self.assertEqual(sys.getrefcount(self.widget), 2) self.layout.addWidget(self.widget) - self.assertEqual(getrefcount(self.widget), 3) + self.assertEqual(sys.getrefcount(self.widget), 3) self.layout.addWidget(self.widget) - self.assertEqual(getrefcount(self.widget), 3) + self.assertEqual(sys.getrefcount(self.widget), 3) self.layout.addWidget(self.widget) - self.assertEqual(getrefcount(self.widget), 3) + self.assertEqual(sys.getrefcount(self.widget), 3) class InternalAdd(UsesQApplication): + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testInternalRef(self): mw = QWidget() w = QWidget() @@ -153,35 +156,35 @@ class InternalAdd(UsesQApplication): topLayout = QGridLayout() # unique reference - self.assertEqual(getrefcount(w), 2) - self.assertEqual(getrefcount(ow), 2) + self.assertEqual(sys.getrefcount(w), 2) + self.assertEqual(sys.getrefcount(ow), 2) topLayout.addWidget(w, 0, 0) topLayout.addWidget(ow, 1, 0) # layout keep the referemce - self.assertEqual(getrefcount(w), 3) - self.assertEqual(getrefcount(ow), 3) + self.assertEqual(sys.getrefcount(w), 3) + self.assertEqual(sys.getrefcount(ow), 3) mainLayout = QGridLayout() mainLayout.addLayout(topLayout, 1, 0, 1, 4) # the same reference - self.assertEqual(getrefcount(w), 3) - self.assertEqual(getrefcount(ow), 3) + self.assertEqual(sys.getrefcount(w), 3) + self.assertEqual(sys.getrefcount(ow), 3) mw.setLayout(mainLayout) # now trasfer the ownership to mw - self.assertEqual(getrefcount(w), 3) - self.assertEqual(getrefcount(ow), 3) + self.assertEqual(sys.getrefcount(w), 3) + self.assertEqual(sys.getrefcount(ow), 3) del mw # remove the ref and invalidate the widget - self.assertEqual(getrefcount(w), 2) - self.assertEqual(getrefcount(ow), 2) + self.assertEqual(sys.getrefcount(w), 2) + self.assertEqual(sys.getrefcount(ow), 2) if __name__ == '__main__': diff --git a/sources/pyside6/tests/QtWidgets/qlayout_test.py b/sources/pyside6/tests/QtWidgets/qlayout_test.py index 4230470b7..57855fc05 100644 --- a/sources/pyside6/tests/QtWidgets/qlayout_test.py +++ b/sources/pyside6/tests/QtWidgets/qlayout_test.py @@ -89,6 +89,7 @@ class MissingItemAtLayout(QLayout): class QLayoutTest(UsesQApplication): + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testOwnershipTransfer(self): b = QPushButton("teste") l = MyLayout() @@ -104,6 +105,7 @@ class QLayoutTest(UsesQApplication): self.assertEqual(sys.getrefcount(b), 3) + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testReferenceTransfer(self): b = QPushButton("teste") l = QHBoxLayout() diff --git a/sources/pyside6/tests/QtWidgets/qlistwidget_test.py b/sources/pyside6/tests/QtWidgets/qlistwidget_test.py index 3746d3675..d5b82070b 100644 --- a/sources/pyside6/tests/QtWidgets/qlistwidget_test.py +++ b/sources/pyside6/tests/QtWidgets/qlistwidget_test.py @@ -42,6 +42,7 @@ from helper.usesqapplication import UsesQApplication class QListWidgetTest(UsesQApplication): + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def populateList(self, lst): o = QObject() o.setObjectName("obj") @@ -54,10 +55,12 @@ class QListWidgetTest(UsesQApplication): lst.addItem(item) self.assertTrue(sys.getrefcount(item), 3) + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def checkCurrentItem(self, lst): item = lst.currentItem() self.assertTrue(sys.getrefcount(item), 3) + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def checkItemData(self, lst): item = lst.currentItem() o = item.data(Qt.UserRole) @@ -65,6 +68,7 @@ class QListWidgetTest(UsesQApplication): self.assertEqual(o, item._data) self.assertTrue(sys.getrefcount(o), 2) + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testConstructorWithParent(self): lst = QListWidget() self.populateList(lst) diff --git a/sources/pyside6/tests/QtWidgets/qmainwindow_test.py b/sources/pyside6/tests/QtWidgets/qmainwindow_test.py index 5d6018b28..5201bfdb8 100644 --- a/sources/pyside6/tests/QtWidgets/qmainwindow_test.py +++ b/sources/pyside6/tests/QtWidgets/qmainwindow_test.py @@ -73,6 +73,7 @@ class TestMainWindow(UsesQApplication): def objDel(self, obj): self.app.quit() + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testRefCountToNull(self): w = QMainWindow() c = QWidget() @@ -84,6 +85,7 @@ class TestMainWindow(UsesQApplication): c = None self.app.exec() + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testRefCountToAnother(self): w = QMainWindow() c = QWidget() diff --git a/sources/pyside6/tests/QtWidgets/qstandarditemmodel_test.py b/sources/pyside6/tests/QtWidgets/qstandarditemmodel_test.py index ddc9d2245..97fe18119 100644 --- a/sources/pyside6/tests/QtWidgets/qstandarditemmodel_test.py +++ b/sources/pyside6/tests/QtWidgets/qstandarditemmodel_test.py @@ -66,6 +66,7 @@ class QStandardItemModelTest(UsesQApplication): class QStandardItemModelRef(UsesQApplication): + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testRefCount(self): model = QStandardItemModel(5, 5) items = [] diff --git a/sources/pyside6/tests/QtWidgets/qstyle_test.py b/sources/pyside6/tests/QtWidgets/qstyle_test.py index 6993e8b90..1f837cda6 100644 --- a/sources/pyside6/tests/QtWidgets/qstyle_test.py +++ b/sources/pyside6/tests/QtWidgets/qstyle_test.py @@ -88,6 +88,7 @@ class SetStyleTest(UsesQApplication): QApplication.instance().processEvents() self.assertTrue(proxyStyle.polished > 0) + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testSetStyleOwnership(self): style = QStyleFactory.create(QStyleFactory.keys()[0]) self.assertEqual(sys.getrefcount(style), 2) diff --git a/sources/pyside6/tests/QtWidgets/qtextedit_test.py b/sources/pyside6/tests/QtWidgets/qtextedit_test.py index 28f435f94..bb6b98009 100644 --- a/sources/pyside6/tests/QtWidgets/qtextedit_test.py +++ b/sources/pyside6/tests/QtWidgets/qtextedit_test.py @@ -30,7 +30,6 @@ import os import sys -from sys import getrefcount import unittest from pathlib import Path @@ -53,16 +52,17 @@ class DontTouchReference(UsesQApplication): self.cursor = self.editor.textCursor() self.table = self.cursor.insertTable(1, 1) + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testQTextTable(self): # methods which return QTextTable should not increment its reference - self.assertEqual(getrefcount(self.table), 2) + self.assertEqual(sys.getrefcount(self.table), 2) f = self.cursor.currentFrame() del f - self.assertEqual(getrefcount(self.table), 2) + self.assertEqual(sys.getrefcount(self.table), 2) # destroying the cursor should not raise any "RuntimeError: internal # C++ object already deleted." when accessing the QTextTable del self.cursor - self.assertEqual(getrefcount(self.table), 2) + self.assertEqual(sys.getrefcount(self.table), 2) cell = self.table.cellAt(0, 0) diff --git a/sources/pyside6/tests/QtWidgets/reference_count_test.py b/sources/pyside6/tests/QtWidgets/reference_count_test.py index 00ebab4c3..92c63fac8 100644 --- a/sources/pyside6/tests/QtWidgets/reference_count_test.py +++ b/sources/pyside6/tests/QtWidgets/reference_count_test.py @@ -68,6 +68,7 @@ class ReferenceCount(UsesQApplication): def tearDown(self): super(ReferenceCount, self).tearDown() + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def beforeTest(self): points = [QPointF(0, 0), QPointF(100, 100), QPointF(0, 100)] pol = self.scene.addPolygon(QPolygonF(points)) @@ -77,6 +78,7 @@ class ReferenceCount(UsesQApplication): # refcount need be 3 because one ref for QGraphicsScene, and one to rect obj self.assertEqual(sys.getrefcount(pol), 3) + @unittest.skipUnless(hasattr(sys, "getrefcount"), f"{sys.implementation.name} has no refcount") def testReferenceCount(self): global destroyedRect global destroyedPol |