This commit is contained in:
Andrew Murray 2018-08-04 22:40:46 +00:00 committed by GitHub
commit 8a2a88816f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 38 additions and 28 deletions

View File

@ -1,5 +1,5 @@
from helper import unittest, PillowTestCase, hopper
from test_imageqt import PillowQtTestCase, PillowQPixmapTestCase
from test_imageqt import PillowQPixmapTestCase
from PIL import ImageQt
@ -7,10 +7,11 @@ from PIL import ImageQt
class TestFromQPixmap(PillowQPixmapTestCase, PillowTestCase):
def roundtrip(self, expected):
PillowQtTestCase.setUp(self)
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'))

View File

@ -25,7 +25,6 @@ if ImageQt.qt_is_installed:
class TestToQImage(PillowQtTestCase, PillowTestCase):
def test_sanity(self):
PillowQtTestCase.setUp(self)
for mode in ('RGB', 'RGBA', 'L', 'P', '1'):
src = hopper(mode)
data = ImageQt.toqimage(src)
@ -61,12 +60,12 @@ class TestToQImage(PillowQtTestCase, PillowTestCase):
self.assert_image_equal(reloaded, src)
def test_segfault(self):
PillowQtTestCase.setUp(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:

View File

@ -1,5 +1,5 @@
from helper import unittest, PillowTestCase, hopper
from test_imageqt import PillowQtTestCase, PillowQPixmapTestCase
from test_imageqt import PillowQPixmapTestCase
from PIL import ImageQt
@ -10,17 +10,17 @@ if ImageQt.qt_is_installed:
class TestToQPixmap(PillowQPixmapTestCase, PillowTestCase):
def test_sanity(self):
PillowQtTestCase.setUp(self)
def test():
for mode in ('1', 'RGB', 'RGBA', 'L', 'P'):
data = ImageQt.toqpixmap(hopper(mode))
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__':

View File

@ -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):