diff --git a/PIL/GribStubImagePlugin.py b/PIL/GribStubImagePlugin.py index 1fbfe61dc..33c8291ea 100644 --- a/PIL/GribStubImagePlugin.py +++ b/PIL/GribStubImagePlugin.py @@ -10,6 +10,7 @@ # from . import Image, ImageFile +from ._binary import i8 _handler = None @@ -28,7 +29,7 @@ def register_handler(handler): # Image adapter def _accept(prefix): - return prefix[0:4] == b"GRIB" and prefix[7] == b'\x01' + return prefix[0:4] == b"GRIB" and i8(prefix[7]) == 1 class GribStubImageFile(ImageFile.StubImageFile): diff --git a/Tests/images/WAlaska.wind.7days.grb b/Tests/images/WAlaska.wind.7days.grb new file mode 100644 index 000000000..37f9fd9b5 Binary files /dev/null and b/Tests/images/WAlaska.wind.7days.grb differ diff --git a/Tests/test_file_gribstub.py b/Tests/test_file_gribstub.py index 79025d3b4..dc0fa22d7 100644 --- a/Tests/test_file_gribstub.py +++ b/Tests/test_file_gribstub.py @@ -1,21 +1,45 @@ from helper import unittest, PillowTestCase, hopper -from PIL import GribStubImagePlugin +from PIL import GribStubImagePlugin, Image + +TEST_FILE = "Tests/images/WAlaska.wind.7days.grb" class TestFileGribStub(PillowTestCase): + def test_open(self): + # Act + im = Image.open(TEST_FILE) + + # Assert + self.assertEqual(im.format, "GRIB") + + # Dummy data from the stub + self.assertEqual(im.mode, "F") + self.assertEqual(im.size, (1, 1)) + def test_invalid_file(self): + # Arrange invalid_file = "Tests/images/flower.jpg" + # Act / Assert self.assertRaises(SyntaxError, lambda: GribStubImagePlugin.GribStubImageFile(invalid_file)) - def test_save(self): - im = hopper() + def test_load(self): + # Arrange + im = Image.open(TEST_FILE) + # Act / Assert: stub cannot load without an implemented handler + self.assertRaises(IOError, im.load) + + def test_save(self): + # Arrange + im = hopper() tmpfile = self.tempfile("temp.grib") + + # Act / Assert: stub cannot save without an implemented handler self.assertRaises(IOError, lambda: im.save(tmpfile))