예제 #1
0
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)
예제 #2
0
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]
예제 #3
0
 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([])
예제 #4
0
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
예제 #5
0
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()
예제 #6
0
 def test_can_parse_strings(self):
     parser = Parser()
     parser.parse('')
예제 #7
0
 def test_can_parse_filelikes(self):
     parser = Parser()
     parser.parse(StringIO())