Exemple #1
0
def test_push_child_raises(responses):
    rev = "a" * 40

    # Try and mozilla-unified are not supported.
    for branch in ("try", "mozilla-unified"):
        push = Push(rev, branch=branch)
        with pytest.raises(ChildPushNotFound):
            push.child

    # A push with no children raises.
    push = Push(rev, branch="integration/autoland")
    push._id = 100
    url = HgRev.JSON_PUSHES_TEMPLATE.format(
        branch=push.branch,
        push_id_start=push.id,
        push_id_end=push.id + 1,
    )
    responses.add(
        responses.GET,
        url,
        json={
            "lastpushid": push.id,
            "pushes": {}
        },
        status=200,
    )

    with pytest.raises(ChildPushNotFound):
        push.child
Exemple #2
0
def test_push_parent_on_autoland(responses):
    ctx = {
        "branch": "integration/autoland",
        "push_id_start": "121",
        "push_id_end": "122",
    }
    responses.add(
        responses.GET,
        HgRev.JSON_PUSHES_TEMPLATE.format(**ctx),
        json={
            "pushes": {
                "122": {
                    "changesets": [{
                        "node": "b" * 40
                    }],
                    "date": 1213174092,
                    "user": "******",
                },
            },
        },
        status=200,
    )

    p1 = Push("a" * 40)
    p1._id = 123
    parent = p1.parent

    assert parent.id == 122
    assert parent.rev == "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
Exemple #3
0
    def inner(rev=None,
              branch="integration/autoland",
              json=None,
              automationrelevance=None):
        nonlocal prev_push, push_id

        if not rev:
            rev = "rev{}".format(push_id)

        if json is None:
            json = {
                "node": rev,
            }

        responses.add(
            responses.GET,
            HGMO.JSON_TEMPLATE.format(branch=branch, rev=rev),
            json=json,
            status=200,
        )

        if automationrelevance is not None:
            responses.add(
                responses.GET,
                HGMO.AUTOMATION_RELEVANCE_TEMPLATE.format(branch=branch,
                                                          rev=rev),
                json=automationrelevance,
                status=200,
            )

        push = Push(rev, branch)
        push._id = push_id
        push.backedoutby = None
        push.tasks = []

        if prev_push:
            push.parent = prev_push
            prev_push.child = push

        # Update global state
        prev_push = push
        push_id += 1
        return push
Exemple #4
0
    def inner(rev=None, branch="integration/autoland"):
        nonlocal prev_push, push_id

        if not rev:
            rev = "rev{}".format(push_id)

        def automationrelevance_callback(request):
            *repo, _, revision = request.path_url[1:].split("/")
            body = {
                "changesets": [{
                    "node": rev,
                    "bugs": [{
                        "no": bug_id
                    } for bug_id in push.bugs],
                    "backsoutnodes": [],
                    "pushhead": push.rev,
                } for rev in push._revs]
            }
            return (200, {}, json.dumps(body))

        responses.add_callback(
            responses.GET,
            HgRev.AUTOMATION_RELEVANCE_TEMPLATE.format(branch=branch, rev=rev),
            callback=automationrelevance_callback,
            content_type="application/json",
        )

        responses.add(
            responses.GET,
            re.compile(
                "https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/.*/artifacts"
            ),
            json={"artifacts": []},
            status=200,
        )

        url = re.escape(HgRev.JSON_PUSHES_TEMPLATE_BASE.format(branch=branch))
        responses.add(
            responses.GET,
            re.compile(url + ".*"),
            json={"pushes": {}},
            status=200,
        )

        push = Push(rev, branch)
        push._id = push_id
        push_rev_to_id[rev] = push_id
        push.backedoutby = None
        push.bugs = {push_id}
        push.tasks = []
        push._revs = [push.rev]
        push.is_manifest_level = False

        if prev_push:
            push.parent = prev_push
            if branch != "try":
                prev_push.child = push

        # Update global state
        prev_push = push
        push_id += 1
        return push