deekshu coverage tool and duru second func improv

This commit is contained in:
Duru 2024-06-21 14:58:01 +02:00
parent 703b8cf6c3
commit e31adc7e40
3 changed files with 39 additions and 3 deletions

View File

@ -4,6 +4,8 @@ import sys
from PIL import Image from PIL import Image
from PIL import PdfParser from PIL import PdfParser
from PIL import ImageCms
from PIL import McIdasImagePlugin
pytest_plugins = ["Tests.helper"] pytest_plugins = ["Tests.helper"]
@ -12,6 +14,8 @@ def calculate_coverage(test_name):
all_branches = { all_branches = {
"branches1": Image.branches, "branches1": Image.branches,
"branches2": PdfParser.XrefTable.branches, "branches2": PdfParser.XrefTable.branches,
"branches3": ImageCms.ImageCmsProfile.branches,
"branches4": McIdasImagePlugin.McIdasImageFile.branches,
# Add more # Add more
} }
@ -46,5 +50,3 @@ def pytest_sessionfinish(session, exitstatus):
coverage = calculate_coverage(test_name) coverage = calculate_coverage(test_name)
print("\nBRANCH COVERAGE for", test_name, ":", coverage, "%\n") print("\nBRANCH COVERAGE for", test_name, ":", coverage, "%\n")

View File

@ -237,6 +237,17 @@ _FLAGS = {
class ImageCmsProfile: class ImageCmsProfile:
branches = {
"1": False,
"2": False,
"3": False,
"4": False,
"5": False,
"6": False,
"7": False,
"8": False,
}
def __init__(self, profile: str | SupportsRead[bytes] | core.CmsProfile) -> None: def __init__(self, profile: str | SupportsRead[bytes] | core.CmsProfile) -> None:
""" """
:param profile: Either a string representing a filename, :param profile: Either a string representing a filename,
@ -246,23 +257,32 @@ class ImageCmsProfile:
""" """
if isinstance(profile, str): if isinstance(profile, str):
ImageCmsProfile.branches["1"] = True
if sys.platform == "win32": if sys.platform == "win32":
ImageCmsProfile.branches["2"] = True
profile_bytes_path = profile.encode() profile_bytes_path = profile.encode()
try: try:
ImageCmsProfile.branches["3"] = True
profile_bytes_path.decode("ascii") profile_bytes_path.decode("ascii")
except UnicodeDecodeError: except UnicodeDecodeError:
ImageCmsProfile.branches["4"] = True
with open(profile, "rb") as f: with open(profile, "rb") as f:
ImageCmsProfile.branches["5"] = True
self._set(core.profile_frombytes(f.read())) self._set(core.profile_frombytes(f.read()))
return return
self._set(core.profile_open(profile), profile) self._set(core.profile_open(profile), profile)
elif hasattr(profile, "read"): elif hasattr(profile, "read"):
ImageCmsProfile.branches["6"] = True
self._set(core.profile_frombytes(profile.read())) self._set(core.profile_frombytes(profile.read()))
elif isinstance(profile, core.CmsProfile): elif isinstance(profile, core.CmsProfile):
ImageCmsProfile.branches["7"] = True
self._set(profile) self._set(profile)
else: else:
ImageCmsProfile.branches["8"] = True
msg = "Invalid type for Profile" # type: ignore[unreachable] msg = "Invalid type for Profile" # type: ignore[unreachable]
raise TypeError(msg) raise TypeError(msg)
def _set(self, profile: core.CmsProfile, filename: str | None = None) -> None: def _set(self, profile: core.CmsProfile, filename: str | None = None) -> None:
self.profile = profile self.profile = profile
self.filename = filename self.filename = filename

View File

@ -31,6 +31,14 @@ def _accept(prefix: bytes) -> bool:
class McIdasImageFile(ImageFile.ImageFile): class McIdasImageFile(ImageFile.ImageFile):
branches = {
"1": False,
"2": False,
"3": False,
"4": False,
"5": False,
}
format = "MCIDAS" format = "MCIDAS"
format_description = "McIdas area file" format_description = "McIdas area file"
@ -40,6 +48,7 @@ class McIdasImageFile(ImageFile.ImageFile):
s = self.fp.read(256) s = self.fp.read(256)
if not _accept(s) or len(s) != 256: if not _accept(s) or len(s) != 256:
McIdasImageFile.branches["1"] = True
msg = "not an McIdas area file" msg = "not an McIdas area file"
raise SyntaxError(msg) raise SyntaxError(msg)
@ -48,16 +57,20 @@ class McIdasImageFile(ImageFile.ImageFile):
# get mode # get mode
if w[11] == 1: if w[11] == 1:
McIdasImageFile.branches["2"] = True
mode = rawmode = "L" mode = rawmode = "L"
elif w[11] == 2: elif w[11] == 2:
McIdasImageFile.branches["3"] = True
# FIXME: add memory map support # FIXME: add memory map support
mode = "I" mode = "I"
rawmode = "I;16B" rawmode = "I;16B"
elif w[11] == 4: elif w[11] == 4:
McIdasImageFile.branches["4"] = True
# FIXME: add memory map support # FIXME: add memory map support
mode = "I" mode = "I"
rawmode = "I;32B" rawmode = "I;32B"
else: else:
McIdasImageFile.branches["5"] = True
msg = "unsupported McIdas format" msg = "unsupported McIdas format"
raise SyntaxError(msg) raise SyntaxError(msg)
@ -76,3 +89,4 @@ class McIdasImageFile(ImageFile.ImageFile):
Image.register_open(McIdasImageFile.format, McIdasImageFile, _accept) Image.register_open(McIdasImageFile.format, McIdasImageFile, _accept)
# no default extension # no default extension