示例#1
0
文件: parser.py 项目: Dudesons/loktar
def parse_statuses(statuses):
    """Parse a list of statuses

    Some packages can be simulteneouly in green builds and red builds, if they were built with
    more than one different build type.

    Args:
        statuses (iterator of github.CommitStatus.CommitStatus): List of commit statuses

    Returns:
        a tuple of sets: green_builds, red_builds
    """
    green_builds = set()
    red_builds = set()
    for status in statuses:
        context = status.raw_data['context']
        try:
            package, type_build = context_to_build_params(context)
        except ValueError as exc:
            logger.warning(str(exc))
            continue
        if status.state == 'success':
            green_builds |= {(package, type_build)}
        else:
            red_builds |= {(package, type_build)}

    # If a tuple (package, type_build) is green and also appears in red, remove it from red
    # (since red are also pending)
    red_builds -= green_builds

    green_builds = {package for package, _ in green_builds}
    red_builds = {package for package, _ in red_builds}

    return green_builds, red_builds
示例#2
0
def test_context_to_build_fail():
    with pytest.raises(ValueError):
        context_to_build_params('Some context')
示例#3
0
def test_context_to_build_params_reverse(package, type_build):
    context = build_params_to_context(package, type_build)
    assert context_to_build_params(context) == (package, type_build)