Skip to content

Commit 5d69b1e

Browse files
committed
Fix check_figures_equal for tests that use its fixtures.
1 parent 3d9b7dc commit 5d69b1e

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

lib/matplotlib/testing/decorators.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -388,9 +388,17 @@ def decorator(func):
388388
import pytest
389389

390390
_, result_dir = _image_directories(func)
391+
old_sig = inspect.signature(func)
391392

392393
@pytest.mark.parametrize("ext", extensions)
393-
def wrapper(*args, ext, request, **kwargs):
394+
def wrapper(*args, **kwargs):
395+
ext = kwargs['ext']
396+
if 'ext' not in old_sig.parameters:
397+
kwargs.pop('ext')
398+
request = kwargs['request']
399+
if 'request' not in old_sig.parameters:
400+
kwargs.pop('request')
401+
394402
file_name = "".join(c for c in request.node.name
395403
if c in ALLOWED_CHARS)
396404
try:
@@ -408,16 +416,16 @@ def wrapper(*args, ext, request, **kwargs):
408416
plt.close(fig_test)
409417
plt.close(fig_ref)
410418

411-
sig = inspect.signature(func)
412-
new_sig = sig.replace(
413-
parameters=([param
414-
for param in sig.parameters.values()
415-
if param.name not in {"fig_test", "fig_ref"}]
416-
+ [
417-
inspect.Parameter("ext", KEYWORD_ONLY),
418-
inspect.Parameter("request", KEYWORD_ONLY),
419-
])
420-
)
419+
parameters = [
420+
param
421+
for param in old_sig.parameters.values()
422+
if param.name not in {"fig_test", "fig_ref"}
423+
]
424+
if 'ext' not in old_sig.parameters:
425+
parameters += [inspect.Parameter("ext", KEYWORD_ONLY)]
426+
if 'request' not in old_sig.parameters:
427+
parameters += [inspect.Parameter("request", KEYWORD_ONLY)]
428+
new_sig = old_sig.replace(parameters=parameters)
421429
wrapper.__signature__ = new_sig
422430

423431
# reach a bit into pytest internals to hoist the marks from

0 commit comments

Comments
 (0)