mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-08-04 20:40:11 +03:00
test_imageshow coverage tool
This commit is contained in:
parent
914d6b981e
commit
b6a7243654
|
@ -4,6 +4,8 @@ from typing import Any
|
|||
|
||||
import pytest
|
||||
|
||||
from conftest import branch_coverage2
|
||||
|
||||
from PIL import Image, ImageShow
|
||||
|
||||
from .helper import hopper, is_win32, on_ci
|
||||
|
@ -30,6 +32,7 @@ def test_viewer_show(order: int) -> None:
|
|||
class TestViewer(ImageShow.Viewer):
|
||||
def show_image(self, image: Image.Image, **options: Any) -> bool:
|
||||
self.methodCalled = True
|
||||
branch_coverage2["1"] = True
|
||||
return True
|
||||
|
||||
viewer = TestViewer()
|
||||
|
@ -39,11 +42,12 @@ def test_viewer_show(order: int) -> None:
|
|||
viewer.methodCalled = False
|
||||
with hopper(mode) as im:
|
||||
assert ImageShow.show(im)
|
||||
branch_coverage2["2"] = True
|
||||
assert viewer.methodCalled
|
||||
|
||||
# Restore original state
|
||||
ImageShow._viewers.pop(0)
|
||||
|
||||
branch_coverage2["3"] = True
|
||||
|
||||
@pytest.mark.skipif(
|
||||
not on_ci() or is_win32(),
|
||||
|
@ -88,12 +92,16 @@ def test_ipythonviewer() -> None:
|
|||
for viewer in ImageShow._viewers:
|
||||
if isinstance(viewer, ImageShow.IPythonViewer):
|
||||
test_viewer = viewer
|
||||
branch_coverage2["4"] = True
|
||||
break
|
||||
else:
|
||||
branch_coverage2["5"] = True
|
||||
pytest.fail()
|
||||
|
||||
im = hopper()
|
||||
assert test_viewer.show(im) == 1
|
||||
|
||||
|
||||
def test_viewer_exceptions() -> None:
|
||||
class TestViewerException(ImageShow.Viewer):
|
||||
pass
|
||||
|
|
50
conftest.py
50
conftest.py
|
@ -1,7 +1,10 @@
|
|||
from __future__ import annotations
|
||||
import pytest
|
||||
import sys
|
||||
|
||||
pytest_plugins = ["Tests.helper"]
|
||||
test_name = None
|
||||
|
||||
|
||||
branch_coverage1 = {
|
||||
"1": False,
|
||||
|
@ -9,15 +12,50 @@ branch_coverage1 = {
|
|||
"3": False,
|
||||
}
|
||||
|
||||
def calculate_coverage():
|
||||
num_branches = len(branch_coverage1)
|
||||
covered_branches = sum(value is True for value in branch_coverage1.values())
|
||||
branch_coverage2 = {
|
||||
"1": False,
|
||||
"2": False,
|
||||
"3": False,
|
||||
"4": False,
|
||||
"5": False,
|
||||
}
|
||||
|
||||
|
||||
def calculate_coverage(test_name):
|
||||
coverage_data = {
|
||||
"test_image_rotate": branch_coverage1,
|
||||
"test_imageshow": branch_coverage2,
|
||||
}
|
||||
|
||||
if test_name not in coverage_data:
|
||||
print(f"No coverage data for test {test_name}")
|
||||
return
|
||||
|
||||
num_branches = len(coverage_data[test_name])
|
||||
covered_branches = sum(value is True for value in coverage_data[test_name].values())
|
||||
|
||||
coverage = (covered_branches/num_branches) * 100
|
||||
|
||||
print(f"\nbranches for {test_name}:", num_branches, "\n")
|
||||
print(f"\nbranches covered for {test_name}:", covered_branches, "\n")
|
||||
return coverage
|
||||
|
||||
|
||||
|
||||
@pytest.hookimpl(tryfirst=True)
|
||||
def pytest_runtest_protocol(item, nextitem):
|
||||
global test_name
|
||||
|
||||
last_arg = sys.argv[-1]
|
||||
|
||||
test_name = last_arg.split('/')[-1].split('::')[-1]
|
||||
|
||||
test_name = test_name.rstrip('.py')
|
||||
|
||||
return None
|
||||
|
||||
@pytest.hookimpl(tryfirst=True)
|
||||
def pytest_sessionfinish(session, exitstatus):
|
||||
coverage = calculate_coverage()
|
||||
print("\nBRANCH COVERAGE:", coverage, "%\n")
|
||||
global test_name
|
||||
|
||||
coverage = calculate_coverage(test_name)
|
||||
print("\nBRANCH COVERAGE for", test_name, ":", coverage, "%\n")
|
Loading…
Reference in New Issue
Block a user