@@ -388,9 +388,17 @@ def decorator(func):
388
388
import pytest
389
389
390
390
_ , result_dir = _image_directories (func )
391
+ old_sig = inspect .signature (func )
391
392
392
393
@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
+
394
402
file_name = "" .join (c for c in request .node .name
395
403
if c in ALLOWED_CHARS )
396
404
try :
@@ -408,16 +416,16 @@ def wrapper(*args, ext, request, **kwargs):
408
416
plt .close (fig_test )
409
417
plt .close (fig_ref )
410
418
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 )
421
429
wrapper .__signature__ = new_sig
422
430
423
431
# reach a bit into pytest internals to hoist the marks from
0 commit comments