예제 #1
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
예제 #2
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