From 8f34621c148d7c1602c32c73f8f63452fecc89ca Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Mon, 4 Mar 2019 15:02:47 +1100 Subject: [PATCH 1/2] Added mime type tests --- Tests/test_file_ico.py | 1 + Tests/test_file_pcx.py | 1 + Tests/test_file_tga.py | 2 ++ 3 files changed, 4 insertions(+) diff --git a/Tests/test_file_ico.py b/Tests/test_file_ico.py index b0d33e33f..f6244e086 100644 --- a/Tests/test_file_ico.py +++ b/Tests/test_file_ico.py @@ -14,6 +14,7 @@ class TestFileIco(PillowTestCase): self.assertEqual(im.mode, "RGBA") self.assertEqual(im.size, (16, 16)) self.assertEqual(im.format, "ICO") + self.assertEqual(im.get_format_mimetype(), "image/x-icon") def test_invalid_file(self): with open("Tests/images/flower.jpg", "rb") as fp: diff --git a/Tests/test_file_pcx.py b/Tests/test_file_pcx.py index 9e42a86f7..7608db47c 100644 --- a/Tests/test_file_pcx.py +++ b/Tests/test_file_pcx.py @@ -13,6 +13,7 @@ class TestFilePcx(PillowTestCase): self.assertEqual(im2.mode, im.mode) self.assertEqual(im2.size, im.size) self.assertEqual(im2.format, "PCX") + self.assertEqual(im2.get_format_mimetype(), "image/x-pcx") self.assert_image_equal(im2, im) def test_sanity(self): diff --git a/Tests/test_file_tga.py b/Tests/test_file_tga.py index 0dbfb309c..a8ab00d7f 100644 --- a/Tests/test_file_tga.py +++ b/Tests/test_file_tga.py @@ -37,6 +37,8 @@ class TestFileTga(PillowTestCase): path_no_ext, origin, "rle" if rle else "raw") original_im = Image.open(tga_path) + self.assertEqual(original_im.format, "TGA") + self.assertEqual(original_im.get_format_mimetype(), "image/x-tga") if rle: self.assertEqual( original_im.info["compression"], "tga_rle") From 873603701f368ed9b7d7c139e165f98fb345ec77 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Mon, 4 Mar 2019 15:11:21 +1100 Subject: [PATCH 2/2] Added .pnm test --- Tests/images/hopper.pnm | Bin 0 -> 49212 bytes Tests/test_file_ppm.py | 12 +++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 Tests/images/hopper.pnm diff --git a/Tests/images/hopper.pnm b/Tests/images/hopper.pnm new file mode 100644 index 0000000000000000000000000000000000000000..52368b2e234a0f9c08dca316fdb51ac6833b6195 GIT binary patch literal 49212 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%0A&>e+*BYr3|tbGCAkQ4Thy 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

PoeZU-?r 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 w+I7{4!-%pLX&~E^fCK*QL7!e

^j3AD|cR*TzG2z%%^|;2LtwDIRF3v literal 0 HcmV?d00001 diff --git a/Tests/test_file_ppm.py b/Tests/test_file_ppm.py index 47f8b845e..b9241e81d 100644 --- a/Tests/test_file_ppm.py +++ b/Tests/test_file_ppm.py @@ -1,4 +1,4 @@ -from .helper import PillowTestCase +from .helper import PillowTestCase, hopper from PIL import Image @@ -34,6 +34,16 @@ class TestFilePpm(PillowTestCase): reloaded = Image.open(f) self.assert_image_equal(im, reloaded) + def test_pnm(self): + im = Image.open('Tests/images/hopper.pnm') + self.assert_image_similar(im, hopper(), 0.0001) + + f = self.tempfile('temp.pnm') + im.save(f) + + reloaded = Image.open(f) + self.assert_image_equal(im, reloaded) + def test_truncated_file(self): path = self.tempfile('temp.pgm') with open(path, 'w') as f: