Пример #1
0
def skip_unless_feature_version(feature, version_required, reason=None):
    if not features.check(feature):
        return pytest.mark.skip(f"{feature} not available")
    if reason is None:
        reason = f"{feature} is older than {version_required}"
    version_required = parse_version(version_required)
    version_available = parse_version(features.version(feature))
    return pytest.mark.skipif(version_available < version_required, reason=reason)
Пример #2
0
 def test(name, function):
     version = features.version(name)
     if not features.check(name):
         assert version is None
     else:
         assert function(name) == version
         if name != "PIL":
             assert version is None or re.search(r"\d+(\.\d+)*$", version)
Пример #3
0
 async def debug_info(self, ctx):
     """Get info about libs used by leveler and environment info"""
     try:
         from dns.version import version as dns_version
     except ImportError:
         dns_version = None
     except Exception as e:
         dns_version = e.__class__.__qualname__
     # tkinter already failed once due to incorrect installation (?)
     pil_features = []
     for feature in pilfeatures.get_supported():
         try:
             feature = (feature, pilfeatures.version(feature) or "N/A")
         except Exception as e:
             feature = (feature, type(e))
         pil_features.append(feature)
     # noinspection PyProtectedMember
     await ctx.send(
         chat.box(
             tabulate(
                 [
                     ("DB lock locked", self._db_lock.locked()),
                     (
                         "DB lock queue",
                         "N/A" if self._db_lock._waiters is None else len(
                             self._db_lock._waiters),
                     ),
                     ("pymongo version", pymongoversion),
                     ("motor version", motorversion),
                     (
                         "Mongo DB version",
                         (await self.client.server_info()).get(
                             "version", "?"),
                     ),
                     ("dnspython version", dns_version),
                     ("PIL version", pilfeatures.version("pil")),
                     (
                         "PIL features",
                         tabulate(pil_features, tablefmt="psql"),
                     ),
                 ],
                 tablefmt="psql",
             )))
Пример #4
0
def mark_if_feature_version(mark, feature, version_blacklist, reason=None):
    if not features.check(feature):
        return pytest.mark.pil_noop_mark()
    if reason is None:
        reason = f"{feature} is {version_blacklist}"
    version_required = parse_version(version_blacklist)
    version_available = parse_version(features.version(feature))
    if (version_available.major == version_required.major
            and version_available.minor == version_required.minor):
        return mark(reason=reason)
    return pytest.mark.pil_noop_mark()
Пример #5
0
def test_libimagequant_version():
    assert re.search(r"\d+\.\d+\.\d+$", features.version("libimagequant"))
Пример #6
0
def test_libjpeg_turbo_version():
    assert re.search(r"\d+\.\d+\.\d+$", features.version("libjpeg_turbo"))
Пример #7
0
import subprocess
import sys

import fuzzers
import packaging
import pytest

from PIL import Image, features

if sys.platform.startswith("win32"):
    pytest.skip("Fuzzer is linux only", allow_module_level=True)
if features.check("libjpeg_turbo"):
    version = packaging.version.parse(features.version("libjpeg_turbo"))
    if version.major == 2 and version.minor == 0:
        pytestmark = pytest.mark.valgrind_known_error(
            reason="Known failing with libjpeg_turbo 2.0")


@pytest.mark.parametrize(
    "path",
    subprocess.check_output("find Tests/images -type f",
                            shell=True).split(b"\n"),
)
def test_fuzz_images(path):
    fuzzers.enable_decompressionbomb_error()
    try:
        with open(path, "rb") as f:
            fuzzers.fuzz_image(f.read())
            assert True
    except (
            OSError,