From 99887a546763c950233f691cf5dd0107f38cfc81 Mon Sep 17 00:00:00 2001 From: Hugo Date: Tue, 16 Sep 2014 16:05:22 +0300 Subject: [PATCH] Improve the error message when importing ImageGrab on non-Windows (#901) --- PIL/ImageGrab.py | 5 ++++- Tests/test_imagegrab.py | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/PIL/ImageGrab.py b/PIL/ImageGrab.py index 9bb190934..ef0135334 100644 --- a/PIL/ImageGrab.py +++ b/PIL/ImageGrab.py @@ -17,6 +17,9 @@ from PIL import Image +import sys +if sys.platform != "win32": + raise ImportError("ImageGrab is Windows only") try: # built-in driver (1.1.3 and later) @@ -40,7 +43,7 @@ def grab(bbox=None): def grabclipboard(): - debug = 0 # temporary interface + debug = 0 # temporary interface data = Image.core.grabclipboard(debug) if isinstance(data, bytes): from PIL import BmpImagePlugin diff --git a/Tests/test_imagegrab.py b/Tests/test_imagegrab.py index 13affe6b9..dd6f50fb9 100644 --- a/Tests/test_imagegrab.py +++ b/Tests/test_imagegrab.py @@ -1,5 +1,8 @@ from helper import unittest, PillowTestCase +import exceptions +import sys + try: from PIL import ImageGrab @@ -19,6 +22,28 @@ except ImportError: self.skipTest("ImportError") +class TestImageGrabImport(PillowTestCase): + + def test_import(self): + # Arrange + exception = None + + # Act + try: + from PIL import ImageGrab + ImageGrab.__name__ # dummy to prevent Pyflakes warning + except Exception as exception: + pass + + # Assert + if sys.platform == 'win32': + self.assertIsNone(exception, None) + else: + self.assertIsInstance(exception, exceptions.ImportError) + self.assertEqual(exception.message, + "ImageGrab is Windows only") + + if __name__ == '__main__': unittest.main()