88import sys
99import unittest
1010import warnings
11+ import string
1112
1213import matplotlib as mpl
1314import matplotlib .style
1718from matplotlib import ft2font
1819from matplotlib import pyplot as plt
1920from matplotlib import ticker
20- from . import is_called_from_pytest
21+
2122from .compare import comparable_formats , compare_images , make_test_filename
2223from .exceptions import ImageComparisonFailure
2324
@@ -382,22 +383,23 @@ def test_plot(fig_test, fig_ref):
382383 fig_test.subplots().plot([1, 3, 5])
383384 fig_ref.subplots().plot([0, 1, 2], [1, 3, 5])
384385 """
385- POSITIONAL_OR_KEYWORD = inspect .Parameter .POSITIONAL_OR_KEYWORD
386+ ALLOWED_CHARS = set (string .digits + string .ascii_letters + '_-[]()' )
387+ KEYWORD_ONLY = inspect .Parameter .KEYWORD_ONLY
386388 def decorator (func ):
387389 import pytest
388390
389391 _ , result_dir = _image_directories (func )
390392
391393 @pytest .mark .parametrize ("ext" , extensions )
392- def wrapper (* args , ext , ** kwargs ):
394+ def wrapper (* args , ext , request , ** kwargs ):
395+ file_name = "" .join (c for c in request .node .name
396+ if c in ALLOWED_CHARS )
393397 try :
394398 fig_test = plt .figure ("test" )
395399 fig_ref = plt .figure ("reference" )
396400 func (* args , fig_test = fig_test , fig_ref = fig_ref , ** kwargs )
397- test_image_path = result_dir / (func .__name__ + "." + ext )
398- ref_image_path = result_dir / (
399- func .__name__ + "-expected." + ext
400- )
401+ test_image_path = result_dir / (file_name + "." + ext )
402+ ref_image_path = result_dir / (file_name + "-expected." + ext )
401403 fig_test .savefig (test_image_path )
402404 fig_ref .savefig (ref_image_path )
403405 _raise_on_image_difference (
@@ -412,7 +414,10 @@ def wrapper(*args, ext, **kwargs):
412414 parameters = ([param
413415 for param in sig .parameters .values ()
414416 if param .name not in {"fig_test" , "fig_ref" }]
415- + [inspect .Parameter ("ext" , POSITIONAL_OR_KEYWORD )])
417+ + [
418+ inspect .Parameter ("ext" , KEYWORD_ONLY ),
419+ inspect .Parameter ("request" , KEYWORD_ONLY ),
420+ ])
416421 )
417422 wrapper .__signature__ = new_sig
418423
0 commit comments