def parse_line(self, text): """Parse a line into whatever TAP category it belongs.""" match = self.ok.match(text) if match: return self._parse_result(True, match) match = self.not_ok.match(text) if match: return self._parse_result(False, match) if self.diagnostic.match(text): return Diagnostic(text) match = self.plan.match(text) if match: return self._parse_plan(match) match = self.bail.match(text) if match: return Bail(match.group('reason')) match = self.version.match(text) if match: return self._parse_version(match) return Unknown()
def _parse_plan(self, match): """Parse a matching plan line.""" expected_tests = int(match.group('expected')) directive = Directive(match.group('directive')) # Only SKIP directives are allowed in the plan. if directive.text and not directive.skip: return Unknown() return Plan(expected_tests, directive)