tests/misc.py

Sat, 25 May 2019 09:41:33 +0200

author
Teemu Piippo <teemu@hecknology.net>
date
Sat, 25 May 2019 09:41:33 +0200
changeset 47
4da025d0b283
parent 38
66c9591b733d
child 48
38b0919c1934
permissions
-rw-r--r--

added work on header check

from testsuite import error, warning
import linetypes

def colours_test(model):
    ''' Checks that all colours used in the part model are valid. '''
    yield from (
        warning(element, 'bad-colour', colour_index = element.colour.index)
        for element in model.body
        if hasattr(element, 'colour') and not element.colour.is_valid
    ) 

def syntax_errors(model):
    yield from (
        error(element, 'syntax-error', reason = element.reason)
        for element in model.body
        if isinstance(element, linetypes.Error)
    )

def bad_header(model):
    import header
    if isinstance(model.header, header.BadHeader):
        yield error(
            model.body[model.header.index],
            'bad-header',
            reason = model.header.reason,
        )

manifest = {
    'tests': {
        'colour-validity': colours_test,
        'syntax-errors': syntax_errors,
        'header-validity': bad_header,
    },
    'messages': {
        'bad-colour': lambda colour_index: str.format(
            'invalid colour {}',
            colour_index,
        ),
        'syntax-error': lambda reason: str.format(
            'syntax error: {}',
            reason,
        ),
        'bad-header': lambda reason: str.format(
            'bad header: {}',
            reason,
        ),
    },
}

mercurial