Skip to content

Commit 2a66ff8

Browse files
SidharthBansaltacaswell
authored andcommitted
ENH: add pytest collector to only select image tests to run
1 parent c1bdb13 commit 2a66ff8

File tree

5 files changed

+33
-3
lines changed

5 files changed

+33
-3
lines changed

lib/matplotlib/testing/conftest.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ def pytest_configure(config):
1515
("markers", "backend: Set alternate Matplotlib backend temporarily."),
1616
("markers", "baseline_images: Compare output against references."),
1717
("markers", "pytz: Tests that require pytz to be installed."),
18+
("markers",
19+
("matplotlib_baseline_image_generation: "
20+
"Flag to generate matplotlib baseline images.")
21+
),
1822
("filterwarnings", "error"),
1923
("filterwarnings",
2024
"ignore:.*The py23 module has been deprecated:DeprecationWarning"),
@@ -96,3 +100,22 @@ def xr():
96100
"""Fixture to import xarray."""
97101
xr = pytest.importorskip('xarray')
98102
return xr
103+
104+
105+
def pytest_addoption(parser):
106+
parser.addoption(
107+
"--matplotlib_baseline_image_generation",
108+
action="store_true",
109+
default=False,
110+
help="run matplotlib baseline image generation tests"
111+
)
112+
113+
114+
def pytest_collection_modifyitems(config, items):
115+
if config.getoption("--matplotlib_baseline_image_generation"):
116+
skip_non_matplotlib_baseline_image_generation_tests = pytest.mark.skip(
117+
reason="No need to run non image generation tests"
118+
)
119+
for item in items:
120+
if "matplotlib_baseline_image_generation" not in item.keywords:
121+
item.add_marker(skip_non_matplotlib_baseline_image_generation_tests)

lib/matplotlib/testing/decorators.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ def decorator(func):
276276
@matplotlib.style.context(style)
277277
@_checked_on_freetype_version(freetype_version)
278278
@functools.wraps(func)
279+
@pytest.mark.matplotlib_baseline_image_generation
279280
def wrapper(*args, extension, request, **kwargs):
280281
__tracebackhide__ = True
281282
if 'extension' in old_sig.parameters:
@@ -317,7 +318,9 @@ def wrapper(*args, extension, request, **kwargs):
317318
f"Test generated {len(figs)} images but there are "
318319
f"{len(our_baseline_images)} baseline images")
319320

320-
generating = bool(os.environ.get("MPLGENERATEBASELINE"))
321+
generating = request.config.getoption(
322+
"--matplotlib_baseline_image_generation"
323+
)
321324

322325
for fig, baseline in zip(figs, our_baseline_images):
323326
if generating:

lib/matplotlib/tests/conftest.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
from matplotlib.testing.conftest import ( # noqa
2-
mpl_test_settings, pytest_configure, pytest_unconfigure, pd, xr)
2+
mpl_test_settings, pytest_configure, pytest_unconfigure, pd, xr,
3+
pytest_collection_modifyitems)

lib/matplotlib/tests/test_agg_filter.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import numpy as np
2-
32
import matplotlib.pyplot as plt
43
from matplotlib.testing.decorators import image_comparison
54

pytest.ini

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,7 @@ minversion = 7.0.0
1010
testpaths = lib
1111
python_files = test_*.py
1212
junit_family = xunit2
13+
14+
15+
markers =
16+
matplotlib_baseline_image_generation: marks tests as matplotlib_baseline_image_generation (deselect with '-m "not matplotlib_baseline_image_generation"')

0 commit comments

Comments
 (0)