@@ -155,12 +155,20 @@ def parse_item(
155
155
"""
156
156
# _debug_item(item, showsummary=True)
157
157
kind , _ = _get_item_kind (item )
158
- # Skip plugin generated tests
158
+ # Skip unexpected kind tests
159
159
if kind is None :
160
160
return None , None
161
- (nodeid , parents , fileid , testfunc , parameterized ) = _parse_node_id (
162
- getattr (item , "_replace_nodeid" , item .nodeid ), kind
163
- )
161
+
162
+ if kind == "plugin_node" :
163
+ (nodeid , parents , fileid , testfunc , parameterized ) = _parse_node_id (
164
+ item .nodeid + "::" + item .location [2 ], kind
165
+ )
166
+
167
+ else :
168
+
169
+ (nodeid , parents , fileid , testfunc , parameterized ) = _parse_node_id (
170
+ item .nodeid , kind
171
+ )
164
172
# Note: testfunc does not necessarily match item.function.__name__.
165
173
# This can result from importing a test function from another module.
166
174
@@ -209,7 +217,7 @@ def parse_item(
209
217
210
218
test = TestInfo (
211
219
id = nodeid ,
212
- name = getattr ( item , "_replace_name" , item .name ) ,
220
+ name = item .name ,
213
221
path = TestPath (
214
222
root = testroot ,
215
223
relfile = relfile ,
@@ -394,7 +402,7 @@ def _parse_node_id(
394
402
parents .append (node )
395
403
funcid , funcname , _ = node
396
404
parameterized = testid [len (funcid ) :]
397
- elif kind == "function" :
405
+ elif kind == "function" or kind == "plugin_node" :
398
406
funcname = name
399
407
else :
400
408
raise should_never_reach_here (
@@ -536,12 +544,12 @@ def _get_item_kind(item):
536
544
elif isinstance (item , pytest .Function ):
537
545
# We *could* be more specific, e.g. "method", "subtest".
538
546
return "function" , False
539
- elif isinstance (item , _pytest .nodes .Item ) and isinstance (
540
- item , _pytest . nodes . File
541
- ):
542
- item ._replace_nodeid = item . nodeid + "::" + item . location [ 2 ]
543
- item ._replace_name = item .name [:- 3 ]. replace ( PATH_SEP , "." )
544
- return "function " , False
547
+ elif isinstance (item , _pytest .nodes .Item ) and isinstance (item , _pytest . nodes . File ):
548
+ # item._nodeid = item.nodeid + "::" + item.location[2]
549
+ item . name = item . name . replace ( PATH_SEP , "." )
550
+ if item .name [ - 3 :] == ".py" :
551
+ item .name = item .name [:- 3 ]
552
+ return "plugin_node " , False
545
553
else :
546
554
return None , False
547
555
0 commit comments