mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-08-26 07:04:45 +03:00
Moved QApplication and QGuiApplication testing into separate threads
This commit is contained in:
parent
f58f690835
commit
dad0fd6d38
|
@ -7,9 +7,11 @@ from PIL import ImageQt
|
|||
class TestFromQPixmap(PillowQPixmapTestCase, PillowTestCase):
|
||||
|
||||
def roundtrip(self, expected):
|
||||
result = ImageQt.fromqpixmap(ImageQt.toqpixmap(expected))
|
||||
# Qt saves all pixmaps as rgb
|
||||
self.assert_image_equal(result, expected.convert('RGB'))
|
||||
def test():
|
||||
result = ImageQt.fromqpixmap(ImageQt.toqpixmap(expected))
|
||||
# Qt saves all pixmaps as rgb
|
||||
self.assert_image_equal(result, expected.convert('RGB'))
|
||||
self.executeInSeparateProcess(test)
|
||||
|
||||
def test_sanity_1(self):
|
||||
self.roundtrip(hopper('1'))
|
||||
|
|
|
@ -60,10 +60,12 @@ class TestToQImage(PillowQtTestCase, PillowTestCase):
|
|||
self.assert_image_equal(reloaded, src)
|
||||
|
||||
def test_segfault(self):
|
||||
app = QApplication([])
|
||||
ex = Example()
|
||||
assert(app) # Silence warning
|
||||
assert(ex) # Silence warning
|
||||
def test():
|
||||
app = QApplication([])
|
||||
ex = Example()
|
||||
assert(app) # Silence warning
|
||||
assert(ex) # Silence warning
|
||||
self.executeInSeparateProcess(test)
|
||||
|
||||
|
||||
if ImageQt.qt_is_installed:
|
||||
|
|
|
@ -10,15 +10,17 @@ if ImageQt.qt_is_installed:
|
|||
class TestToQPixmap(PillowQPixmapTestCase, PillowTestCase):
|
||||
|
||||
def test_sanity(self):
|
||||
for mode in ('1', 'RGB', 'RGBA', 'L', 'P'):
|
||||
data = ImageQt.toqpixmap(hopper(mode))
|
||||
def test():
|
||||
for mode in ('1', 'RGB', 'RGBA', 'L', 'P'):
|
||||
data = ImageQt.toqpixmap(hopper(mode))
|
||||
|
||||
self.assertIsInstance(data, QPixmap)
|
||||
self.assertFalse(data.isNull())
|
||||
self.assertIsInstance(data, QPixmap)
|
||||
self.assertFalse(data.isNull())
|
||||
|
||||
# Test saving the file
|
||||
tempfile = self.tempfile('temp_{}.png'.format(mode))
|
||||
data.save(tempfile)
|
||||
# Test saving the file
|
||||
tempfile = self.tempfile('temp_{}.png'.format(mode))
|
||||
data.save(tempfile)
|
||||
self.executeInSeparateProcess(test)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -2,6 +2,7 @@ from helper import unittest, PillowTestCase, hopper
|
|||
|
||||
from PIL import ImageQt
|
||||
|
||||
import multiprocessing
|
||||
|
||||
if ImageQt.qt_is_installed:
|
||||
from PIL.ImageQt import qRgba
|
||||
|
@ -18,6 +19,21 @@ class PillowQtTestCase(object):
|
|||
def setUp(self):
|
||||
skip_if_qt_is_not_installed(self)
|
||||
|
||||
def executeInSeparateProcess(self, test):
|
||||
def target():
|
||||
if ImageQt.qt_version == '5':
|
||||
from PyQt5.QtGui import QGuiApplication
|
||||
elif ImageQt.qt_version == '4':
|
||||
from PyQt4.QtGui import QGuiApplication
|
||||
elif ImageQt.qt_version == 'side':
|
||||
from PySide.QtGui import QGuiApplication
|
||||
app = QGuiApplication([])
|
||||
test()
|
||||
app.quit()
|
||||
p = multiprocessing.Process(target=target)
|
||||
p.start()
|
||||
p.join()
|
||||
|
||||
def tearDown(self):
|
||||
pass
|
||||
|
||||
|
@ -36,12 +52,6 @@ class PillowQPixmapTestCase(PillowQtTestCase):
|
|||
except ImportError:
|
||||
self.skipTest('QGuiApplication not installed')
|
||||
|
||||
self.app = QGuiApplication([])
|
||||
|
||||
def tearDown(self):
|
||||
PillowQtTestCase.tearDown(self)
|
||||
self.app.quit()
|
||||
|
||||
|
||||
class TestImageQt(PillowQtTestCase, PillowTestCase):
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user