Pillow/Tests/test_features.py

89 lines
3.0 KiB
Python
Raw Normal View History

Add __main__.py to output basic format and support information To help debug and show supported formats, users can run: $ python -m PIL to get basic format and support information about the installed version of Pillow. The new feature works as follows: $ python -m PIL -------------------------------------------------------------------- Pillow 6.1.0.dev0 -------------------------------------------------------------------- Python modules loaded from .../Pillow/src/PIL Binary modules loaded from .../Pillow/src/PIL -------------------------------------------------------------------- Python 3.7.3 (default, May 11 2019, 00:38:04) [GCC 9.1.1 20190503 (Red Hat 9.1.1-1)] -------------------------------------------------------------------- --- PIL CORE support ok --- TKINTER support ok --- FREETYPE2 support ok --- LITTLECMS2 support ok --- WEBP support ok --- WEBP Transparency support ok --- WEBPMUX support ok --- WEBP Animation support ok --- JPEG support ok --- OPENJPEG (JPEG2000) support ok --- ZLIB (PNG/ZIP) support ok --- LIBTIFF support ok --- RAQM (Bidirectional Text) support ok -------------------------------------------------------------------- BLP Extensions: .blp Features: open -------------------------------------------------------------------- BMP image/bmp Extensions: .bmp Features: open, save -------------------------------------------------------------------- BUFR Extensions: .bufr Features: open, save -------------------------------------------------------------------- …
2019-05-25 21:11:33 +03:00
from __future__ import unicode_literals
import io
2015-05-15 00:33:17 +03:00
from PIL import features
from .helper import PillowTestCase, unittest
2017-05-12 00:34:21 +03:00
try:
from PIL import _webp
2019-06-13 18:53:42 +03:00
2017-05-12 00:34:21 +03:00
HAVE_WEBP = True
2018-10-02 11:36:07 +03:00
except ImportError:
2017-05-12 00:34:21 +03:00
HAVE_WEBP = False
2017-09-01 14:05:40 +03:00
2015-05-15 00:33:17 +03:00
class TestFeatures(PillowTestCase):
2017-05-12 00:34:21 +03:00
def test_check(self):
# Check the correctness of the convenience function
for module in features.modules:
2019-06-13 18:53:42 +03:00
self.assertEqual(features.check_module(module), features.check(module))
2017-05-12 00:34:21 +03:00
for codec in features.codecs:
2019-06-13 18:53:42 +03:00
self.assertEqual(features.check_codec(codec), features.check(codec))
2017-05-12 00:34:21 +03:00
for feature in features.features:
2019-06-13 18:53:42 +03:00
self.assertEqual(features.check_feature(feature), features.check(feature))
2017-05-12 00:34:21 +03:00
@unittest.skipUnless(HAVE_WEBP, "WebP not available")
2018-10-21 16:44:12 +03:00
def test_webp_transparency(self):
2019-06-13 18:53:42 +03:00
self.assertEqual(
features.check("transp_webp"), not _webp.WebPDecoderBuggyAlpha()
)
self.assertEqual(features.check("transp_webp"), _webp.HAVE_TRANSPARENCY)
2017-05-12 00:34:21 +03:00
@unittest.skipUnless(HAVE_WEBP, "WebP not available")
2018-10-21 16:44:12 +03:00
def test_webp_mux(self):
2019-06-13 18:53:42 +03:00
self.assertEqual(features.check("webp_mux"), _webp.HAVE_WEBPMUX)
2017-09-01 14:05:40 +03:00
@unittest.skipUnless(HAVE_WEBP, "WebP not available")
2018-10-21 16:44:12 +03:00
def test_webp_anim(self):
2019-06-13 18:53:42 +03:00
self.assertEqual(features.check("webp_anim"), _webp.HAVE_WEBPANIM)
2017-05-12 00:34:21 +03:00
def test_check_modules(self):
2015-05-15 00:33:17 +03:00
for feature in features.modules:
2017-05-12 00:34:21 +03:00
self.assertIn(features.check_module(feature), [True, False])
2015-05-15 00:33:17 +03:00
for feature in features.codecs:
self.assertIn(features.check_codec(feature), [True, False])
2015-05-15 00:33:17 +03:00
2017-05-12 00:34:21 +03:00
def test_supported_modules(self):
self.assertIsInstance(features.get_supported_modules(), list)
self.assertIsInstance(features.get_supported_codecs(), list)
2017-05-12 00:34:21 +03:00
self.assertIsInstance(features.get_supported_features(), list)
self.assertIsInstance(features.get_supported(), list)
2015-05-15 00:33:17 +03:00
2015-05-15 11:42:36 +03:00
def test_unsupported_codec(self):
# Arrange
codec = "unsupported_codec"
# Act / Assert
2017-09-01 14:05:40 +03:00
self.assertRaises(ValueError, features.check_codec, codec)
2015-05-15 11:42:36 +03:00
def test_unsupported_module(self):
# Arrange
module = "unsupported_module"
# Act / Assert
2017-09-01 14:05:40 +03:00
self.assertRaises(ValueError, features.check_module, module)
Add __main__.py to output basic format and support information To help debug and show supported formats, users can run: $ python -m PIL to get basic format and support information about the installed version of Pillow. The new feature works as follows: $ python -m PIL -------------------------------------------------------------------- Pillow 6.1.0.dev0 -------------------------------------------------------------------- Python modules loaded from .../Pillow/src/PIL Binary modules loaded from .../Pillow/src/PIL -------------------------------------------------------------------- Python 3.7.3 (default, May 11 2019, 00:38:04) [GCC 9.1.1 20190503 (Red Hat 9.1.1-1)] -------------------------------------------------------------------- --- PIL CORE support ok --- TKINTER support ok --- FREETYPE2 support ok --- LITTLECMS2 support ok --- WEBP support ok --- WEBP Transparency support ok --- WEBPMUX support ok --- WEBP Animation support ok --- JPEG support ok --- OPENJPEG (JPEG2000) support ok --- ZLIB (PNG/ZIP) support ok --- LIBTIFF support ok --- RAQM (Bidirectional Text) support ok -------------------------------------------------------------------- BLP Extensions: .blp Features: open -------------------------------------------------------------------- BMP image/bmp Extensions: .bmp Features: open, save -------------------------------------------------------------------- BUFR Extensions: .bufr Features: open, save -------------------------------------------------------------------- …
2019-05-25 21:11:33 +03:00
def test_pilinfo(self):
buf = io.StringIO()
features.pilinfo(buf)
out = buf.getvalue()
lines = out.splitlines()
self.assertEqual(lines[0], "-" * 68)
self.assertTrue(lines[1].startswith("Pillow "))
self.assertEqual(lines[2], "-" * 68)
self.assertTrue(lines[3].startswith("Python modules loaded from "))
self.assertTrue(lines[4].startswith("Binary modules loaded from "))
self.assertEqual(lines[5], "-" * 68)
self.assertTrue(lines[6].startswith("Python "))
jpeg = (
2019-06-22 07:47:56 +03:00
"\n"
+ "-" * 68
+ "\n"
+ "JPEG image/jpeg\n"
+ "Extensions: .jfif, .jpe, .jpeg, .jpg\n"
+ "Features: open, save\n"
+ "-" * 68
+ "\n"
Add __main__.py to output basic format and support information To help debug and show supported formats, users can run: $ python -m PIL to get basic format and support information about the installed version of Pillow. The new feature works as follows: $ python -m PIL -------------------------------------------------------------------- Pillow 6.1.0.dev0 -------------------------------------------------------------------- Python modules loaded from .../Pillow/src/PIL Binary modules loaded from .../Pillow/src/PIL -------------------------------------------------------------------- Python 3.7.3 (default, May 11 2019, 00:38:04) [GCC 9.1.1 20190503 (Red Hat 9.1.1-1)] -------------------------------------------------------------------- --- PIL CORE support ok --- TKINTER support ok --- FREETYPE2 support ok --- LITTLECMS2 support ok --- WEBP support ok --- WEBP Transparency support ok --- WEBPMUX support ok --- WEBP Animation support ok --- JPEG support ok --- OPENJPEG (JPEG2000) support ok --- ZLIB (PNG/ZIP) support ok --- LIBTIFF support ok --- RAQM (Bidirectional Text) support ok -------------------------------------------------------------------- BLP Extensions: .blp Features: open -------------------------------------------------------------------- BMP image/bmp Extensions: .bmp Features: open, save -------------------------------------------------------------------- BUFR Extensions: .bufr Features: open, save -------------------------------------------------------------------- …
2019-05-25 21:11:33 +03:00
)
self.assertIn(jpeg, out)