mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-10-31 07:57:27 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			96 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import io
 | |
| 
 | |
| import pytest
 | |
| from PIL import features
 | |
| 
 | |
| try:
 | |
|     from PIL import _webp
 | |
| 
 | |
|     HAVE_WEBP = True
 | |
| except ImportError:
 | |
|     HAVE_WEBP = False
 | |
| 
 | |
| 
 | |
| def test_check():
 | |
|     # Check the correctness of the convenience function
 | |
|     for module in features.modules:
 | |
|         assert features.check_module(module) == features.check(module)
 | |
|     for codec in features.codecs:
 | |
|         assert features.check_codec(codec) == features.check(codec)
 | |
|     for feature in features.features:
 | |
|         assert features.check_feature(feature) == features.check(feature)
 | |
| 
 | |
| 
 | |
| @pytest.mark.skipif(not HAVE_WEBP, reason="WebP not available")
 | |
| def test_webp_transparency():
 | |
|     assert features.check("transp_webp") != _webp.WebPDecoderBuggyAlpha()
 | |
|     assert features.check("transp_webp") == _webp.HAVE_TRANSPARENCY
 | |
| 
 | |
| 
 | |
| @pytest.mark.skipif(not HAVE_WEBP, reason="WebP not available")
 | |
| def test_webp_mux():
 | |
|     assert features.check("webp_mux") == _webp.HAVE_WEBPMUX
 | |
| 
 | |
| 
 | |
| @pytest.mark.skipif(not HAVE_WEBP, reason="WebP not available")
 | |
| def test_webp_anim():
 | |
|     assert features.check("webp_anim") == _webp.HAVE_WEBPANIM
 | |
| 
 | |
| 
 | |
| def test_check_modules():
 | |
|     for feature in features.modules:
 | |
|         assert features.check_module(feature) in [True, False]
 | |
|     for feature in features.codecs:
 | |
|         assert features.check_codec(feature) in [True, False]
 | |
| 
 | |
| 
 | |
| def test_supported_modules():
 | |
|     assert isinstance(features.get_supported_modules(), list)
 | |
|     assert isinstance(features.get_supported_codecs(), list)
 | |
|     assert isinstance(features.get_supported_features(), list)
 | |
|     assert isinstance(features.get_supported(), list)
 | |
| 
 | |
| 
 | |
| def test_unsupported_codec():
 | |
|     # Arrange
 | |
|     codec = "unsupported_codec"
 | |
|     # Act / Assert
 | |
|     with pytest.raises(ValueError):
 | |
|         features.check_codec(codec)
 | |
| 
 | |
| 
 | |
| def test_unsupported_module():
 | |
|     # Arrange
 | |
|     module = "unsupported_module"
 | |
|     # Act / Assert
 | |
|     with pytest.raises(ValueError):
 | |
|         features.check_module(module)
 | |
| 
 | |
| 
 | |
| def test_pilinfo():
 | |
|     buf = io.StringIO()
 | |
|     features.pilinfo(buf)
 | |
|     out = buf.getvalue()
 | |
|     lines = out.splitlines()
 | |
|     assert lines[0] == "-" * 68
 | |
|     assert lines[1].startswith("Pillow ")
 | |
|     assert lines[2].startswith("Python ")
 | |
|     lines = lines[3:]
 | |
|     while lines[0].startswith("    "):
 | |
|         lines = lines[1:]
 | |
|     assert lines[0] == "-" * 68
 | |
|     assert lines[1].startswith("Python modules loaded from ")
 | |
|     assert lines[2].startswith("Binary modules loaded from ")
 | |
|     assert lines[3] == "-" * 68
 | |
|     jpeg = (
 | |
|         "\n"
 | |
|         + "-" * 68
 | |
|         + "\n"
 | |
|         + "JPEG image/jpeg\n"
 | |
|         + "Extensions: .jfif, .jpe, .jpeg, .jpg\n"
 | |
|         + "Features: open, save\n"
 | |
|         + "-" * 68
 | |
|         + "\n"
 | |
|     )
 | |
|     assert jpeg in out
 |