def parse_log_check(input, callbacks): handler = mock.Mock() parser = Parser(handler) try: parser.parse(input.strip()) except ParseError: handler.parse_error() method_calls = [(name, tuple(args), kwargs) for name, args, kwargs in callbacks] handler.method_calls |should| each_be_equal_to(method_calls)
def run_example(input, success): handler = mock.Mock() parser = Parser(handler) try: parser.parse(input.strip()) except ParseError as e: handler.parse_error() if success: raise else: if not success: raise RuntimeError('exception expected') return [[name, list(args), kwargs] for name, args, kwargs in handler.method_calls]
def test_containes_unreachable_transitions(self): reachable_transitions, possible_transitions = Parser.parser_transitions() unreachable_transitions = possible_transitions - reachable_transitions unreachable_transitions = set(t for t in unreachable_transitions) confirmed = set(tuple(t) for t in test_data['unreachable transitions']) non_confirmed = unreachable_transitions - confirmed print(non_confirmed) sorted(non_confirmed) |should| each_be_equal_to([])
def make_examples(): events, states, matchers = Parser.parser_info() skip = set(map(tuple, transitions['skip'])) for state in sorted(states): for matcher in sorted(matchers): event = state, matcher if not event in skip: success = event in events name = 'handle {} in {}'.format(matcher, state) for i, (n, example) in enumerate(make_feature_examples(name, state, matcher)): yield name, n, i, success, example
def main(): print 'callbacks:' for name, n, i, success, example in make_examples(): if n > 1: name = '{} {}'.format(name, i + 1) print print ' {}:'.format(name) print ' success: {}'.format(str(success).lower()) print ' input: |' for line in example.splitlines(): print ' {}'.format(line) print method_calls = run_example(example, success) if method_calls is not None: print ' callbacks:' for c in method_calls: dump = yaml.dump(c, default_flow_style=True).strip() print ' - {}'.format(dump) print print 'unreachable transitions:' Parser.dump_unreachable_transitions()
def test_can_parse_strings(self): parser = Parser() parser.parse('')
def test_can_parse_filelikes(self): parser = Parser() parser.parse(StringIO())