diff --git a/picard/util/imageinfo.py b/picard/util/imageinfo.py index 12c00ca64..18a1cdb4d 100644 --- a/picard/util/imageinfo.py +++ b/picard/util/imageinfo.py @@ -21,15 +21,11 @@ import StringIO import struct -class ImageInfoError(Exception): +class IdentifyError(Exception): pass -class ImageInfoUnrecognized(Exception): - pass - - -def image_info(data): +def identify(data): """Parse data for jpg, gif, png metadata If successfully recognized, it returns a tuple with: - width @@ -37,13 +33,14 @@ def image_info(data): - mimetype - extension - data length - If there is not enough data (< 16 bytes), it will raise `ImageInfoError`. - If format isn't recognized, it will raise `ImageInfoUnrecognized` + It will raise 'IdentifyError' if: + - not enough data (< 16 bytes) + - format isn't recognized """ datalen = len(data) if datalen < 16: - raise ImageInfoError('Not enough data') + raise IdentifyError('Not enough data') w = -1 h = -1 @@ -93,7 +90,7 @@ def image_info(data): pass else: - raise ImageInfoUnrecognized('Unrecognized image data') + raise IdentifyError('Unrecognized image data') assert(w != -1) assert(h != -1) assert(mime != '') diff --git a/test/test_utils.py b/test/test_utils.py index 7b63595d2..9f2560ff4 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -170,8 +170,7 @@ class AlbumArtistFromPathTest(unittest.TestCase): self.assertEqual(aafp(file_4, 'album', 'artist'), ('album', 'artist')) -from picard.util.imageinfo import image_info, ImageInfoError, ImageInfoUnrecognized - +from picard.util import imageinfo class ImageInfoTest(unittest.TestCase): @@ -179,29 +178,35 @@ class ImageInfoTest(unittest.TestCase): file = os.path.join('test', 'data', 'mb.gif') with open(file, 'rb') as f: - self.assertEqual(image_info(f.read()), (140, 96, 'image/gif', - '.gif', 5806)) + self.assertEqual( + imageinfo.identify(f.read()), + (140, 96, 'image/gif', '.gif', 5806) + ) def test_png(self): file = os.path.join('test', 'data', 'mb.png') with open(file, 'rb') as f: - self.assertEqual(image_info(f.read()), (140, 96, 'image/png', - '.png', 15692)) + self.assertEqual( + imageinfo.identify(f.read()), + (140, 96, 'image/png','.png', 15692) + ) def test_jpeg(self): file = os.path.join('test', 'data', 'mb.jpg',) with open(file, 'rb') as f: - self.assertEqual(image_info(f.read()), (140, 96, 'image/jpeg', - '.jpg', 8550)) + self.assertEqual( + imageinfo.identify(f.read()), + (140, 96, 'image/jpeg', '.jpg', 8550) + ) def test_not_enough_data(self): - self.assertRaises(ImageInfoError, image_info, "x") + self.assertRaises(imageinfo.IdentifyError, imageinfo.identify, "x") def test_invalid_data(self): - self.assertRaises(ImageInfoUnrecognized, image_info, "x" * 20) + self.assertRaises(imageinfo.IdentifyError, imageinfo.identify, "x" * 20) def test_invalid_png_data(self): data = '\x89PNG\x0D\x0A\x1A\x0A' + "x" * 20 - self.assertRaises(ImageInfoUnrecognized, image_info, data) + self.assertRaises(imageinfo.IdentifyError, imageinfo.identify, data)