| 1283 | self.defs = defs |
| 1284 | |
| 1285 | def ClassifyTests(self, cases, env): |
| 1286 | sections = [ s for s in self.sections if s.condition.Evaluate(env, self.defs) ] |
| 1287 | all_rules = reduce(list.__add__, [s.rules for s in sections], []) |
| 1288 | unused_rules = set(all_rules) |
| 1289 | result = [] |
| 1290 | for case in cases: |
| 1291 | matches = [ r for r in all_rules if r.Contains(case.path) ] |
| 1292 | outcomes_list = [ r.GetOutcomes(env, self.defs) for r in matches ] |
| 1293 | outcomes = reduce(set.union, outcomes_list, set()) |
| 1294 | unused_rules.difference_update(matches) |
| 1295 | case.outcomes = set(outcomes) or set([PASS]) |
| 1296 | # slow tests may also just pass. |
| 1297 | if SLOW in case.outcomes: |
| 1298 | case.outcomes.add(PASS) |
| 1299 | result.append(case) |
| 1300 | return result, unused_rules |
| 1301 | |
| 1302 | |
| 1303 | class Section(object): |