@@ -156,7 +156,13 @@ def select_by_labels(items, config):
156156 config .option .allure_stories ,
157157 config .option .allure_ids ,
158158 config .option .allure_severities )
159- return filter (lambda item : arg_labels & set (allure_labels (item )) if arg_labels else True , items )
159+ if arg_labels :
160+ selected , deselected = [], []
161+ for item in items :
162+ selected .append (item ) if arg_labels & set (allure_labels (item )) else deselected .append (item )
163+ return selected , deselected
164+ else :
165+ return items , []
160166
161167
162168def select_by_testcase (items ):
@@ -177,11 +183,19 @@ def is_planed(item):
177183 return True
178184 return False
179185
180- return [item for item in items if is_planed (item )]
186+ selected , deselected = [], []
187+ for item in items :
188+ selected .append (item ) if is_planed (item ) else deselected .append (item )
189+ return selected , deselected
181190 else :
182- return items
191+ return items , []
183192
184193
185194def pytest_collection_modifyitems (items , config ):
186- items [:] = select_by_testcase (items )
187- items [:] = select_by_labels (items , config )
195+ selected , deselected_by_testcase = select_by_testcase (items )
196+ selected , deselected_by_labels = select_by_labels (selected , config )
197+
198+ items [:] = selected
199+
200+ if deselected_by_testcase or deselected_by_labels :
201+ config .hook .pytest_deselected (items = [* deselected_by_testcase , * deselected_by_labels ])
0 commit comments