mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 09:57:43 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			94 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from __future__ import annotations
 | 
						|
 | 
						|
import pytest
 | 
						|
 | 
						|
from PIL import _deprecate
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize(
 | 
						|
    "version, expected",
 | 
						|
    [
 | 
						|
        (
 | 
						|
            12,
 | 
						|
            "Old thing is deprecated and will be removed in Pillow 12 "
 | 
						|
            r"\(2025-10-15\)\. Use new thing instead\.",
 | 
						|
        ),
 | 
						|
        (
 | 
						|
            None,
 | 
						|
            r"Old thing is deprecated and will be removed in a future version\. "
 | 
						|
            r"Use new thing instead\.",
 | 
						|
        ),
 | 
						|
    ],
 | 
						|
)
 | 
						|
def test_version(version: int | None, expected: str) -> None:
 | 
						|
    with pytest.warns(DeprecationWarning, match=expected):
 | 
						|
        _deprecate.deprecate("Old thing", version, "new thing")
 | 
						|
 | 
						|
 | 
						|
def test_unknown_version() -> None:
 | 
						|
    expected = r"Unknown removal version: 12345. Update PIL\._deprecate\?"
 | 
						|
    with pytest.raises(ValueError, match=expected):
 | 
						|
        _deprecate.deprecate("Old thing", 12345, "new thing")
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize(
 | 
						|
    "deprecated, plural, expected",
 | 
						|
    [
 | 
						|
        (
 | 
						|
            "Old thing",
 | 
						|
            False,
 | 
						|
            r"Old thing is deprecated and should be removed\.",
 | 
						|
        ),
 | 
						|
        (
 | 
						|
            "Old things",
 | 
						|
            True,
 | 
						|
            r"Old things are deprecated and should be removed\.",
 | 
						|
        ),
 | 
						|
    ],
 | 
						|
)
 | 
						|
def test_old_version(deprecated: str, plural: bool, expected: str) -> None:
 | 
						|
    expected = r""
 | 
						|
    with pytest.raises(RuntimeError, match=expected):
 | 
						|
        _deprecate.deprecate(deprecated, 1, plural=plural)
 | 
						|
 | 
						|
 | 
						|
def test_plural() -> None:
 | 
						|
    expected = (
 | 
						|
        r"Old things are deprecated and will be removed in Pillow 12 \(2025-10-15\)\. "
 | 
						|
        r"Use new thing instead\."
 | 
						|
    )
 | 
						|
    with pytest.warns(DeprecationWarning, match=expected):
 | 
						|
        _deprecate.deprecate("Old things", 12, "new thing", plural=True)
 | 
						|
 | 
						|
 | 
						|
def test_replacement_and_action() -> None:
 | 
						|
    expected = "Use only one of 'replacement' and 'action'"
 | 
						|
    with pytest.raises(ValueError, match=expected):
 | 
						|
        _deprecate.deprecate(
 | 
						|
            "Old thing", 12, replacement="new thing", action="Upgrade to new thing"
 | 
						|
        )
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize(
 | 
						|
    "action",
 | 
						|
    [
 | 
						|
        "Upgrade to new thing",
 | 
						|
        "Upgrade to new thing.",
 | 
						|
    ],
 | 
						|
)
 | 
						|
def test_action(action: str) -> None:
 | 
						|
    expected = (
 | 
						|
        r"Old thing is deprecated and will be removed in Pillow 12 \(2025-10-15\)\. "
 | 
						|
        r"Upgrade to new thing\."
 | 
						|
    )
 | 
						|
    with pytest.warns(DeprecationWarning, match=expected):
 | 
						|
        _deprecate.deprecate("Old thing", 12, action=action)
 | 
						|
 | 
						|
 | 
						|
def test_no_replacement_or_action() -> None:
 | 
						|
    expected = (
 | 
						|
        r"Old thing is deprecated and will be removed in Pillow 12 \(2025-10-15\)"
 | 
						|
    )
 | 
						|
    with pytest.warns(DeprecationWarning, match=expected):
 | 
						|
        _deprecate.deprecate("Old thing", 12)
 |