@@ -645,14 +645,14 @@ def __init__(self, metafunc):
645
645
self ._globalid_args = set ()
646
646
self ._globalparam = NOTSET
647
647
self ._arg2scopenum = {} # used for sorting parametrized resources
648
- self .keywords = {}
648
+ self .marks = []
649
649
self .indices = {}
650
650
651
651
def copy (self , metafunc ):
652
652
cs = CallSpec2 (self .metafunc )
653
653
cs .funcargs .update (self .funcargs )
654
654
cs .params .update (self .params )
655
- cs .keywords . update (self .keywords )
655
+ cs .marks . extend (self .marks )
656
656
cs .indices .update (self .indices )
657
657
cs ._arg2scopenum .update (self ._arg2scopenum )
658
658
cs ._idlist = list (self ._idlist )
@@ -677,16 +677,16 @@ def getparam(self, name):
677
677
def id (self ):
678
678
return "-" .join (map (str , filter (None , self ._idlist )))
679
679
680
- def setmulti (self , valtypes , argnames , valset , id , keywords , scopenum ,
681
- param_index ):
680
+ def setmulti2 (self , valtypes , argnames , valset , id , marks , scopenum ,
681
+ param_index ):
682
682
for arg , val in zip (argnames , valset ):
683
683
self ._checkargnotcontained (arg )
684
684
valtype_for_arg = valtypes [arg ]
685
685
getattr (self , valtype_for_arg )[arg ] = val
686
686
self .indices [arg ] = param_index
687
687
self ._arg2scopenum [arg ] = scopenum
688
688
self ._idlist .append (id )
689
- self .keywords . update ( keywords )
689
+ self .marks . extend ( marks )
690
690
691
691
def setall (self , funcargs , id , param ):
692
692
for x in funcargs :
@@ -842,8 +842,8 @@ def parametrize(self, argnames, argvalues, indirect=False, ids=None,
842
842
'equal to the number of names ({1})' .format (
843
843
param .values , argnames ))
844
844
newcallspec = callspec .copy (self )
845
- newcallspec .setmulti (valtypes , argnames , param .values , a_id ,
846
- param .deprecated_arg_dict , scopenum , param_index )
845
+ newcallspec .setmulti2 (valtypes , argnames , param .values , a_id ,
846
+ param .marks , scopenum , param_index )
847
847
newcalls .append (newcallspec )
848
848
self ._calls = newcalls
849
849
@@ -1115,7 +1115,13 @@ def __init__(self, name, parent, args=None, config=None,
1115
1115
self .keywords .update (self .obj .__dict__ )
1116
1116
if callspec :
1117
1117
self .callspec = callspec
1118
- self .keywords .update (callspec .keywords )
1118
+ # this is total hostile and a mess
1119
+ # keywords are broken by design by now
1120
+ # this will be redeemed later
1121
+ for mark in callspec .marks :
1122
+ # feel free to cry, this was broken for years before
1123
+ # and keywords cant fix it per design
1124
+ self .keywords [mark .name ] = mark
1119
1125
if keywords :
1120
1126
self .keywords .update (keywords )
1121
1127
0 commit comments