get test_ref_cycles to pass (#1539)
* get test_ref_cycles to pass let objects die without gc.collect() if you don't have cyclic references, there should be no need to call gc.collect() the usage of gc.collect() was causing pytest running with coverage to crash on Python 3.7 / PySide2 5.12 / {Linux, Windows}. * remove imports used only by the removed code
This commit is contained in:
parent
f336ac2d91
commit
cd914495ec
@ -1,4 +1,3 @@
|
|||||||
import gc
|
|
||||||
import weakref
|
import weakref
|
||||||
try:
|
try:
|
||||||
import faulthandler
|
import faulthandler
|
||||||
@ -16,7 +15,6 @@ def test_getViewWidget():
|
|||||||
view.addItem(item)
|
view.addItem(item)
|
||||||
assert item.getViewWidget() is view
|
assert item.getViewWidget() is view
|
||||||
del view
|
del view
|
||||||
gc.collect()
|
|
||||||
assert vref() is None
|
assert vref() is None
|
||||||
assert item.getViewWidget() is None
|
assert item.getViewWidget() is None
|
||||||
|
|
||||||
@ -30,7 +28,6 @@ def test_getViewWidget_deleted():
|
|||||||
obj = pg.QtGui.QWidget()
|
obj = pg.QtGui.QWidget()
|
||||||
view.setParent(obj)
|
view.setParent(obj)
|
||||||
del obj
|
del obj
|
||||||
gc.collect()
|
|
||||||
|
|
||||||
assert not pg.Qt.isQObjectAlive(view)
|
assert not pg.Qt.isQObjectAlive(view)
|
||||||
assert item.getViewWidget() is None
|
assert item.getViewWidget() is None
|
||||||
|
@ -5,12 +5,9 @@ Test for unwanted reference cycles
|
|||||||
"""
|
"""
|
||||||
import pyqtgraph as pg
|
import pyqtgraph as pg
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import gc, weakref
|
import weakref
|
||||||
import pytest
|
|
||||||
app = pg.mkQApp()
|
app = pg.mkQApp()
|
||||||
|
|
||||||
skipreason = ('This test is failing on pyside and pyside2 for an unknown reason.')
|
|
||||||
|
|
||||||
def assert_alldead(refs):
|
def assert_alldead(refs):
|
||||||
for ref in refs:
|
for ref in refs:
|
||||||
assert ref() is None
|
assert ref() is None
|
||||||
@ -37,7 +34,6 @@ def mkrefs(*objs):
|
|||||||
return [weakref.ref(obj) for obj in allObjs.values()]
|
return [weakref.ref(obj) for obj in allObjs.values()]
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(pg.Qt.QT_LIB in {'PySide'}, reason=skipreason)
|
|
||||||
def test_PlotWidget():
|
def test_PlotWidget():
|
||||||
def mkobjs(*args, **kwds):
|
def mkobjs(*args, **kwds):
|
||||||
w = pg.PlotWidget(*args, **kwds)
|
w = pg.PlotWidget(*args, **kwds)
|
||||||
@ -55,7 +51,6 @@ def test_PlotWidget():
|
|||||||
for i in range(5):
|
for i in range(5):
|
||||||
assert_alldead(mkobjs())
|
assert_alldead(mkobjs())
|
||||||
|
|
||||||
@pytest.mark.skipif(pg.Qt.QT_LIB in {'PySide', 'PySide2', 'PySide6'}, reason=skipreason)
|
|
||||||
def test_ImageView():
|
def test_ImageView():
|
||||||
def mkobjs():
|
def mkobjs():
|
||||||
iv = pg.ImageView()
|
iv = pg.ImageView()
|
||||||
@ -63,12 +58,11 @@ def test_ImageView():
|
|||||||
iv.setImage(data)
|
iv.setImage(data)
|
||||||
|
|
||||||
return mkrefs(iv, iv.imageItem, iv.view, iv.ui.histogram, data)
|
return mkrefs(iv, iv.imageItem, iv.view, iv.ui.histogram, data)
|
||||||
|
|
||||||
for i in range(5):
|
for i in range(5):
|
||||||
gc.collect()
|
|
||||||
assert_alldead(mkobjs())
|
assert_alldead(mkobjs())
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(pg.Qt.QT_LIB in {'PySide'}, reason=skipreason)
|
|
||||||
def test_GraphicsWindow():
|
def test_GraphicsWindow():
|
||||||
def mkobjs():
|
def mkobjs():
|
||||||
w = pg.GraphicsWindow()
|
w = pg.GraphicsWindow()
|
||||||
|
@ -8,7 +8,6 @@ Distributed under MIT/X11 license. See license.txt for more information.
|
|||||||
from ..Qt import QtCore, QtGui, QtWidgets, QT_LIB
|
from ..Qt import QtCore, QtGui, QtWidgets, QT_LIB
|
||||||
from ..Point import Point
|
from ..Point import Point
|
||||||
import sys, os
|
import sys, os
|
||||||
import warnings
|
|
||||||
from .FileDialog import FileDialog
|
from .FileDialog import FileDialog
|
||||||
from ..GraphicsScene import GraphicsScene
|
from ..GraphicsScene import GraphicsScene
|
||||||
import numpy as np
|
import numpy as np
|
||||||
@ -407,18 +406,3 @@ class GraphicsView(QtGui.QGraphicsView):
|
|||||||
|
|
||||||
def dragEnterEvent(self, ev):
|
def dragEnterEvent(self, ev):
|
||||||
ev.ignore() ## not sure why, but for some reason this class likes to consume drag events
|
ev.ignore() ## not sure why, but for some reason this class likes to consume drag events
|
||||||
|
|
||||||
def _del(self):
|
|
||||||
try:
|
|
||||||
if self.parentWidget() is None and self.isVisible():
|
|
||||||
msg = "Visible window deleted. To prevent this, store a reference to the window object."
|
|
||||||
try:
|
|
||||||
warnings.warn(msg, RuntimeWarning, stacklevel=2)
|
|
||||||
except TypeError:
|
|
||||||
# warnings module not available during interpreter shutdown
|
|
||||||
pass
|
|
||||||
except RuntimeError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
if sys.version_info[0] == 3 and sys.version_info[1] >= 4:
|
|
||||||
GraphicsView.__del__ = GraphicsView._del
|
|
||||||
|
Loading…
Reference in New Issue
Block a user