diff --git a/Tests/test_image_fromqpixmap.py b/Tests/test_image_fromqpixmap.py index 543b74bbf..d03f2d0e4 100644 --- a/Tests/test_image_fromqpixmap.py +++ b/Tests/test_image_fromqpixmap.py @@ -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')) diff --git a/Tests/test_image_toqimage.py b/Tests/test_image_toqimage.py index c9971cf73..bb238c622 100644 --- a/Tests/test_image_toqimage.py +++ b/Tests/test_image_toqimage.py @@ -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: diff --git a/Tests/test_image_toqpixmap.py b/Tests/test_image_toqpixmap.py index c6555d7ff..d3975cb67 100644 --- a/Tests/test_image_toqpixmap.py +++ b/Tests/test_image_toqpixmap.py @@ -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__': diff --git a/Tests/test_imageqt.py b/Tests/test_imageqt.py index cf9712ace..04bfef203 100644 --- a/Tests/test_imageqt.py +++ b/Tests/test_imageqt.py @@ -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):