Skip to content

Commit d3cab24

Browse files
committed
Ensure that pytest can be used with check_figures_equal
Same logic that was implemented in matplotlib/matplotlib#16800
1 parent d2ad3f5 commit d3cab24

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

Diff for: pygmt/helpers/decorators.py

+12-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
etc.
77
"""
88
import functools
9+
import inspect
910
import os
1011
import textwrap
1112

@@ -446,14 +447,15 @@ def check_figures_equal(*, result_dir="result_images", tol=0.0):
446447
def decorator(func):
447448

448449
os.makedirs(result_dir, exist_ok=True)
450+
old_sig = inspect.signature(func)
449451

450-
def wrapper():
452+
def wrapper(*args, **kwargs):
451453
try:
452454
from ..figure import Figure # pylint: disable=import-outside-toplevel
453455

454456
fig_ref = Figure()
455457
fig_test = Figure()
456-
func(fig_ref, fig_test)
458+
func(*args, fig_ref=fig_ref, fig_test=fig_test, **kwargs)
457459
ref_image_path = os.path.join(
458460
result_dir, func.__name__ + "-expected.png"
459461
)
@@ -483,6 +485,14 @@ def wrapper():
483485
del fig_ref
484486
del fig_test
485487

488+
parameters = [
489+
param
490+
for param in old_sig.parameters.values()
491+
if param.name not in {"fig_test", "fig_ref"}
492+
]
493+
new_sig = old_sig.replace(parameters=parameters)
494+
wrapper.__signature__ = new_sig
495+
486496
return wrapper
487497

488498
return decorator

0 commit comments

Comments
 (0)