@@ -48,6 +48,9 @@ class BaseFilter:
4848 def map (self , f ):
4949 raise NotImplementedError
5050
51+ def filter_test (self , test ) -> bool :
52+ raise NotImplementedError
53+
5154 def filter (self , test , suite , case ) -> bool :
5255 raise NotImplementedError
5356
@@ -169,6 +172,9 @@ class Or(MetaFilter):
169172
170173 operator_str = "|"
171174
175+ def filter_test (self , test ):
176+ return any (f .filter_test (test ) for f in self .filters )
177+
172178 def composed_filter (self , test , suite , case ):
173179 return any (f .filter (test , suite , case ) for f in self .filters )
174180
@@ -180,6 +186,9 @@ class And(MetaFilter):
180186
181187 operator_str = "&"
182188
189+ def filter_test (self , test ):
190+ return all (f .filter_test (test ) for f in self .filters )
191+
183192 def composed_filter (self , test , suite , case ):
184193 return all (f .filter (test , suite , case ) for f in self .filters )
185194
@@ -204,6 +213,9 @@ def map(self, f):
204213 self .filter_obj = f (self .filter_obj )
205214 return self
206215
216+ def filter_test (self , test ):
217+ return not self .filter_obj .filter_test (test )
218+
207219 def filter (self , test , suite , case ):
208220 return not self .filter_obj .filter (test , suite , case )
209221
0 commit comments