diff --git a/PIL/BufrStubImagePlugin.py b/PIL/BufrStubImagePlugin.py index 4c5da942f..16d83c74d 100644 --- a/PIL/BufrStubImagePlugin.py +++ b/PIL/BufrStubImagePlugin.py @@ -40,7 +40,7 @@ class BufrStubImageFile(ImageFile.StubImageFile): offset = self.fp.tell() - if not _accept(self.fp.read(8)): + if not _accept(self.fp.read(4)): raise SyntaxError("Not a BUFR file") self.fp.seek(offset) diff --git a/Tests/images/gfs.t06z.rassda.tm00.bufr_d b/Tests/images/gfs.t06z.rassda.tm00.bufr_d new file mode 100644 index 000000000..4f895a157 Binary files /dev/null and b/Tests/images/gfs.t06z.rassda.tm00.bufr_d differ diff --git a/Tests/test_file_bufrstub.py b/Tests/test_file_bufrstub.py index 21d5c6ee5..4932930ff 100644 --- a/Tests/test_file_bufrstub.py +++ b/Tests/test_file_bufrstub.py @@ -1,21 +1,45 @@ from helper import unittest, PillowTestCase, hopper -from PIL import BufrStubImagePlugin +from PIL import BufrStubImagePlugin, Image + +TEST_FILE = "Tests/images/gfs.t06z.rassda.tm00.bufr_d" class TestFileBufrStub(PillowTestCase): + def test_open(self): + # Act + im = Image.open(TEST_FILE) + + # Assert + self.assertEqual(im.format, "BUFR") + + # 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: BufrStubImagePlugin.BufrStubImageFile(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.bufr") + + # Act / Assert: stub cannot save without an implemented handler self.assertRaises(IOError, lambda: im.save(tmpfile))