示例#1
0
def checkRegistryCoverage(xml_file):
    """
    Given an XML file from <https://www.iana.org/assignments/message-headers/message-headers.xml>,
    See what headers are missing and check those remaining to see what they don't define.
    """
    for header_name in parseHeaderRegistry(xml_file):
        header_mod = HeaderProcessor.find_header_module(header_name)
        if not header_mod:
            sys.stderr.write("- %s registered but can't find module\n" % header_name)
示例#2
0
def checkRegistryCoverage(xml_file):
    """
    Given an XML file from <https://www.iana.org/assignments/message-headers/message-headers.xml>,
    See what headers are missing and check those remaining to see what they don't define.
    """
    for header_name in parseHeaderRegistry(xml_file):
        header_mod = HeaderProcessor.find_header_module(header_name)
        if not header_mod:
            sys.stderr.write("- %s registered but can't find module\n" %
                             header_name)
示例#3
0
def checkHeader(header_cls):
    """
    Given a header class, make sure it's complete. Complain on STDERR if not.
    """

    header_name = getattr(header_cls, 'canonical_name') or header_cls.__name__
    attrs = dir(header_cls)
    checks = [
        ('canonical_name', [str], True),
        ('reference', [str], True),
        ('description', [str], True),
        ('valid_in_requests', [bool], True),
        ('valid_in_responses', [bool], True),
        ('syntax', [str, list_rule], True),
        ('list_header', [bool], True),
        ('deprecated', [bool], False),
    ]
    for (attr_name, attr_types, attr_required) in checks:
        attr_value = getattr(header_cls, attr_name)
        if getattr(header_cls, "no_coverage") and attr_name in ['syntax']:
            continue
        if attr_name in ['syntax'] and attr_value == False:
            continue
        if attr_required and attr_value is None:
            sys.stderr.write("* %s lacks %s\n" % (header_name, attr_name))
        elif True not in [isinstance(attr_value, t) for t in attr_types]:
            sys.stderr.write("* %s %s has wrong type\n" %
                             (header_name, attr_name))

    canonical_name = getattr(header_cls, "canonical_name")
    if canonical_name != header_name:
        sys.stderr.write("* %s has mismatching canonical name %s\n" %
                         (header_name, canonical_name))

    loader = unittest.TestLoader()
    header_mod = HeaderProcessor.find_header_module(header_name)
    tests = loader.loadTestsFromModule(header_mod)
    if tests.countTestCases() == 0 and getattr(header_cls,
                                               "no_coverage") == False:
        sys.stderr.write("* %s doesn't have any tests\n" % header_name)
示例#4
0
def checkHeader(header_cls):
    """
    Given a header class, make sure it's complete. Complain on STDERR if not.
    """

    header_name = getattr(header_cls, 'canonical_name') or header_cls.__name__
    attrs = dir(header_cls)
    checks = [
        ('canonical_name', [str], True),
        ('reference', [str], True),
        ('description', [str], True),
        ('valid_in_requests', [bool], True),
        ('valid_in_responses', [bool], True),
        ('syntax', [str, list_rule], True),
        ('list_header', [bool], True),
        ('deprecated', [bool], False),
    ]
    for (attr_name, attr_types, attr_required) in checks:
        attr_value = getattr(header_cls, attr_name)
        if getattr(header_cls, "no_coverage") and attr_name in ['syntax']:
            continue
        if attr_name in ['syntax'] and attr_value == False:
            continue
        if attr_required and attr_value == None:
            sys.stderr.write("* %s lacks %s\n" % (header_name, attr_name))
        elif True not in [isinstance(attr_value, t) for t in attr_types]:
            sys.stderr.write("* %s %s has wrong type\n" % (header_name, attr_name))

    canonical_name = getattr(header_cls, "canonical_name")
    if canonical_name != header_name:
        sys.stderr.write("* %s has mismatching canonical name %s\n" % (header_name, canonical_name))

    loader = unittest.TestLoader()
    header_mod = HeaderProcessor.find_header_module(header_name)
    tests = loader.loadTestsFromModule(header_mod)
    if tests.countTestCases() == 0 and getattr(header_cls, "no_coverage") == False:
        sys.stderr.write("* %s doesn't have any tests\n" % header_name)