@@ -389,9 +389,17 @@ def decorator(func):
389
389
import pytest
390
390
391
391
_ , result_dir = _image_directories (func )
392
+ old_sig = inspect .signature (func )
392
393
393
394
@pytest .mark .parametrize ("ext" , extensions )
394
- def wrapper (* args , ext , request , ** kwargs ):
395
+ def wrapper (* args , ** kwargs ):
396
+ ext = kwargs ['ext' ]
397
+ if 'ext' not in old_sig .parameters :
398
+ kwargs .pop ('ext' )
399
+ request = kwargs ['request' ]
400
+ if 'request' not in old_sig .parameters :
401
+ kwargs .pop ('request' )
402
+
395
403
file_name = "" .join (c for c in request .node .name
396
404
if c in ALLOWED_CHARS )
397
405
try :
@@ -409,16 +417,16 @@ def wrapper(*args, ext, request, **kwargs):
409
417
plt .close (fig_test )
410
418
plt .close (fig_ref )
411
419
412
- sig = inspect . signature ( func )
413
- new_sig = sig . replace (
414
- parameters = ([ param
415
- for param in sig . parameters . values ()
416
- if param . name not in { "fig_test" , "fig_ref" } ]
417
- + [
418
- inspect .Parameter ("ext" , KEYWORD_ONLY ),
419
- inspect . Parameter ( "request" , KEYWORD_ONLY ),
420
- ])
421
- )
420
+ parameters = [
421
+ param
422
+ for param in old_sig . parameters . values ()
423
+ if param . name not in { "fig_test" , "fig_ref" }
424
+ ]
425
+ if 'ext' not in old_sig . parameters :
426
+ parameters += [ inspect .Parameter ("ext" , KEYWORD_ONLY )]
427
+ if 'request' not in old_sig . parameters :
428
+ parameters += [ inspect . Parameter ( "request" , KEYWORD_ONLY )]
429
+ new_sig = old_sig . replace ( parameters = parameters )
422
430
wrapper .__signature__ = new_sig
423
431
424
432
# reach a bit into pytest internals to hoist the marks from
0 commit comments