mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Add a script to upstream WPT changes via a GitHub Action
This is a modified version of the webhook found at servo/upstream_wpt_webhook and deployed via SaltStack. It is updated to use modern Python and to assume that GitHub Actions will fetch the appropriate source code locally before the script is run. Fixes #29206. Fixes #23798. Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
c165536188
commit
659597281b
34 changed files with 4998 additions and 0 deletions
18
.github/workflows/test-upstream-wpt-changes.yml
vendored
Normal file
18
.github/workflows/test-upstream-wpt-changes.yml
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
name: Test changes to upstream-wpt-changes
|
||||
on:
|
||||
pull_request:
|
||||
branches: ["**"]
|
||||
paths: ["etc/ci/upstream-wpt-changes/**"]
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Test
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python3 -m pip install --upgrade -r etc/ci/upstream-wpt-changes/requirements-dev.txt
|
||||
- name: Running tests
|
||||
run: |
|
||||
python3 etc/ci/upstream-wpt-changes/test.py
|
34
.github/workflows/upstream-wpt-changes.yml
vendored
Normal file
34
.github/workflows/upstream-wpt-changes.yml
vendored
Normal file
|
@ -0,0 +1,34 @@
|
|||
# Disabled until the previous bot is turned off.
|
||||
#name: Upstream Web Platform Test changes
|
||||
#on:
|
||||
# pull_request:
|
||||
# types: ['opened', 'synchronize', 'reopened', 'edited', 'closed']
|
||||
#
|
||||
#jobs:
|
||||
# upstream:
|
||||
# runs-on: ubuntu-latest
|
||||
# steps:
|
||||
# - name: Calculate PR fetch depth
|
||||
# run: echo "PR_FETCH_DEPTH=$(( ${{ github.event.pull_request.commits }} + 1 ))" >> "${GITHUB_ENV}"
|
||||
# - name: Check out shallow servo PR
|
||||
# run: |
|
||||
# mkdir servo
|
||||
# cd servo
|
||||
# git init -b main
|
||||
# git remote add origin ${{ github.event.repository.clone_url}}
|
||||
# git fetch origin pull/${{ github.event.pull_request.number}}/head:pr --depth ${{ env.PR_FETCH_DEPTH }}
|
||||
# git checkout pr
|
||||
# - name: Check out wpt
|
||||
# uses: actions/checkout@v3
|
||||
# with:
|
||||
# path: wpt
|
||||
# repository: 'web-platform-tests/wpt'
|
||||
# token: ${{ secrets.WPT_UPSTREAM_TOKEN }}
|
||||
# - name: Install requirements
|
||||
# run: pip install -r servo/etc/ci/upstream-wpt-changes/requirements.txt
|
||||
# - name: Process pull request
|
||||
# run: servo/etc/ci/upstream-wpt-changes/upstream-wpt-changes.py
|
||||
# env:
|
||||
# GITHUB_CONTEXT: ${{ toJson(github) }}
|
||||
# GITHUB_TOKEN: ${{ secrets.WPT_UPSTREAM_TOKEN }}
|
||||
#
|
0
etc/ci/upstream-wpt-changes/README
Normal file
0
etc/ci/upstream-wpt-changes/README
Normal file
4
etc/ci/upstream-wpt-changes/requirements-dev.txt
Normal file
4
etc/ci/upstream-wpt-changes/requirements-dev.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
-r requirements.txt
|
||||
|
||||
flask
|
||||
types-requests
|
1
etc/ci/upstream-wpt-changes/requirements.txt
Normal file
1
etc/ci/upstream-wpt-changes/requirements.txt
Normal file
|
@ -0,0 +1 @@
|
|||
requests
|
621
etc/ci/upstream-wpt-changes/test.py
Normal file
621
etc/ci/upstream-wpt-changes/test.py
Normal file
|
@ -0,0 +1,621 @@
|
|||
# Copyright 2023 The Servo Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
# pylint: disable=broad-except
|
||||
# pylint: disable=dangerous-default-value
|
||||
# pylint: disable=global-statement
|
||||
# pylint: disable=line-too-long
|
||||
# pylint: disable=missing-docstring
|
||||
# pylint: disable=protected-access
|
||||
|
||||
# This allows using types that are defined later in the file.
|
||||
from __future__ import annotations
|
||||
|
||||
import dataclasses
|
||||
import json
|
||||
import locale
|
||||
import logging
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import threading
|
||||
import time
|
||||
import unittest
|
||||
|
||||
from functools import partial
|
||||
from typing import Any, Optional, Tuple
|
||||
from wsgiref.simple_server import WSGIRequestHandler, make_server
|
||||
|
||||
import flask
|
||||
import flask.cli
|
||||
import requests
|
||||
from wptupstreamer import SyncRun, WPTSync
|
||||
from wptupstreamer.step import CreateOrUpdateBranchForPRStep
|
||||
|
||||
TESTS_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "tests")
|
||||
SYNC: Optional[WPTSync] = None
|
||||
TMP_DIR: Optional[str] = None
|
||||
PORT = 9000
|
||||
|
||||
if "-v" in sys.argv or "--verbose" in sys.argv:
|
||||
logging.getLogger().level = logging.DEBUG
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class MockPullRequest():
|
||||
head: str
|
||||
number: int
|
||||
state: str = "open"
|
||||
|
||||
|
||||
class MockGitHubAPIServer():
|
||||
def __init__(self, port: int):
|
||||
self.port = port
|
||||
self.disable_logging()
|
||||
self.app = flask.Flask(__name__)
|
||||
self.pulls: list[MockPullRequest] = []
|
||||
|
||||
class NoLoggingHandler(WSGIRequestHandler):
|
||||
def log_message(self, *args):
|
||||
pass
|
||||
if logging.getLogger().level == logging.DEBUG:
|
||||
handler = WSGIRequestHandler
|
||||
else:
|
||||
handler = NoLoggingHandler
|
||||
|
||||
self.server = make_server('localhost', self.port, self.app, handler_class=handler)
|
||||
self.start_server_thread()
|
||||
|
||||
def disable_logging(self):
|
||||
flask.cli.show_server_banner = lambda *args: None
|
||||
logging.getLogger("werkzeug").disabled = True
|
||||
logging.getLogger('werkzeug').setLevel(logging.CRITICAL)
|
||||
|
||||
def start(self):
|
||||
self.thread.start()
|
||||
|
||||
# Wait for the server to be started.
|
||||
while True:
|
||||
try:
|
||||
response = requests.get(f'http://localhost:{self.port}/ping', timeout=1)
|
||||
assert response.status_code == 200
|
||||
assert response.text == 'pong'
|
||||
break
|
||||
except Exception:
|
||||
time.sleep(0.1)
|
||||
|
||||
def reset_server_state_with_pull_requests(self, pulls: list[MockPullRequest]):
|
||||
response = requests.get(
|
||||
f'http://localhost:{self.port}/reset-mock-github',
|
||||
json=[dataclasses.asdict(pull_request) for pull_request in pulls],
|
||||
timeout=1
|
||||
)
|
||||
assert response.status_code == 200
|
||||
assert response.text == '👍'
|
||||
|
||||
def shutdown(self):
|
||||
self.server.shutdown()
|
||||
self.thread.join()
|
||||
|
||||
def start_server_thread(self):
|
||||
# pylint: disable=unused-argument
|
||||
self.thread = threading.Thread(target=self.server.serve_forever, daemon=True)
|
||||
self.thread.start()
|
||||
|
||||
@self.app.route("/ping")
|
||||
def ping():
|
||||
return ('pong', 200)
|
||||
|
||||
@self.app.route("/reset-mock-github")
|
||||
def reset_server():
|
||||
self.pulls = [
|
||||
MockPullRequest(pull_request['head'],
|
||||
pull_request['number'],
|
||||
pull_request['state'])
|
||||
for pull_request in flask.request.json]
|
||||
return ('👍', 200)
|
||||
|
||||
@self.app.route("/repos/<org>/<repo>/pulls/<int:number>/merge", methods=['PUT'])
|
||||
def merge_pull_request(org, repo, number):
|
||||
for pull_request in self.pulls:
|
||||
if pull_request.number == number:
|
||||
pull_request.state = 'closed'
|
||||
return ('', 204)
|
||||
return ('', 404)
|
||||
|
||||
@self.app.route("/repos/<org>/<repo>/pulls", methods=['GET'])
|
||||
def get_pulls(org, repo):
|
||||
for pull_request in self.pulls:
|
||||
if pull_request.head == flask.request.args["head"]:
|
||||
return json.dumps([{"number": pull_request.number}])
|
||||
return json.dumps([])
|
||||
|
||||
@self.app.route("/repos/<org>/<repo>/pulls", methods=['POST'])
|
||||
def create_pull_request(org, repo):
|
||||
new_pr_number = len(self.pulls) + 1
|
||||
self.pulls.append(MockPullRequest(
|
||||
flask.request.json["head"],
|
||||
new_pr_number,
|
||||
"open"
|
||||
))
|
||||
return {"number": new_pr_number}
|
||||
|
||||
@self.app.route("/repos/<org>/<repo>/pulls/<int:number>", methods=['PATCH'])
|
||||
def update_pull_request(org, repo, number):
|
||||
for pull_request in self.pulls:
|
||||
if pull_request.number == number:
|
||||
if 'state' in flask.request.json:
|
||||
pull_request.state = flask.request.json['state']
|
||||
return ('', 204)
|
||||
return ('', 404)
|
||||
|
||||
@self.app.route("/repos/<org>/<repo>/issues/<number>/labels", methods=['GET', 'POST'])
|
||||
@self.app.route("/repos/<org>/<repo>/issues/<number>/labels/<label>", methods=['DELETE'])
|
||||
@self.app.route("/repos/<org>/<repo>/issues/<issue>/comments", methods=['GET', 'POST'])
|
||||
def other_requests(*args, **kwargs):
|
||||
return ('', 204)
|
||||
|
||||
|
||||
class TestCleanUpBodyText(unittest.TestCase):
|
||||
"""Tests that SyncRun.clean_up_body_text properly prepares the
|
||||
body text for an upstream pull request."""
|
||||
|
||||
def test_prepare_body(self):
|
||||
text = "Simple body text"
|
||||
self.assertEqual(text, SyncRun.clean_up_body_text(text))
|
||||
self.assertEqual(
|
||||
"With reference: #<!-- nolink -->3",
|
||||
SyncRun.clean_up_body_text("With reference: #3"),
|
||||
)
|
||||
self.assertEqual(
|
||||
"Multi reference: #<!-- nolink -->3 and #<!-- nolink -->1020",
|
||||
SyncRun.clean_up_body_text("Multi reference: #3 and #1020"),
|
||||
)
|
||||
self.assertEqual(
|
||||
"Subject\n\nBody text #<!-- nolink -->1",
|
||||
SyncRun.clean_up_body_text(
|
||||
"Subject\n\nBody text #1\n---<!-- Thank you for contributing"
|
||||
),
|
||||
)
|
||||
self.assertEqual(
|
||||
"Subject\n\nNo dashes",
|
||||
SyncRun.clean_up_body_text(
|
||||
"Subject\n\nNo dashes<!-- Thank you for contributing"
|
||||
),
|
||||
)
|
||||
self.assertEqual(
|
||||
"Subject\n\nNo --- comment",
|
||||
SyncRun.clean_up_body_text(
|
||||
"Subject\n\nNo --- comment\n---Other stuff that"
|
||||
),
|
||||
)
|
||||
self.assertEqual(
|
||||
"Subject\n\n#<!-- nolink -->3 servo#<!-- nolink -->3 servo/servo#3",
|
||||
SyncRun.clean_up_body_text(
|
||||
"Subject\n\n#3 servo#3 servo/servo#3",
|
||||
),
|
||||
"Only relative and bare issue reference links should be escaped."
|
||||
)
|
||||
|
||||
|
||||
class TestApplyCommitsToWPT(unittest.TestCase):
|
||||
"""Tests that commits are properly applied to WPT by
|
||||
CreateOrUpdateBranchForPRStep._create_or_update_branch_for_pr."""
|
||||
|
||||
def run_test(self, pr_number: int, commit_data: dict):
|
||||
def make_commit(data):
|
||||
with open(os.path.join(TESTS_DIR, data[2]), encoding="utf-8") as file:
|
||||
return {"author": data[0], "message": data[1], "diff": file.read()}
|
||||
|
||||
commits = [make_commit(data) for data in commit_data]
|
||||
|
||||
assert SYNC is not None
|
||||
pull_request = SYNC.servo.get_pull_request(pr_number)
|
||||
step = CreateOrUpdateBranchForPRStep({"number": pr_number}, pull_request)
|
||||
|
||||
def get_applied_commits(
|
||||
num_commits: int, applied_commits: list[Tuple[str, str]]
|
||||
):
|
||||
assert SYNC is not None
|
||||
repo = SYNC.local_wpt_repo
|
||||
log = ["log", "--oneline", f"-{num_commits}"]
|
||||
applied_commits += list(
|
||||
zip(
|
||||
repo.run(*log, "--format=%aN <%ae>").splitlines(),
|
||||
repo.run(*log, "--format=%s").splitlines(),
|
||||
)
|
||||
)
|
||||
applied_commits.reverse()
|
||||
|
||||
applied_commits: list[Any] = []
|
||||
callback = partial(get_applied_commits, len(commits), applied_commits)
|
||||
step._create_or_update_branch_for_pr(
|
||||
SyncRun(SYNC, pull_request, None, None), commits, callback
|
||||
)
|
||||
|
||||
expected_commits = [(commit["author"], commit["message"]) for commit in commits]
|
||||
self.assertListEqual(applied_commits, expected_commits)
|
||||
|
||||
def test_simple_commit(self):
|
||||
self.run_test(
|
||||
45, [["test author <test@author>", "test commit message", "18746.diff"]]
|
||||
)
|
||||
|
||||
def test_two_commits(self):
|
||||
self.run_test(
|
||||
100,
|
||||
[
|
||||
["test author <test@author>", "test commit message", "18746.diff"],
|
||||
["another person <two@author>", "a different message", "wpt.diff"],
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
class TestFullSyncRun(unittest.TestCase):
|
||||
server: Optional[MockGitHubAPIServer] = None
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.server = MockGitHubAPIServer(PORT)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
cls.server.shutdown()
|
||||
|
||||
def tearDown(self):
|
||||
# Clean up any old files.
|
||||
first_commit_hash = SYNC.local_servo_repo.run("rev-list", "HEAD").splitlines()[
|
||||
-1
|
||||
]
|
||||
SYNC.local_servo_repo.run("reset", "--hard", first_commit_hash)
|
||||
SYNC.local_servo_repo.run("clean", "-fxd")
|
||||
|
||||
def mock_servo_repository_state(self, diffs: list):
|
||||
assert SYNC is not None
|
||||
|
||||
def make_commit_data(diff):
|
||||
if not isinstance(diff, list):
|
||||
return [diff, "tmp author", "tmp@tmp.com", "tmp commit message"]
|
||||
return diff
|
||||
|
||||
commits = [make_commit_data(diff) for diff in diffs]
|
||||
|
||||
# Apply each commit to the repository.
|
||||
for commit in commits:
|
||||
patch_file, author, email, message = commit
|
||||
SYNC.local_servo_repo.run("apply", os.path.join(TESTS_DIR, patch_file))
|
||||
SYNC.local_servo_repo.run("add", ".")
|
||||
SYNC.local_servo_repo.run(
|
||||
"commit",
|
||||
"-a",
|
||||
"--author",
|
||||
f"{author} <{email}>",
|
||||
"-m",
|
||||
message,
|
||||
env={
|
||||
"GIT_COMMITTER_NAME": author.encode(locale.getpreferredencoding()),
|
||||
"GIT_COMMITTER_EMAIL": email,
|
||||
},
|
||||
)
|
||||
|
||||
def run_test(
|
||||
self, payload_file: str, diffs: list, existing_prs: list[MockPullRequest] = []
|
||||
):
|
||||
with open(os.path.join(TESTS_DIR, payload_file), encoding="utf-8") as file:
|
||||
payload = json.loads(file.read())
|
||||
|
||||
logging.info("Mocking application of PR to servo.")
|
||||
self.mock_servo_repository_state(diffs)
|
||||
|
||||
logging.info("Resetting server state")
|
||||
assert self.server is not None
|
||||
self.server.reset_server_state_with_pull_requests(existing_prs)
|
||||
|
||||
actual_steps = []
|
||||
assert SYNC is not None
|
||||
SYNC.run(payload, step_callback=lambda step: actual_steps.append(step.name))
|
||||
return actual_steps
|
||||
|
||||
def test_opened_upstreamable_pr(self):
|
||||
self.assertListEqual(
|
||||
self.run_test("opened.json", ["18746.diff"]),
|
||||
[
|
||||
"CreateOrUpdateBranchForPRStep:1:servo-wpt-sync/wpt/servo_export_18746",
|
||||
"OpenPRStep:servo-wpt-sync/wpt/servo_export_18746→wpt/wpt#1",
|
||||
"CommentStep:servo/servo#18746:🤖 Opened new upstream WPT pull request "
|
||||
"(wpt/wpt#1) with upstreamable changes.",
|
||||
],
|
||||
)
|
||||
|
||||
def test_opened_upstreamable_pr_with_move_into_wpt(self):
|
||||
self.assertListEqual(
|
||||
self.run_test("opened.json", ["move-into-wpt.diff"]),
|
||||
[
|
||||
"CreateOrUpdateBranchForPRStep:1:servo-wpt-sync/wpt/servo_export_18746",
|
||||
"OpenPRStep:servo-wpt-sync/wpt/servo_export_18746→wpt/wpt#1",
|
||||
"CommentStep:servo/servo#18746:🤖 Opened new upstream WPT pull request "
|
||||
"(wpt/wpt#1) with upstreamable changes.",
|
||||
],
|
||||
)
|
||||
|
||||
def test_opened_upstreamble_pr_with_move_into_wpt_and_non_ascii_author(self):
|
||||
self.assertListEqual(
|
||||
self.run_test(
|
||||
"opened.json",
|
||||
[
|
||||
[
|
||||
"move-into-wpt.diff",
|
||||
"Fernando Jiménez Moreno",
|
||||
"foo@bar.com",
|
||||
"ééééé",
|
||||
]
|
||||
],
|
||||
),
|
||||
[
|
||||
"CreateOrUpdateBranchForPRStep:1:servo-wpt-sync/wpt/servo_export_18746",
|
||||
"OpenPRStep:servo-wpt-sync/wpt/servo_export_18746→wpt/wpt#1",
|
||||
"CommentStep:servo/servo#18746:🤖 Opened new upstream WPT pull request "
|
||||
"(wpt/wpt#1) with upstreamable changes.",
|
||||
],
|
||||
)
|
||||
|
||||
def test_opened_upstreamable_pr_with_move_out_of_wpt(self):
|
||||
self.assertListEqual(
|
||||
self.run_test("opened.json", ["move-out-of-wpt.diff"]),
|
||||
[
|
||||
"CreateOrUpdateBranchForPRStep:1:servo-wpt-sync/wpt/servo_export_18746",
|
||||
"OpenPRStep:servo-wpt-sync/wpt/servo_export_18746→wpt/wpt#1",
|
||||
"CommentStep:servo/servo#18746:🤖 Opened new upstream WPT pull request "
|
||||
"(wpt/wpt#1) with upstreamable changes.",
|
||||
],
|
||||
)
|
||||
|
||||
def test_opened_new_mr_with_no_sync_signal(self):
|
||||
self.assertListEqual(
|
||||
self.run_test("opened-with-no-sync-signal.json", ["18746.diff"]), []
|
||||
)
|
||||
self.assertListEqual(
|
||||
self.run_test("opened-with-no-sync-signal.json", ["non-wpt.diff"]), []
|
||||
)
|
||||
|
||||
def test_opened_upstreamable_pr_not_applying_cleanly_to_upstream(self):
|
||||
self.assertListEqual(
|
||||
self.run_test("opened.json", ["does-not-apply-cleanly.diff"]),
|
||||
[
|
||||
"CreateOrUpdateBranchForPRStep",
|
||||
"CommentStep:servo/servo#18746:🛠 These changes could not be applied "
|
||||
"onto the latest upstream WPT. Servo's copy of the Web Platform Tests may be out of sync.",
|
||||
],
|
||||
)
|
||||
|
||||
def test_open_new_upstreamable_pr_with_preexisting_upstream_pr(self):
|
||||
self.assertListEqual(
|
||||
self.run_test(
|
||||
"opened.json",
|
||||
["18746.diff"],
|
||||
[MockPullRequest("servo-wpt-sync:servo_export_18746", 1)],
|
||||
),
|
||||
[
|
||||
"ChangePRStep:wpt/wpt#1:opened:This is a test:<!-- Please...[95]",
|
||||
"CreateOrUpdateBranchForPRStep:1:servo-wpt-sync/wpt/servo_export_18746",
|
||||
"CommentStep:servo/servo#18746:📝 Transplanted new upstreamable changes to "
|
||||
"existing upstream WPT pull request (wpt/wpt#1).",
|
||||
],
|
||||
)
|
||||
|
||||
def test_open_new_non_upstreamable_pr_with_preexisting_upstream_pr(self):
|
||||
self.assertListEqual(
|
||||
self.run_test(
|
||||
"opened.json",
|
||||
["non-wpt.diff"],
|
||||
[MockPullRequest("servo-wpt-sync:servo_export_18746", 1)],
|
||||
),
|
||||
[
|
||||
"CommentStep:wpt/wpt#1:👋 Downstream pull request (servo/servo#18746) no longer "
|
||||
"contains any upstreamable changes. Closing pull request without merging.",
|
||||
"ChangePRStep:wpt/wpt#1:closed",
|
||||
"RemoveBranchForPRStep:servo-wpt-sync/wpt/servo_export_18746",
|
||||
"CommentStep:servo/servo#18746:🤖 This change no longer contains upstreamable changes "
|
||||
"to WPT; closed existing upstream pull request (wpt/wpt#1).",
|
||||
]
|
||||
)
|
||||
|
||||
def test_open_new_upstreamable_pr_with_preexisting_upstream_pr_not_apply_cleanly_to_upstream(
|
||||
self,
|
||||
):
|
||||
self.assertListEqual(
|
||||
self.run_test(
|
||||
"opened.json",
|
||||
["does-not-apply-cleanly.diff"],
|
||||
[MockPullRequest("servo-wpt-sync:servo_export_18746", 1)],
|
||||
),
|
||||
[
|
||||
"ChangePRStep:wpt/wpt#1:opened:This is a test:<!-- Please...[95]",
|
||||
"CreateOrUpdateBranchForPRStep",
|
||||
"CommentStep:servo/servo#18746:🛠 These changes could not be applied onto the latest "
|
||||
"upstream WPT. Servo's copy of the Web Platform Tests may be out of sync.",
|
||||
"CommentStep:wpt/wpt#1:🛠 Changes from the source pull request (servo/servo#18746) can "
|
||||
"no longer be cleanly applied. Waiting for a new version of these changes downstream.",
|
||||
],
|
||||
)
|
||||
|
||||
def test_closed_pr_no_upstream_pr(self):
|
||||
self.assertListEqual(self.run_test("closed.json", ["18746.diff"]), [])
|
||||
|
||||
def test_closed_pr_with_preexisting_upstream_pr(self):
|
||||
self.assertListEqual(
|
||||
self.run_test(
|
||||
"closed.json",
|
||||
["18746.diff"],
|
||||
[MockPullRequest("servo-wpt-sync:servo_export_18746", 10)],
|
||||
),
|
||||
[
|
||||
"ChangePRStep:wpt/wpt#10:closed",
|
||||
"RemoveBranchForPRStep:servo-wpt-sync/wpt/servo_export_18746"
|
||||
]
|
||||
)
|
||||
|
||||
def test_synchronize_move_new_changes_to_preexisting_upstream_pr(self):
|
||||
self.assertListEqual(
|
||||
self.run_test(
|
||||
"synchronize.json",
|
||||
["18746.diff"],
|
||||
[MockPullRequest("servo-wpt-sync:servo_export_19612", 10)],
|
||||
),
|
||||
[
|
||||
"ChangePRStep:wpt/wpt#10:opened:deny warnings:<!-- Please...[142]",
|
||||
"CreateOrUpdateBranchForPRStep:1:servo-wpt-sync/wpt/servo_export_19612",
|
||||
"CommentStep:servo/servo#19612:📝 Transplanted new upstreamable changes to existing "
|
||||
"upstream WPT pull request (wpt/wpt#10).",
|
||||
]
|
||||
)
|
||||
|
||||
def test_synchronize_close_upstream_pr_after_new_changes_do_not_include_wpt(self):
|
||||
self.assertListEqual(
|
||||
self.run_test(
|
||||
"synchronize.json",
|
||||
["non-wpt.diff"],
|
||||
[MockPullRequest("servo-wpt-sync:servo_export_19612", 11)],
|
||||
),
|
||||
[
|
||||
"CommentStep:wpt/wpt#11:👋 Downstream pull request (servo/servo#19612) no longer contains any "
|
||||
"upstreamable changes. Closing pull request without merging.",
|
||||
"ChangePRStep:wpt/wpt#11:closed",
|
||||
"RemoveBranchForPRStep:servo-wpt-sync/wpt/servo_export_19612",
|
||||
"CommentStep:servo/servo#19612:🤖 This change no longer contains upstreamable changes to WPT; "
|
||||
"closed existing upstream pull request (wpt/wpt#11).",
|
||||
]
|
||||
)
|
||||
|
||||
def test_synchronize_open_upstream_pr_after_new_changes_include_wpt(self):
|
||||
self.assertListEqual(
|
||||
self.run_test("synchronize.json", ["18746.diff"]),
|
||||
[
|
||||
"CreateOrUpdateBranchForPRStep:1:servo-wpt-sync/wpt/servo_export_19612",
|
||||
"OpenPRStep:servo-wpt-sync/wpt/servo_export_19612→wpt/wpt#1",
|
||||
"CommentStep:servo/servo#19612:🤖 Opened new upstream WPT pull request "
|
||||
"(wpt/wpt#1) with upstreamable changes.",
|
||||
]
|
||||
)
|
||||
|
||||
def test_synchronize_fail_to_update_preexisting_pr_after_new_changes_do_not_apply(
|
||||
self,
|
||||
):
|
||||
self.assertListEqual(
|
||||
self.run_test(
|
||||
"synchronize.json",
|
||||
["does-not-apply-cleanly.diff"],
|
||||
[MockPullRequest("servo-wpt-sync:servo_export_19612", 11)],
|
||||
),
|
||||
[
|
||||
"ChangePRStep:wpt/wpt#11:opened:deny warnings:<!-- Please...[142]",
|
||||
"CreateOrUpdateBranchForPRStep",
|
||||
"CommentStep:servo/servo#19612:🛠 These changes could not be applied onto the "
|
||||
"latest upstream WPT. Servo's copy of the Web Platform Tests may be out of sync.",
|
||||
"CommentStep:wpt/wpt#11:🛠 Changes from the source pull request (servo/servo#19612) can "
|
||||
"no longer be cleanly applied. Waiting for a new version of these changes downstream.",
|
||||
]
|
||||
)
|
||||
|
||||
def test_edited_with_upstream_pr(self):
|
||||
self.assertListEqual(
|
||||
self.run_test(
|
||||
"edited.json", ["wpt.diff"],
|
||||
[MockPullRequest("servo-wpt-sync:servo_export_19620", 10)]
|
||||
),
|
||||
[
|
||||
"ChangePRStep:wpt/wpt#10:open:A cool new title:Reference #<!--...[136]",
|
||||
"CommentStep:servo/servo#19620:✍ Updated existing upstream WPT pull "
|
||||
"request (wpt/wpt#10) title and body."
|
||||
]
|
||||
)
|
||||
|
||||
def test_edited_with_no_upstream_pr(self):
|
||||
self.assertListEqual(self.run_test("edited.json", ["wpt.diff"], []), [])
|
||||
|
||||
def test_synchronize_move_new_changes_to_preexisting_upstream_pr_with_multiple_commits(
|
||||
self,
|
||||
):
|
||||
self.assertListEqual(
|
||||
self.run_test(
|
||||
"synchronize-multiple.json", ["18746.diff", "non-wpt.diff", "wpt.diff"]
|
||||
),
|
||||
[
|
||||
"CreateOrUpdateBranchForPRStep:2:servo-wpt-sync/wpt/servo_export_19612",
|
||||
"OpenPRStep:servo-wpt-sync/wpt/servo_export_19612→wpt/wpt#1",
|
||||
"CommentStep:servo/servo#19612:"
|
||||
"🤖 Opened new upstream WPT pull request (wpt/wpt#1) with upstreamable changes.",
|
||||
]
|
||||
)
|
||||
|
||||
def test_synchronize_with_non_upstreamable_changes(self):
|
||||
self.assertListEqual(self.run_test("synchronize.json", ["non-wpt.diff"]), [])
|
||||
|
||||
def test_merge_upstream_pr_after_merge(self):
|
||||
self.assertListEqual(
|
||||
self.run_test(
|
||||
"merged.json",
|
||||
["18746.diff"],
|
||||
[MockPullRequest("servo-wpt-sync:servo_export_19620", 100)]
|
||||
),
|
||||
[
|
||||
"MergePRStep:wpt/wpt#100",
|
||||
"RemoveBranchForPRStep:servo-wpt-sync/wpt/servo_export_19620"
|
||||
]
|
||||
)
|
||||
|
||||
def test_pr_merged_no_upstream_pr(self):
|
||||
self.assertListEqual(self.run_test("merged.json", ["18746.diff"]), [])
|
||||
|
||||
def test_merge_of_non_upstreamble_pr(self):
|
||||
self.assertListEqual(self.run_test("merged.json", ["non-wpt.diff"]), [])
|
||||
|
||||
|
||||
def setUpModule():
|
||||
# pylint: disable=invalid-name
|
||||
global TMP_DIR, SYNC
|
||||
|
||||
TMP_DIR = tempfile.mkdtemp()
|
||||
SYNC = WPTSync(
|
||||
servo_repo="servo/servo",
|
||||
wpt_repo="wpt/wpt",
|
||||
downstream_wpt_repo="servo-wpt-sync/wpt",
|
||||
servo_path=os.path.join(TMP_DIR, "servo-mock"),
|
||||
wpt_path=os.path.join(TMP_DIR, "wpt-mock"),
|
||||
github_api_token="",
|
||||
github_api_url=f"http://localhost:{PORT}",
|
||||
github_username="servo-wpt-sync",
|
||||
github_email="servo-wpt-sync",
|
||||
github_name="servo-wpt-sync@servo.org",
|
||||
suppress_force_push=True,
|
||||
)
|
||||
|
||||
def setup_mock_repo(repo_name, local_repo):
|
||||
subprocess.check_output(
|
||||
["cp", "-R", "-p", os.path.join(TESTS_DIR, repo_name), local_repo.path])
|
||||
local_repo.run("init", "-b", "master")
|
||||
local_repo.run("add", ".")
|
||||
local_repo.run("commit", "-a", "-m", "Initial commit")
|
||||
|
||||
logging.info("=" * 80)
|
||||
logging.info("Setting up mock repositories")
|
||||
setup_mock_repo("servo-mock", SYNC.local_servo_repo)
|
||||
setup_mock_repo("wpt-mock", SYNC.local_wpt_repo)
|
||||
logging.info("=" * 80)
|
||||
|
||||
|
||||
def tearDownModule():
|
||||
# pylint: disable=invalid-name
|
||||
shutil.rmtree(TMP_DIR)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
10
etc/ci/upstream-wpt-changes/tests/18746.diff
Normal file
10
etc/ci/upstream-wpt-changes/tests/18746.diff
Normal file
|
@ -0,0 +1,10 @@
|
|||
diff --git a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-location.html b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-location.html
|
||||
index ac35dea54c47..135ad21d15ab 100644
|
||||
--- a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-location.html
|
||||
+++ b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-location.html
|
||||
@@ -13,4 +13,5 @@
|
||||
<script src="redirect-location.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
+test commit
|
||||
|
476
etc/ci/upstream-wpt-changes/tests/closed.json
Normal file
476
etc/ci/upstream-wpt-changes/tests/closed.json
Normal file
|
@ -0,0 +1,476 @@
|
|||
{
|
||||
"action": "closed",
|
||||
"number": 18746,
|
||||
"pull_request": {
|
||||
"url": "https://api.github.com/repos/servo/servo/pulls/18746",
|
||||
"id": 144666315,
|
||||
"html_url": "https://github.com/servo/servo/pull/18746",
|
||||
"diff_url": "https://github.com/servo/servo/pull/18746.diff",
|
||||
"patch_url": "https://github.com/servo/servo/pull/18746.patch",
|
||||
"issue_url": "https://api.github.com/repos/servo/servo/issues/18746",
|
||||
"number": 18746,
|
||||
"state": "closed",
|
||||
"locked": false,
|
||||
"title": "This is a test",
|
||||
"user": {
|
||||
"login": "jdm",
|
||||
"id": 27658,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/27658?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/jdm",
|
||||
"html_url": "https://github.com/jdm",
|
||||
"followers_url": "https://api.github.com/users/jdm/followers",
|
||||
"following_url": "https://api.github.com/users/jdm/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/jdm/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/jdm/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/jdm/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/jdm/orgs",
|
||||
"repos_url": "https://api.github.com/users/jdm/repos",
|
||||
"events_url": "https://api.github.com/users/jdm/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/jdm/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"body": "<!-- Please describe your changes on the following line: -->\r\n\r\n\r\n---\r\n<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->\r\n- [ ] `./mach build -d` does not report any errors\r\n- [ ] `./mach test-tidy` does not report any errors\r\n- [ ] These changes fix #__ (github issue number if applicable).\r\n\r\n<!-- Either: -->\r\n- [ ] There are tests for these changes OR\r\n- [ ] These changes do not require tests because _____\r\n\r\n<!-- Also, please make sure that \"Allow edits from maintainers\" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->\r\n\r\n<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->\r\n",
|
||||
"created_at": "2017-10-04T13:16:26Z",
|
||||
"updated_at": "2017-10-04T13:16:30Z",
|
||||
"closed_at": "2017-10-04T13:16:30Z",
|
||||
"merged_at": null,
|
||||
"merge_commit_sha": "04b78ff84073a6b6e2126fea39c8878f3f7af72b",
|
||||
"assignee": {
|
||||
"login": "emilio",
|
||||
"id": 1323194,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/1323194?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/emilio",
|
||||
"html_url": "https://github.com/emilio",
|
||||
"followers_url": "https://api.github.com/users/emilio/followers",
|
||||
"following_url": "https://api.github.com/users/emilio/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/emilio/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/emilio/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/emilio/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/emilio/orgs",
|
||||
"repos_url": "https://api.github.com/users/emilio/repos",
|
||||
"events_url": "https://api.github.com/users/emilio/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/emilio/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"assignees": [
|
||||
{
|
||||
"login": "emilio",
|
||||
"id": 1323194,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/1323194?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/emilio",
|
||||
"html_url": "https://github.com/emilio",
|
||||
"followers_url": "https://api.github.com/users/emilio/followers",
|
||||
"following_url": "https://api.github.com/users/emilio/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/emilio/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/emilio/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/emilio/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/emilio/orgs",
|
||||
"repos_url": "https://api.github.com/users/emilio/repos",
|
||||
"events_url": "https://api.github.com/users/emilio/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/emilio/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
}
|
||||
],
|
||||
"requested_reviewers": [
|
||||
|
||||
],
|
||||
"milestone": null,
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/pulls/18746/commits",
|
||||
"review_comments_url": "https://api.github.com/repos/servo/servo/pulls/18746/comments",
|
||||
"review_comment_url": "https://api.github.com/repos/servo/servo/pulls/comments{/number}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/issues/18746/comments",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/1bb1cd385c4d1928b4f60c4c15906f5318ca2f3f",
|
||||
"head": {
|
||||
"label": "servo:jdm-patch-1",
|
||||
"ref": "jdm-patch-1",
|
||||
"sha": "1bb1cd385c4d1928b4f60c4c15906f5318ca2f3f",
|
||||
"user": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"repo": {
|
||||
"id": 3390243,
|
||||
"name": "servo",
|
||||
"full_name": "servo/servo",
|
||||
"owner": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"created_at": "2012-02-08T19:07:25Z",
|
||||
"updated_at": "2017-10-04T11:44:53Z",
|
||||
"pushed_at": "2017-10-04T13:16:26Z",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 370069,
|
||||
"stargazers_count": 10131,
|
||||
"watchers_count": 10131,
|
||||
"language": null,
|
||||
"has_issues": true,
|
||||
"has_projects": false,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 1731,
|
||||
"mirror_url": null,
|
||||
"open_issues_count": 2072,
|
||||
"forks": 1731,
|
||||
"open_issues": 2072,
|
||||
"watchers": 10131,
|
||||
"default_branch": "master"
|
||||
}
|
||||
},
|
||||
"base": {
|
||||
"label": "servo:master",
|
||||
"ref": "master",
|
||||
"sha": "3b7a82b8c743bcbbefb6f25defd4cc132c25c348",
|
||||
"user": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"repo": {
|
||||
"id": 3390243,
|
||||
"name": "servo",
|
||||
"full_name": "servo/servo",
|
||||
"owner": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"created_at": "2012-02-08T19:07:25Z",
|
||||
"updated_at": "2017-10-04T11:44:53Z",
|
||||
"pushed_at": "2017-10-04T13:16:26Z",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 370069,
|
||||
"stargazers_count": 10131,
|
||||
"watchers_count": 10131,
|
||||
"language": null,
|
||||
"has_issues": true,
|
||||
"has_projects": false,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 1731,
|
||||
"mirror_url": null,
|
||||
"open_issues_count": 2072,
|
||||
"forks": 1731,
|
||||
"open_issues": 2072,
|
||||
"watchers": 10131,
|
||||
"default_branch": "master"
|
||||
}
|
||||
},
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/18746"
|
||||
},
|
||||
"html": {
|
||||
"href": "https://github.com/servo/servo/pull/18746"
|
||||
},
|
||||
"issue": {
|
||||
"href": "https://api.github.com/repos/servo/servo/issues/18746"
|
||||
},
|
||||
"comments": {
|
||||
"href": "https://api.github.com/repos/servo/servo/issues/18746/comments"
|
||||
},
|
||||
"review_comments": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/18746/comments"
|
||||
},
|
||||
"review_comment": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/comments{/number}"
|
||||
},
|
||||
"commits": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/18746/commits"
|
||||
},
|
||||
"statuses": {
|
||||
"href": "https://api.github.com/repos/servo/servo/statuses/1bb1cd385c4d1928b4f60c4c15906f5318ca2f3f"
|
||||
}
|
||||
},
|
||||
"author_association": "MEMBER",
|
||||
"merged": false,
|
||||
"mergeable": true,
|
||||
"rebaseable": true,
|
||||
"mergeable_state": "unstable",
|
||||
"merged_by": null,
|
||||
"comments": 0,
|
||||
"review_comments": 0,
|
||||
"maintainer_can_modify": false,
|
||||
"commits": 1,
|
||||
"additions": 2,
|
||||
"deletions": 1,
|
||||
"changed_files": 1
|
||||
},
|
||||
"repository": {
|
||||
"id": 3390243,
|
||||
"name": "servo",
|
||||
"full_name": "servo/servo",
|
||||
"owner": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"created_at": "2012-02-08T19:07:25Z",
|
||||
"updated_at": "2017-10-04T11:44:53Z",
|
||||
"pushed_at": "2017-10-04T13:16:26Z",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 370069,
|
||||
"stargazers_count": 10131,
|
||||
"watchers_count": 10131,
|
||||
"language": null,
|
||||
"has_issues": true,
|
||||
"has_projects": false,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 1731,
|
||||
"mirror_url": null,
|
||||
"open_issues_count": 2072,
|
||||
"forks": 1731,
|
||||
"open_issues": 2072,
|
||||
"watchers": 10131,
|
||||
"default_branch": "master"
|
||||
},
|
||||
"organization": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"url": "https://api.github.com/orgs/servo",
|
||||
"repos_url": "https://api.github.com/orgs/servo/repos",
|
||||
"events_url": "https://api.github.com/orgs/servo/events",
|
||||
"hooks_url": "https://api.github.com/orgs/servo/hooks",
|
||||
"issues_url": "https://api.github.com/orgs/servo/issues",
|
||||
"members_url": "https://api.github.com/orgs/servo/members{/member}",
|
||||
"public_members_url": "https://api.github.com/orgs/servo/public_members{/member}",
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"description": "The Servo web browser engine"
|
||||
},
|
||||
"sender": {
|
||||
"login": "jdm",
|
||||
"id": 27658,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/27658?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/jdm",
|
||||
"html_url": "https://github.com/jdm",
|
||||
"followers_url": "https://api.github.com/users/jdm/followers",
|
||||
"following_url": "https://api.github.com/users/jdm/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/jdm/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/jdm/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/jdm/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/jdm/orgs",
|
||||
"repos_url": "https://api.github.com/users/jdm/repos",
|
||||
"events_url": "https://api.github.com/users/jdm/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/jdm/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
diff --git a/tests/wpt/web-platform-tests/css/css-test.html b/tests/wpt/web-platform-tests/css/css-test.html
|
||||
index cffb6eb..6100a49 100644
|
||||
--- a/tests/wpt/web-platform-tests/css/out-of-sync-test.html
|
||||
+++ b/tests/wpt/web-platform-tests/css/out-of-sync-test.html
|
||||
@@ -1,3 +1,3 @@
|
||||
<html>
|
||||
-<h1>css test!</h1>
|
||||
+<h1>css test!</h1>hi
|
||||
</html>
|
514
etc/ci/upstream-wpt-changes/tests/edited.json
Normal file
514
etc/ci/upstream-wpt-changes/tests/edited.json
Normal file
|
@ -0,0 +1,514 @@
|
|||
{
|
||||
"action": "edited",
|
||||
"changes": {
|
||||
"body": {
|
||||
"from": "Original body<!-- Please describe your changes on the following line: -->\r\n\r\n\r\n---\r\n<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->\r\n- [ ] `./mach build -d` does not report any errors\r\n- [ ] `./mach test-tidy` does not report any errors\r\n- [ ] These changes fix #___ (GitHub issue number if applicable)\r\n\r\n<!-- Either: -->\r\n- [ ] There are tests for these changes OR\r\n- [ ] These changes do not require tests because ___\r\n\r\n<!-- Also, please make sure that \"Allow edits from maintainers\" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->\r\n\r\n<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->\r\n"
|
||||
},
|
||||
"title": {
|
||||
"from": "Original bad title"
|
||||
}
|
||||
},
|
||||
"number": 19620,
|
||||
"pull_request": {
|
||||
"_links": {
|
||||
"comments": {
|
||||
"href": "https://api.github.com/repos/servo/servo/issues/19620/comments"
|
||||
},
|
||||
"commits": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/19620/commits"
|
||||
},
|
||||
"html": {
|
||||
"href": "https://github.com/servo/servo/pull/19620"
|
||||
},
|
||||
"issue": {
|
||||
"href": "https://api.github.com/repos/servo/servo/issues/19620"
|
||||
},
|
||||
"review_comment": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/comments{/number}"
|
||||
},
|
||||
"review_comments": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/19620/comments"
|
||||
},
|
||||
"self": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/19620"
|
||||
},
|
||||
"statuses": {
|
||||
"href": "https://api.github.com/repos/servo/servo/statuses/28ce5e1e33563e9dc2fe7bc342d313b38147df23"
|
||||
}
|
||||
},
|
||||
"active_lock_reason": null,
|
||||
"additions": 13,
|
||||
"assignee": null,
|
||||
"assignees": [],
|
||||
"author_association": "OWNER",
|
||||
"auto_merge": null,
|
||||
"base": {
|
||||
"label": "mrobinson:master",
|
||||
"ref": "master",
|
||||
"repo": {
|
||||
"allow_auto_merge": false,
|
||||
"allow_forking": true,
|
||||
"allow_merge_commit": true,
|
||||
"allow_rebase_merge": true,
|
||||
"allow_squash_merge": true,
|
||||
"allow_update_branch": false,
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"archived": false,
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"created_at": "2014-03-31T16:17:52Z",
|
||||
"default_branch": "master",
|
||||
"delete_branch_on_merge": false,
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"description": "The Servo Browser Engine",
|
||||
"disabled": false,
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"fork": true,
|
||||
"forks": 0,
|
||||
"forks_count": 0,
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"full_name": "servo/servo",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"has_discussions": false,
|
||||
"has_downloads": true,
|
||||
"has_issues": false,
|
||||
"has_pages": false,
|
||||
"has_projects": true,
|
||||
"has_wiki": true,
|
||||
"homepage": "",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"id": 18299566,
|
||||
"is_template": false,
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"language": null,
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"license": {
|
||||
"key": "mpl-2.0",
|
||||
"name": "Mozilla Public License 2.0",
|
||||
"node_id": "MDc6TGljZW5zZTE0",
|
||||
"spdx_id": "MPL-2.0",
|
||||
"url": "https://api.github.com/licenses/mpl-2.0"
|
||||
},
|
||||
"merge_commit_message": "PR_TITLE",
|
||||
"merge_commit_title": "MERGE_MESSAGE",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"mirror_url": null,
|
||||
"name": "servo",
|
||||
"node_id": "MDEwOlJlcG9zaXRvcnkxODI5OTU2Ng==",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"open_issues": 2,
|
||||
"open_issues_count": 2,
|
||||
"owner": {
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/13536?v=4",
|
||||
"events_url": "https://api.github.com/users/mrobinson/events{/privacy}",
|
||||
"followers_url": "https://api.github.com/users/mrobinson/followers",
|
||||
"following_url": "https://api.github.com/users/mrobinson/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/mrobinson/gists{/gist_id}",
|
||||
"gravatar_id": "",
|
||||
"html_url": "https://github.com/mrobinson",
|
||||
"id": 13536,
|
||||
"login": "mrobinson",
|
||||
"node_id": "MDQ6VXNlcjEzNTM2",
|
||||
"organizations_url": "https://api.github.com/users/mrobinson/orgs",
|
||||
"received_events_url": "https://api.github.com/users/mrobinson/received_events",
|
||||
"repos_url": "https://api.github.com/users/mrobinson/repos",
|
||||
"site_admin": false,
|
||||
"starred_url": "https://api.github.com/users/mrobinson/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/mrobinson/subscriptions",
|
||||
"type": "User",
|
||||
"url": "https://api.github.com/users/mrobinson"
|
||||
},
|
||||
"private": false,
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"pushed_at": "2023-01-09T08:10:35Z",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"size": 928531,
|
||||
"squash_merge_commit_message": "COMMIT_MESSAGES",
|
||||
"squash_merge_commit_title": "COMMIT_OR_PR_TITLE",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"stargazers_count": 0,
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"topics": [],
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"updated_at": "2023-01-02T14:06:01Z",
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"use_squash_pr_title_as_default": false,
|
||||
"visibility": "public",
|
||||
"watchers": 0,
|
||||
"watchers_count": 0,
|
||||
"web_commit_signoff_required": false
|
||||
},
|
||||
"sha": "35b45a8a0b6741679439de56613f3588e5cc5887",
|
||||
"user": {
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/13536?v=4",
|
||||
"events_url": "https://api.github.com/users/mrobinson/events{/privacy}",
|
||||
"followers_url": "https://api.github.com/users/mrobinson/followers",
|
||||
"following_url": "https://api.github.com/users/mrobinson/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/mrobinson/gists{/gist_id}",
|
||||
"gravatar_id": "",
|
||||
"html_url": "https://github.com/mrobinson",
|
||||
"id": 13536,
|
||||
"login": "mrobinson",
|
||||
"node_id": "MDQ6VXNlcjEzNTM2",
|
||||
"organizations_url": "https://api.github.com/users/mrobinson/orgs",
|
||||
"received_events_url": "https://api.github.com/users/mrobinson/received_events",
|
||||
"repos_url": "https://api.github.com/users/mrobinson/repos",
|
||||
"site_admin": false,
|
||||
"starred_url": "https://api.github.com/users/mrobinson/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/mrobinson/subscriptions",
|
||||
"type": "User",
|
||||
"url": "https://api.github.com/users/mrobinson"
|
||||
}
|
||||
},
|
||||
"body": "Reference #3 servo/servo#3<!-- Please describe your changes on the following line: -->\r\n\r\n\r\n---\r\n<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->\r\n- [ ] `./mach build -d` does not report any errors\r\n- [ ] `./mach test-tidy` does not report any errors\r\n- [ ] These changes fix #___ (GitHub issue number if applicable)\r\n\r\n<!-- Either: -->\r\n- [ ] There are tests for these changes OR\r\n- [ ] These changes do not require tests because ___\r\n\r\n<!-- Also, please make sure that \"Allow edits from maintainers\" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->\r\n\r\n<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->\r\n",
|
||||
"changed_files": 2,
|
||||
"closed_at": null,
|
||||
"comments": 1,
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/issues/19620/comments",
|
||||
"commits": 2,
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/pulls/19620/commits",
|
||||
"created_at": "2023-01-09T08:10:35Z",
|
||||
"deletions": 8,
|
||||
"diff_url": "https://github.com/servo/servo/pull/19620.diff",
|
||||
"draft": false,
|
||||
"head": {
|
||||
"label": "mrobinson:more-work",
|
||||
"ref": "more-work",
|
||||
"repo": {
|
||||
"allow_auto_merge": false,
|
||||
"allow_forking": true,
|
||||
"allow_merge_commit": true,
|
||||
"allow_rebase_merge": true,
|
||||
"allow_squash_merge": true,
|
||||
"allow_update_branch": false,
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"archived": false,
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"created_at": "2014-03-31T16:17:52Z",
|
||||
"default_branch": "master",
|
||||
"delete_branch_on_merge": false,
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"description": "The Servo Browser Engine",
|
||||
"disabled": false,
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"fork": true,
|
||||
"forks": 0,
|
||||
"forks_count": 0,
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"full_name": "servo/servo",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"has_discussions": false,
|
||||
"has_downloads": true,
|
||||
"has_issues": false,
|
||||
"has_pages": false,
|
||||
"has_projects": true,
|
||||
"has_wiki": true,
|
||||
"homepage": "",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"id": 18299566,
|
||||
"is_template": false,
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"language": null,
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"license": {
|
||||
"key": "mpl-2.0",
|
||||
"name": "Mozilla Public License 2.0",
|
||||
"node_id": "MDc6TGljZW5zZTE0",
|
||||
"spdx_id": "MPL-2.0",
|
||||
"url": "https://api.github.com/licenses/mpl-2.0"
|
||||
},
|
||||
"merge_commit_message": "PR_TITLE",
|
||||
"merge_commit_title": "MERGE_MESSAGE",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"mirror_url": null,
|
||||
"name": "servo",
|
||||
"node_id": "MDEwOlJlcG9zaXRvcnkxODI5OTU2Ng==",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"open_issues": 2,
|
||||
"open_issues_count": 2,
|
||||
"owner": {
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/13536?v=4",
|
||||
"events_url": "https://api.github.com/users/mrobinson/events{/privacy}",
|
||||
"followers_url": "https://api.github.com/users/mrobinson/followers",
|
||||
"following_url": "https://api.github.com/users/mrobinson/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/mrobinson/gists{/gist_id}",
|
||||
"gravatar_id": "",
|
||||
"html_url": "https://github.com/mrobinson",
|
||||
"id": 13536,
|
||||
"login": "mrobinson",
|
||||
"node_id": "MDQ6VXNlcjEzNTM2",
|
||||
"organizations_url": "https://api.github.com/users/mrobinson/orgs",
|
||||
"received_events_url": "https://api.github.com/users/mrobinson/received_events",
|
||||
"repos_url": "https://api.github.com/users/mrobinson/repos",
|
||||
"site_admin": false,
|
||||
"starred_url": "https://api.github.com/users/mrobinson/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/mrobinson/subscriptions",
|
||||
"type": "User",
|
||||
"url": "https://api.github.com/users/mrobinson"
|
||||
},
|
||||
"private": false,
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"pushed_at": "2023-01-09T08:10:35Z",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"size": 928531,
|
||||
"squash_merge_commit_message": "COMMIT_MESSAGES",
|
||||
"squash_merge_commit_title": "COMMIT_OR_PR_TITLE",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"stargazers_count": 0,
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"topics": [],
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"updated_at": "2023-01-02T14:06:01Z",
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"use_squash_pr_title_as_default": false,
|
||||
"visibility": "public",
|
||||
"watchers": 0,
|
||||
"watchers_count": 0,
|
||||
"web_commit_signoff_required": false
|
||||
},
|
||||
"sha": "28ce5e1e33563e9dc2fe7bc342d313b38147df23",
|
||||
"user": {
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/13536?v=4",
|
||||
"events_url": "https://api.github.com/users/mrobinson/events{/privacy}",
|
||||
"followers_url": "https://api.github.com/users/mrobinson/followers",
|
||||
"following_url": "https://api.github.com/users/mrobinson/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/mrobinson/gists{/gist_id}",
|
||||
"gravatar_id": "",
|
||||
"html_url": "https://github.com/mrobinson",
|
||||
"id": 13536,
|
||||
"login": "mrobinson",
|
||||
"node_id": "MDQ6VXNlcjEzNTM2",
|
||||
"organizations_url": "https://api.github.com/users/mrobinson/orgs",
|
||||
"received_events_url": "https://api.github.com/users/mrobinson/received_events",
|
||||
"repos_url": "https://api.github.com/users/mrobinson/repos",
|
||||
"site_admin": false,
|
||||
"starred_url": "https://api.github.com/users/mrobinson/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/mrobinson/subscriptions",
|
||||
"type": "User",
|
||||
"url": "https://api.github.com/users/mrobinson"
|
||||
}
|
||||
},
|
||||
"html_url": "https://github.com/servo/servo/pull/19620",
|
||||
"id": 1190367516,
|
||||
"issue_url": "https://api.github.com/repos/servo/servo/issues/19620",
|
||||
"labels": [],
|
||||
"locked": false,
|
||||
"maintainer_can_modify": false,
|
||||
"merge_commit_sha": "a5a2e2e745d1b3aaf8544cc7c6eddc519ff9f8f7",
|
||||
"mergeable": true,
|
||||
"mergeable_state": "clean",
|
||||
"merged": false,
|
||||
"merged_at": null,
|
||||
"merged_by": null,
|
||||
"milestone": null,
|
||||
"node_id": "PR_kwDOARc6rs5G85Ec",
|
||||
"number": 19620,
|
||||
"patch_url": "https://github.com/servo/servo/pull/19620.patch",
|
||||
"rebaseable": true,
|
||||
"requested_reviewers": [],
|
||||
"requested_teams": [],
|
||||
"review_comment_url": "https://api.github.com/repos/servo/servo/pulls/comments{/number}",
|
||||
"review_comments": 0,
|
||||
"review_comments_url": "https://api.github.com/repos/servo/servo/pulls/19620/comments",
|
||||
"state": "open",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/28ce5e1e33563e9dc2fe7bc342d313b38147df23",
|
||||
"title": "A cool new title",
|
||||
"updated_at": "2023-01-09T08:16:53Z",
|
||||
"url": "https://api.github.com/repos/servo/servo/pulls/19620",
|
||||
"user": {
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/13536?v=4",
|
||||
"events_url": "https://api.github.com/users/mrobinson/events{/privacy}",
|
||||
"followers_url": "https://api.github.com/users/mrobinson/followers",
|
||||
"following_url": "https://api.github.com/users/mrobinson/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/mrobinson/gists{/gist_id}",
|
||||
"gravatar_id": "",
|
||||
"html_url": "https://github.com/mrobinson",
|
||||
"id": 13536,
|
||||
"login": "mrobinson",
|
||||
"node_id": "MDQ6VXNlcjEzNTM2",
|
||||
"organizations_url": "https://api.github.com/users/mrobinson/orgs",
|
||||
"received_events_url": "https://api.github.com/users/mrobinson/received_events",
|
||||
"repos_url": "https://api.github.com/users/mrobinson/repos",
|
||||
"site_admin": false,
|
||||
"starred_url": "https://api.github.com/users/mrobinson/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/mrobinson/subscriptions",
|
||||
"type": "User",
|
||||
"url": "https://api.github.com/users/mrobinson"
|
||||
}
|
||||
},
|
||||
"repository": {
|
||||
"allow_forking": true,
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"archived": false,
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"created_at": "2014-03-31T16:17:52Z",
|
||||
"default_branch": "master",
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"description": "The Servo Browser Engine",
|
||||
"disabled": false,
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"fork": true,
|
||||
"forks": 0,
|
||||
"forks_count": 0,
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"full_name": "servo/servo",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"has_discussions": false,
|
||||
"has_downloads": true,
|
||||
"has_issues": false,
|
||||
"has_pages": false,
|
||||
"has_projects": true,
|
||||
"has_wiki": true,
|
||||
"homepage": "",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"id": 18299566,
|
||||
"is_template": false,
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"language": null,
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"license": {
|
||||
"key": "mpl-2.0",
|
||||
"name": "Mozilla Public License 2.0",
|
||||
"node_id": "MDc6TGljZW5zZTE0",
|
||||
"spdx_id": "MPL-2.0",
|
||||
"url": "https://api.github.com/licenses/mpl-2.0"
|
||||
},
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"mirror_url": null,
|
||||
"name": "servo",
|
||||
"node_id": "MDEwOlJlcG9zaXRvcnkxODI5OTU2Ng==",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"open_issues": 2,
|
||||
"open_issues_count": 2,
|
||||
"owner": {
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/13536?v=4",
|
||||
"events_url": "https://api.github.com/users/mrobinson/events{/privacy}",
|
||||
"followers_url": "https://api.github.com/users/mrobinson/followers",
|
||||
"following_url": "https://api.github.com/users/mrobinson/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/mrobinson/gists{/gist_id}",
|
||||
"gravatar_id": "",
|
||||
"html_url": "https://github.com/mrobinson",
|
||||
"id": 13536,
|
||||
"login": "mrobinson",
|
||||
"node_id": "MDQ6VXNlcjEzNTM2",
|
||||
"organizations_url": "https://api.github.com/users/mrobinson/orgs",
|
||||
"received_events_url": "https://api.github.com/users/mrobinson/received_events",
|
||||
"repos_url": "https://api.github.com/users/mrobinson/repos",
|
||||
"site_admin": false,
|
||||
"starred_url": "https://api.github.com/users/mrobinson/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/mrobinson/subscriptions",
|
||||
"type": "User",
|
||||
"url": "https://api.github.com/users/mrobinson"
|
||||
},
|
||||
"private": false,
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"pushed_at": "2023-01-09T08:10:35Z",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"size": 928531,
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"stargazers_count": 0,
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"topics": [],
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"updated_at": "2023-01-02T14:06:01Z",
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"visibility": "public",
|
||||
"watchers": 0,
|
||||
"watchers_count": 0,
|
||||
"web_commit_signoff_required": false
|
||||
},
|
||||
"sender": {
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/13536?v=4",
|
||||
"events_url": "https://api.github.com/users/mrobinson/events{/privacy}",
|
||||
"followers_url": "https://api.github.com/users/mrobinson/followers",
|
||||
"following_url": "https://api.github.com/users/mrobinson/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/mrobinson/gists{/gist_id}",
|
||||
"gravatar_id": "",
|
||||
"html_url": "https://github.com/mrobinson",
|
||||
"id": 13536,
|
||||
"login": "mrobinson",
|
||||
"node_id": "MDQ6VXNlcjEzNTM2",
|
||||
"organizations_url": "https://api.github.com/users/mrobinson/orgs",
|
||||
"received_events_url": "https://api.github.com/users/mrobinson/received_events",
|
||||
"repos_url": "https://api.github.com/users/mrobinson/repos",
|
||||
"site_admin": false,
|
||||
"starred_url": "https://api.github.com/users/mrobinson/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/mrobinson/subscriptions",
|
||||
"type": "User",
|
||||
"url": "https://api.github.com/users/mrobinson"
|
||||
}
|
||||
}
|
515
etc/ci/upstream-wpt-changes/tests/merged.json
Normal file
515
etc/ci/upstream-wpt-changes/tests/merged.json
Normal file
|
@ -0,0 +1,515 @@
|
|||
{
|
||||
"action": "closed",
|
||||
"number": 19620,
|
||||
"pull_request": {
|
||||
"url": "https://api.github.com/repos/servo/servo/pulls/19620",
|
||||
"id": 159652155,
|
||||
"html_url": "https://github.com/servo/servo/pull/19620",
|
||||
"diff_url": "https://github.com/servo/servo/pull/19620.diff",
|
||||
"patch_url": "https://github.com/servo/servo/pull/19620.patch",
|
||||
"issue_url": "https://api.github.com/repos/servo/servo/issues/19620",
|
||||
"number": 19620,
|
||||
"state": "closed",
|
||||
"locked": false,
|
||||
"title": "style: Make sure to honor parse_method in transition and animation shorthands.",
|
||||
"user": {
|
||||
"login": "emilio",
|
||||
"id": 1323194,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/1323194?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/emilio",
|
||||
"html_url": "https://github.com/emilio",
|
||||
"followers_url": "https://api.github.com/users/emilio/followers",
|
||||
"following_url": "https://api.github.com/users/emilio/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/emilio/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/emilio/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/emilio/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/emilio/orgs",
|
||||
"repos_url": "https://api.github.com/users/emilio/repos",
|
||||
"events_url": "https://api.github.com/users/emilio/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/emilio/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"body": "Reviewed-by: birtles\r\nBug: 1426312\r\nMozReview-Commit-ID: HY3jtdSdaga\n\n<!-- Reviewable:start -->\n---\nThis change is [<img src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.io/reviews/servo/servo/19620)\n<!-- Reviewable:end -->\n",
|
||||
"created_at": "2017-12-21T13:01:36Z",
|
||||
"updated_at": "2017-12-21T14:53:35Z",
|
||||
"closed_at": "2017-12-21T14:53:35Z",
|
||||
"merged_at": "2017-12-21T14:53:35Z",
|
||||
"merge_commit_sha": "cdb604ae6950960e46855bfb28d6c1f560b4f6e7",
|
||||
"assignee": {
|
||||
"login": "metajack",
|
||||
"id": 28357,
|
||||
"avatar_url": "https://avatars3.githubusercontent.com/u/28357?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/metajack",
|
||||
"html_url": "https://github.com/metajack",
|
||||
"followers_url": "https://api.github.com/users/metajack/followers",
|
||||
"following_url": "https://api.github.com/users/metajack/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/metajack/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/metajack/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/metajack/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/metajack/orgs",
|
||||
"repos_url": "https://api.github.com/users/metajack/repos",
|
||||
"events_url": "https://api.github.com/users/metajack/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/metajack/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"assignees": [
|
||||
{
|
||||
"login": "metajack",
|
||||
"id": 28357,
|
||||
"avatar_url": "https://avatars3.githubusercontent.com/u/28357?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/metajack",
|
||||
"html_url": "https://github.com/metajack",
|
||||
"followers_url": "https://api.github.com/users/metajack/followers",
|
||||
"following_url": "https://api.github.com/users/metajack/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/metajack/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/metajack/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/metajack/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/metajack/orgs",
|
||||
"repos_url": "https://api.github.com/users/metajack/repos",
|
||||
"events_url": "https://api.github.com/users/metajack/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/metajack/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
}
|
||||
],
|
||||
"requested_reviewers": [
|
||||
|
||||
],
|
||||
"milestone": null,
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/pulls/19620/commits",
|
||||
"review_comments_url": "https://api.github.com/repos/servo/servo/pulls/19620/comments",
|
||||
"review_comment_url": "https://api.github.com/repos/servo/servo/pulls/comments{/number}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/issues/19620/comments",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/cdb604ae6950960e46855bfb28d6c1f560b4f6e7",
|
||||
"head": {
|
||||
"label": "emilio:parse-transition-longhand",
|
||||
"ref": "parse-transition-longhand",
|
||||
"sha": "cdb604ae6950960e46855bfb28d6c1f560b4f6e7",
|
||||
"user": {
|
||||
"login": "emilio",
|
||||
"id": 1323194,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/1323194?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/emilio",
|
||||
"html_url": "https://github.com/emilio",
|
||||
"followers_url": "https://api.github.com/users/emilio/followers",
|
||||
"following_url": "https://api.github.com/users/emilio/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/emilio/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/emilio/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/emilio/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/emilio/orgs",
|
||||
"repos_url": "https://api.github.com/users/emilio/repos",
|
||||
"events_url": "https://api.github.com/users/emilio/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/emilio/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"repo": {
|
||||
"id": 34808649,
|
||||
"name": "servo",
|
||||
"full_name": "emilio/servo",
|
||||
"owner": {
|
||||
"login": "emilio",
|
||||
"id": 1323194,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/1323194?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/emilio",
|
||||
"html_url": "https://github.com/emilio",
|
||||
"followers_url": "https://api.github.com/users/emilio/followers",
|
||||
"following_url": "https://api.github.com/users/emilio/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/emilio/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/emilio/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/emilio/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/emilio/orgs",
|
||||
"repos_url": "https://api.github.com/users/emilio/repos",
|
||||
"events_url": "https://api.github.com/users/emilio/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/emilio/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/emilio/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": true,
|
||||
"url": "https://api.github.com/repos/emilio/servo",
|
||||
"forks_url": "https://api.github.com/repos/emilio/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/emilio/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/emilio/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/emilio/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/emilio/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/emilio/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/emilio/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/emilio/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/emilio/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/emilio/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/emilio/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/emilio/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/emilio/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/emilio/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/emilio/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/emilio/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/emilio/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/emilio/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/emilio/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/emilio/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/emilio/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/emilio/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/emilio/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/emilio/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/emilio/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/emilio/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/emilio/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/emilio/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/emilio/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/emilio/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/emilio/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/emilio/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/emilio/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/emilio/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/emilio/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/emilio/servo/deployments",
|
||||
"created_at": "2015-04-29T17:44:08Z",
|
||||
"updated_at": "2016-01-12T15:00:17Z",
|
||||
"pushed_at": "2017-12-21T12:57:32Z",
|
||||
"git_url": "git://github.com/emilio/servo.git",
|
||||
"ssh_url": "git@github.com:emilio/servo.git",
|
||||
"clone_url": "https://github.com/emilio/servo.git",
|
||||
"svn_url": "https://github.com/emilio/servo",
|
||||
"homepage": "",
|
||||
"size": 323504,
|
||||
"stargazers_count": 0,
|
||||
"watchers_count": 0,
|
||||
"language": null,
|
||||
"has_issues": false,
|
||||
"has_projects": true,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 0,
|
||||
"mirror_url": null,
|
||||
"archived": false,
|
||||
"open_issues_count": 0,
|
||||
"license": {
|
||||
"key": "mpl-2.0",
|
||||
"name": "Mozilla Public License 2.0",
|
||||
"spdx_id": "MPL-2.0",
|
||||
"url": "https://api.github.com/licenses/mpl-2.0"
|
||||
},
|
||||
"forks": 0,
|
||||
"open_issues": 0,
|
||||
"watchers": 0,
|
||||
"default_branch": "master"
|
||||
}
|
||||
},
|
||||
"base": {
|
||||
"label": "servo:master",
|
||||
"ref": "master",
|
||||
"sha": "df0f9ad7ae6f10ffeaf5d40f4a2a25abadabf9cc",
|
||||
"user": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"repo": {
|
||||
"id": 3390243,
|
||||
"name": "servo",
|
||||
"full_name": "servo/servo",
|
||||
"owner": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"created_at": "2012-02-08T19:07:25Z",
|
||||
"updated_at": "2017-12-21T09:43:03Z",
|
||||
"pushed_at": "2017-12-21T14:53:23Z",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 402344,
|
||||
"stargazers_count": 10867,
|
||||
"watchers_count": 10867,
|
||||
"language": "Rust",
|
||||
"has_issues": true,
|
||||
"has_projects": false,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 1810,
|
||||
"mirror_url": null,
|
||||
"archived": false,
|
||||
"open_issues_count": 2027,
|
||||
"license": {
|
||||
"key": "mpl-2.0",
|
||||
"name": "Mozilla Public License 2.0",
|
||||
"spdx_id": "MPL-2.0",
|
||||
"url": "https://api.github.com/licenses/mpl-2.0"
|
||||
},
|
||||
"forks": 1810,
|
||||
"open_issues": 2027,
|
||||
"watchers": 10867,
|
||||
"default_branch": "master"
|
||||
}
|
||||
},
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/19620"
|
||||
},
|
||||
"html": {
|
||||
"href": "https://github.com/servo/servo/pull/19620"
|
||||
},
|
||||
"issue": {
|
||||
"href": "https://api.github.com/repos/servo/servo/issues/19620"
|
||||
},
|
||||
"comments": {
|
||||
"href": "https://api.github.com/repos/servo/servo/issues/19620/comments"
|
||||
},
|
||||
"review_comments": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/19620/comments"
|
||||
},
|
||||
"review_comment": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/comments{/number}"
|
||||
},
|
||||
"commits": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/19620/commits"
|
||||
},
|
||||
"statuses": {
|
||||
"href": "https://api.github.com/repos/servo/servo/statuses/cdb604ae6950960e46855bfb28d6c1f560b4f6e7"
|
||||
}
|
||||
},
|
||||
"author_association": "MEMBER",
|
||||
"merged": true,
|
||||
"mergeable": null,
|
||||
"rebaseable": null,
|
||||
"mergeable_state": "unknown",
|
||||
"merged_by": {
|
||||
"login": "bors-servo",
|
||||
"id": 4368172,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/4368172?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/bors-servo",
|
||||
"html_url": "https://github.com/bors-servo",
|
||||
"followers_url": "https://api.github.com/users/bors-servo/followers",
|
||||
"following_url": "https://api.github.com/users/bors-servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/bors-servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/bors-servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/bors-servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/bors-servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/bors-servo/repos",
|
||||
"events_url": "https://api.github.com/users/bors-servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/bors-servo/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"comments": 6,
|
||||
"review_comments": 0,
|
||||
"maintainer_can_modify": false,
|
||||
"commits": 1,
|
||||
"additions": 4,
|
||||
"deletions": 14,
|
||||
"changed_files": 1
|
||||
},
|
||||
"repository": {
|
||||
"id": 3390243,
|
||||
"name": "servo",
|
||||
"full_name": "servo/servo",
|
||||
"owner": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"created_at": "2012-02-08T19:07:25Z",
|
||||
"updated_at": "2017-12-21T09:43:03Z",
|
||||
"pushed_at": "2017-12-21T14:53:23Z",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 402344,
|
||||
"stargazers_count": 10867,
|
||||
"watchers_count": 10867,
|
||||
"language": "Rust",
|
||||
"has_issues": true,
|
||||
"has_projects": false,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 1810,
|
||||
"mirror_url": null,
|
||||
"archived": false,
|
||||
"open_issues_count": 2027,
|
||||
"license": {
|
||||
"key": "mpl-2.0",
|
||||
"name": "Mozilla Public License 2.0",
|
||||
"spdx_id": "MPL-2.0",
|
||||
"url": "https://api.github.com/licenses/mpl-2.0"
|
||||
},
|
||||
"forks": 1810,
|
||||
"open_issues": 2027,
|
||||
"watchers": 10867,
|
||||
"default_branch": "master"
|
||||
},
|
||||
"organization": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"url": "https://api.github.com/orgs/servo",
|
||||
"repos_url": "https://api.github.com/orgs/servo/repos",
|
||||
"events_url": "https://api.github.com/orgs/servo/events",
|
||||
"hooks_url": "https://api.github.com/orgs/servo/hooks",
|
||||
"issues_url": "https://api.github.com/orgs/servo/issues",
|
||||
"members_url": "https://api.github.com/orgs/servo/members{/member}",
|
||||
"public_members_url": "https://api.github.com/orgs/servo/public_members{/member}",
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"description": "The Servo web browser engine"
|
||||
},
|
||||
"sender": {
|
||||
"login": "bors-servo",
|
||||
"id": 4368172,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/4368172?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/bors-servo",
|
||||
"html_url": "https://github.com/bors-servo",
|
||||
"followers_url": "https://api.github.com/users/bors-servo/followers",
|
||||
"following_url": "https://api.github.com/users/bors-servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/bors-servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/bors-servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/bors-servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/bors-servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/bors-servo/repos",
|
||||
"events_url": "https://api.github.com/users/bors-servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/bors-servo/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
}
|
||||
}
|
4
etc/ci/upstream-wpt-changes/tests/move-into-wpt.diff
Normal file
4
etc/ci/upstream-wpt-changes/tests/move-into-wpt.diff
Normal file
|
@ -0,0 +1,4 @@
|
|||
diff --git a/tests/wpt/mozilla/tests/mozilla/mozilla-test.html b/tests/wpt/web-platform-tests/mozilla-test.html
|
||||
similarity index 100%
|
||||
rename from tests/wpt/mozilla/tests/mozilla/mozilla-test.html
|
||||
rename to tests/wpt/web-platform-tests/mozilla-test.html
|
4
etc/ci/upstream-wpt-changes/tests/move-out-of-wpt.diff
Normal file
4
etc/ci/upstream-wpt-changes/tests/move-out-of-wpt.diff
Normal file
|
@ -0,0 +1,4 @@
|
|||
diff --git a/tests/wpt/web-platform-tests/test.html b/tests/wpt/test.html
|
||||
similarity index 100%
|
||||
rename from tests/wpt/web-platform-tests/test.html
|
||||
rename to tests/wpt/test.html
|
10
etc/ci/upstream-wpt-changes/tests/non-wpt.diff
Normal file
10
etc/ci/upstream-wpt-changes/tests/non-wpt.diff
Normal file
|
@ -0,0 +1,10 @@
|
|||
diff --git a/tests/wpt/something.py b/tests/wpt/something.py
|
||||
index 10d52a0..92fb89d 100644
|
||||
--- a/tests/wpt/something.py
|
||||
+++ b/tests/wpt/something.py
|
||||
@@ -8,3 +8,4 @@
|
||||
# except according to those terms.
|
||||
|
||||
print('this is a python file')
|
||||
+print('this is a change')
|
||||
|
|
@ -0,0 +1,440 @@
|
|||
{
|
||||
"action": "opened",
|
||||
"number": 18746,
|
||||
"pull_request": {
|
||||
"url": "https://api.github.com/repos/servo/servo/pulls/18746",
|
||||
"id": 144666315,
|
||||
"html_url": "https://github.com/servo/servo/pull/18746",
|
||||
"diff_url": "https://github.com/servo/servo/pull/18746.diff",
|
||||
"patch_url": "https://github.com/servo/servo/pull/18746.patch",
|
||||
"issue_url": "https://api.github.com/repos/servo/servo/issues/18746",
|
||||
"number": 18746,
|
||||
"state": "open",
|
||||
"locked": false,
|
||||
"title": "This is a test",
|
||||
"user": {
|
||||
"login": "jdm",
|
||||
"id": 27658,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/27658?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/jdm",
|
||||
"html_url": "https://github.com/jdm",
|
||||
"followers_url": "https://api.github.com/users/jdm/followers",
|
||||
"following_url": "https://api.github.com/users/jdm/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/jdm/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/jdm/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/jdm/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/jdm/orgs",
|
||||
"repos_url": "https://api.github.com/users/jdm/repos",
|
||||
"events_url": "https://api.github.com/users/jdm/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/jdm/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"body": "[no-wpt-sync]<!-- Please describe your changes on the following line: -->\r\n\r\n\r\n---\r\n<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->\r\n- [ ] `./mach build -d` does not report any errors\r\n- [ ] `./mach test-tidy` does not report any errors\r\n- [ ] These changes fix #__ (github issue number if applicable).\r\n\r\n<!-- Either: -->\r\n- [ ] There are tests for these changes OR\r\n- [ ] These changes do not require tests because _____\r\n\r\n<!-- Also, please make sure that \"Allow edits from maintainers\" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->\r\n\r\n<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->\r\n",
|
||||
"created_at": "2017-10-04T13:16:26Z",
|
||||
"updated_at": "2017-10-04T13:16:26Z",
|
||||
"closed_at": null,
|
||||
"merged_at": null,
|
||||
"merge_commit_sha": null,
|
||||
"assignee": null,
|
||||
"assignees": [
|
||||
|
||||
],
|
||||
"requested_reviewers": [
|
||||
|
||||
],
|
||||
"milestone": null,
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/pulls/18746/commits",
|
||||
"review_comments_url": "https://api.github.com/repos/servo/servo/pulls/18746/comments",
|
||||
"review_comment_url": "https://api.github.com/repos/servo/servo/pulls/comments{/number}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/issues/18746/comments",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/1bb1cd385c4d1928b4f60c4c15906f5318ca2f3f",
|
||||
"head": {
|
||||
"label": "servo:jdm-patch-1",
|
||||
"ref": "jdm-patch-1",
|
||||
"sha": "1bb1cd385c4d1928b4f60c4c15906f5318ca2f3f",
|
||||
"user": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"repo": {
|
||||
"id": 3390243,
|
||||
"name": "servo",
|
||||
"full_name": "servo/servo",
|
||||
"owner": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"created_at": "2012-02-08T19:07:25Z",
|
||||
"updated_at": "2017-10-04T11:44:53Z",
|
||||
"pushed_at": "2017-10-04T13:16:20Z",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 370069,
|
||||
"stargazers_count": 10131,
|
||||
"watchers_count": 10131,
|
||||
"language": null,
|
||||
"has_issues": true,
|
||||
"has_projects": false,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 1731,
|
||||
"mirror_url": null,
|
||||
"open_issues_count": 2073,
|
||||
"forks": 1731,
|
||||
"open_issues": 2073,
|
||||
"watchers": 10131,
|
||||
"default_branch": "master"
|
||||
}
|
||||
},
|
||||
"base": {
|
||||
"label": "servo:master",
|
||||
"ref": "master",
|
||||
"sha": "3b7a82b8c743bcbbefb6f25defd4cc132c25c348",
|
||||
"user": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"repo": {
|
||||
"id": 3390243,
|
||||
"name": "servo",
|
||||
"full_name": "servo/servo",
|
||||
"owner": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"created_at": "2012-02-08T19:07:25Z",
|
||||
"updated_at": "2017-10-04T11:44:53Z",
|
||||
"pushed_at": "2017-10-04T13:16:20Z",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 370069,
|
||||
"stargazers_count": 10131,
|
||||
"watchers_count": 10131,
|
||||
"language": null,
|
||||
"has_issues": true,
|
||||
"has_projects": false,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 1731,
|
||||
"mirror_url": null,
|
||||
"open_issues_count": 2073,
|
||||
"forks": 1731,
|
||||
"open_issues": 2073,
|
||||
"watchers": 10131,
|
||||
"default_branch": "master"
|
||||
}
|
||||
},
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/18746"
|
||||
},
|
||||
"html": {
|
||||
"href": "https://github.com/servo/servo/pull/18746"
|
||||
},
|
||||
"issue": {
|
||||
"href": "https://api.github.com/repos/servo/servo/issues/18746"
|
||||
},
|
||||
"comments": {
|
||||
"href": "https://api.github.com/repos/servo/servo/issues/18746/comments"
|
||||
},
|
||||
"review_comments": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/18746/comments"
|
||||
},
|
||||
"review_comment": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/comments{/number}"
|
||||
},
|
||||
"commits": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/18746/commits"
|
||||
},
|
||||
"statuses": {
|
||||
"href": "https://api.github.com/repos/servo/servo/statuses/1bb1cd385c4d1928b4f60c4c15906f5318ca2f3f"
|
||||
}
|
||||
},
|
||||
"author_association": "MEMBER",
|
||||
"merged": false,
|
||||
"mergeable": null,
|
||||
"rebaseable": null,
|
||||
"mergeable_state": "unknown",
|
||||
"merged_by": null,
|
||||
"comments": 0,
|
||||
"review_comments": 0,
|
||||
"maintainer_can_modify": false,
|
||||
"commits": 1,
|
||||
"additions": 2,
|
||||
"deletions": 1,
|
||||
"changed_files": 1
|
||||
},
|
||||
"repository": {
|
||||
"id": 3390243,
|
||||
"name": "servo",
|
||||
"full_name": "servo/servo",
|
||||
"owner": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"created_at": "2012-02-08T19:07:25Z",
|
||||
"updated_at": "2017-10-04T11:44:53Z",
|
||||
"pushed_at": "2017-10-04T13:16:20Z",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 370069,
|
||||
"stargazers_count": 10131,
|
||||
"watchers_count": 10131,
|
||||
"language": null,
|
||||
"has_issues": true,
|
||||
"has_projects": false,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 1731,
|
||||
"mirror_url": null,
|
||||
"open_issues_count": 2073,
|
||||
"forks": 1731,
|
||||
"open_issues": 2073,
|
||||
"watchers": 10131,
|
||||
"default_branch": "master"
|
||||
},
|
||||
"organization": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"url": "https://api.github.com/orgs/servo",
|
||||
"repos_url": "https://api.github.com/orgs/servo/repos",
|
||||
"events_url": "https://api.github.com/orgs/servo/events",
|
||||
"hooks_url": "https://api.github.com/orgs/servo/hooks",
|
||||
"issues_url": "https://api.github.com/orgs/servo/issues",
|
||||
"members_url": "https://api.github.com/orgs/servo/members{/member}",
|
||||
"public_members_url": "https://api.github.com/orgs/servo/public_members{/member}",
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"description": "The Servo web browser engine"
|
||||
},
|
||||
"sender": {
|
||||
"login": "jdm",
|
||||
"id": 27658,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/27658?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/jdm",
|
||||
"html_url": "https://github.com/jdm",
|
||||
"followers_url": "https://api.github.com/users/jdm/followers",
|
||||
"following_url": "https://api.github.com/users/jdm/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/jdm/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/jdm/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/jdm/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/jdm/orgs",
|
||||
"repos_url": "https://api.github.com/users/jdm/repos",
|
||||
"events_url": "https://api.github.com/users/jdm/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/jdm/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
}
|
||||
}
|
440
etc/ci/upstream-wpt-changes/tests/opened.json
Normal file
440
etc/ci/upstream-wpt-changes/tests/opened.json
Normal file
|
@ -0,0 +1,440 @@
|
|||
{
|
||||
"action": "opened",
|
||||
"number": 18746,
|
||||
"pull_request": {
|
||||
"url": "https://api.github.com/repos/servo/servo/pulls/18746",
|
||||
"id": 144666315,
|
||||
"html_url": "https://github.com/servo/servo/pull/18746",
|
||||
"diff_url": "https://github.com/servo/servo/pull/18746.diff",
|
||||
"patch_url": "https://github.com/servo/servo/pull/18746.patch",
|
||||
"issue_url": "https://api.github.com/repos/servo/servo/issues/18746",
|
||||
"number": 18746,
|
||||
"state": "open",
|
||||
"locked": false,
|
||||
"title": "This is a test",
|
||||
"user": {
|
||||
"login": "jdm",
|
||||
"id": 27658,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/27658?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/jdm",
|
||||
"html_url": "https://github.com/jdm",
|
||||
"followers_url": "https://api.github.com/users/jdm/followers",
|
||||
"following_url": "https://api.github.com/users/jdm/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/jdm/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/jdm/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/jdm/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/jdm/orgs",
|
||||
"repos_url": "https://api.github.com/users/jdm/repos",
|
||||
"events_url": "https://api.github.com/users/jdm/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/jdm/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"body": "<!-- Please describe your changes on the following line: -->\r\n\r\n\r\n---\r\n<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->\r\n- [ ] `./mach build -d` does not report any errors\r\n- [ ] `./mach test-tidy` does not report any errors\r\n- [ ] These changes fix #__ (github issue number if applicable).\r\n\r\n<!-- Either: -->\r\n- [ ] There are tests for these changes OR\r\n- [ ] These changes do not require tests because _____\r\n\r\n<!-- Also, please make sure that \"Allow edits from maintainers\" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->\r\n\r\n<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->\r\n",
|
||||
"created_at": "2017-10-04T13:16:26Z",
|
||||
"updated_at": "2017-10-04T13:16:26Z",
|
||||
"closed_at": null,
|
||||
"merged_at": null,
|
||||
"merge_commit_sha": null,
|
||||
"assignee": null,
|
||||
"assignees": [
|
||||
|
||||
],
|
||||
"requested_reviewers": [
|
||||
|
||||
],
|
||||
"milestone": null,
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/pulls/18746/commits",
|
||||
"review_comments_url": "https://api.github.com/repos/servo/servo/pulls/18746/comments",
|
||||
"review_comment_url": "https://api.github.com/repos/servo/servo/pulls/comments{/number}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/issues/18746/comments",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/1bb1cd385c4d1928b4f60c4c15906f5318ca2f3f",
|
||||
"head": {
|
||||
"label": "servo:jdm-patch-1",
|
||||
"ref": "jdm-patch-1",
|
||||
"sha": "1bb1cd385c4d1928b4f60c4c15906f5318ca2f3f",
|
||||
"user": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"repo": {
|
||||
"id": 3390243,
|
||||
"name": "servo",
|
||||
"full_name": "servo/servo",
|
||||
"owner": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"created_at": "2012-02-08T19:07:25Z",
|
||||
"updated_at": "2017-10-04T11:44:53Z",
|
||||
"pushed_at": "2017-10-04T13:16:20Z",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 370069,
|
||||
"stargazers_count": 10131,
|
||||
"watchers_count": 10131,
|
||||
"language": null,
|
||||
"has_issues": true,
|
||||
"has_projects": false,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 1731,
|
||||
"mirror_url": null,
|
||||
"open_issues_count": 2073,
|
||||
"forks": 1731,
|
||||
"open_issues": 2073,
|
||||
"watchers": 10131,
|
||||
"default_branch": "master"
|
||||
}
|
||||
},
|
||||
"base": {
|
||||
"label": "servo:master",
|
||||
"ref": "master",
|
||||
"sha": "3b7a82b8c743bcbbefb6f25defd4cc132c25c348",
|
||||
"user": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"repo": {
|
||||
"id": 3390243,
|
||||
"name": "servo",
|
||||
"full_name": "servo/servo",
|
||||
"owner": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"created_at": "2012-02-08T19:07:25Z",
|
||||
"updated_at": "2017-10-04T11:44:53Z",
|
||||
"pushed_at": "2017-10-04T13:16:20Z",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 370069,
|
||||
"stargazers_count": 10131,
|
||||
"watchers_count": 10131,
|
||||
"language": null,
|
||||
"has_issues": true,
|
||||
"has_projects": false,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 1731,
|
||||
"mirror_url": null,
|
||||
"open_issues_count": 2073,
|
||||
"forks": 1731,
|
||||
"open_issues": 2073,
|
||||
"watchers": 10131,
|
||||
"default_branch": "master"
|
||||
}
|
||||
},
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/18746"
|
||||
},
|
||||
"html": {
|
||||
"href": "https://github.com/servo/servo/pull/18746"
|
||||
},
|
||||
"issue": {
|
||||
"href": "https://api.github.com/repos/servo/servo/issues/18746"
|
||||
},
|
||||
"comments": {
|
||||
"href": "https://api.github.com/repos/servo/servo/issues/18746/comments"
|
||||
},
|
||||
"review_comments": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/18746/comments"
|
||||
},
|
||||
"review_comment": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/comments{/number}"
|
||||
},
|
||||
"commits": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/18746/commits"
|
||||
},
|
||||
"statuses": {
|
||||
"href": "https://api.github.com/repos/servo/servo/statuses/1bb1cd385c4d1928b4f60c4c15906f5318ca2f3f"
|
||||
}
|
||||
},
|
||||
"author_association": "MEMBER",
|
||||
"merged": false,
|
||||
"mergeable": null,
|
||||
"rebaseable": null,
|
||||
"mergeable_state": "unknown",
|
||||
"merged_by": null,
|
||||
"comments": 0,
|
||||
"review_comments": 0,
|
||||
"maintainer_can_modify": false,
|
||||
"commits": 1,
|
||||
"additions": 2,
|
||||
"deletions": 1,
|
||||
"changed_files": 1
|
||||
},
|
||||
"repository": {
|
||||
"id": 3390243,
|
||||
"name": "servo",
|
||||
"full_name": "servo/servo",
|
||||
"owner": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"created_at": "2012-02-08T19:07:25Z",
|
||||
"updated_at": "2017-10-04T11:44:53Z",
|
||||
"pushed_at": "2017-10-04T13:16:20Z",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 370069,
|
||||
"stargazers_count": 10131,
|
||||
"watchers_count": 10131,
|
||||
"language": null,
|
||||
"has_issues": true,
|
||||
"has_projects": false,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 1731,
|
||||
"mirror_url": null,
|
||||
"open_issues_count": 2073,
|
||||
"forks": 1731,
|
||||
"open_issues": 2073,
|
||||
"watchers": 10131,
|
||||
"default_branch": "master"
|
||||
},
|
||||
"organization": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"url": "https://api.github.com/orgs/servo",
|
||||
"repos_url": "https://api.github.com/orgs/servo/repos",
|
||||
"events_url": "https://api.github.com/orgs/servo/events",
|
||||
"hooks_url": "https://api.github.com/orgs/servo/hooks",
|
||||
"issues_url": "https://api.github.com/orgs/servo/issues",
|
||||
"members_url": "https://api.github.com/orgs/servo/members{/member}",
|
||||
"public_members_url": "https://api.github.com/orgs/servo/public_members{/member}",
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"description": "The Servo web browser engine"
|
||||
},
|
||||
"sender": {
|
||||
"login": "jdm",
|
||||
"id": 27658,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/27658?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/jdm",
|
||||
"html_url": "https://github.com/jdm",
|
||||
"followers_url": "https://api.github.com/users/jdm/followers",
|
||||
"following_url": "https://api.github.com/users/jdm/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/jdm/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/jdm/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/jdm/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/jdm/orgs",
|
||||
"repos_url": "https://api.github.com/users/jdm/repos",
|
||||
"events_url": "https://api.github.com/users/jdm/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/jdm/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
}
|
||||
}
|
1
etc/ci/upstream-wpt-changes/tests/servo-mock/README.md
Normal file
1
etc/ci/upstream-wpt-changes/tests/servo-mock/README.md
Normal file
|
@ -0,0 +1 @@
|
|||
This is a repository designed to superficially resemble the Servo repository.
|
|
@ -0,0 +1,3 @@
|
|||
<html>
|
||||
<h1>this is a mozilla-specific test</h1>
|
||||
</html>
|
|
@ -0,0 +1,10 @@
|
|||
# Copyright 2023 The Servo Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
print('this is a python file')
|
|
@ -0,0 +1,3 @@
|
|||
<html>
|
||||
<h1>css test!</h1>
|
||||
</html>
|
|
@ -0,0 +1,3 @@
|
|||
<html>
|
||||
<h1>css test!</h1>
|
||||
</html>
|
|
@ -0,0 +1,16 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Fetch: handling Location header during redirection</title>
|
||||
<meta name="author" title="Canon Research France" href="https://www.crf.canon.fr">
|
||||
<meta name="help" href="https://fetch.spec.whatwg.org/#http-network-or-cache-fetch">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script src="../resources/utils.js"></script>
|
||||
<script src="redirect-location.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
<html>
|
||||
<h1>this is a test file</h1>
|
||||
</html>
|
499
etc/ci/upstream-wpt-changes/tests/synchronize-multiple.json
Normal file
499
etc/ci/upstream-wpt-changes/tests/synchronize-multiple.json
Normal file
|
@ -0,0 +1,499 @@
|
|||
{
|
||||
"action": "synchronize",
|
||||
"number": 19612,
|
||||
"pull_request": {
|
||||
"url": "https://api.github.com/repos/servo/servo/pulls/19612",
|
||||
"id": 159474132,
|
||||
"html_url": "https://github.com/servo/servo/pull/19612",
|
||||
"diff_url": "https://github.com/servo/servo/pull/19612.diff",
|
||||
"patch_url": "https://github.com/servo/servo/pull/19612.patch",
|
||||
"issue_url": "https://api.github.com/repos/servo/servo/issues/19612",
|
||||
"number": 19612,
|
||||
"state": "open",
|
||||
"locked": false,
|
||||
"title": "deny warnings",
|
||||
"user": {
|
||||
"login": "tigercosmos",
|
||||
"id": 18013815,
|
||||
"avatar_url": "https://avatars0.githubusercontent.com/u/18013815?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/tigercosmos",
|
||||
"html_url": "https://github.com/tigercosmos",
|
||||
"followers_url": "https://api.github.com/users/tigercosmos/followers",
|
||||
"following_url": "https://api.github.com/users/tigercosmos/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/tigercosmos/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/tigercosmos/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/tigercosmos/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/tigercosmos/orgs",
|
||||
"repos_url": "https://api.github.com/users/tigercosmos/repos",
|
||||
"events_url": "https://api.github.com/users/tigercosmos/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/tigercosmos/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"body": "<!-- Please describe your changes on the following line: -->\r\ndeny warnings\r\nrelated to #19573\r\n\r\n---\r\n<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->\r\n- [ ] `./mach build -d` does not report any errors\r\n- [ ] `./mach test-tidy` does not report any errors\r\n- [ ] These changes fix #19572 (github issue number if applicable).\r\n\r\n<!-- Either: -->\r\n- [ ] There are tests for these changes OR\r\n- [ ] These changes do not require tests because _____\r\n\r\n<!-- Also, please make sure that \"Allow edits from maintainers\" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->\r\n\r\n<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->\n\n<!-- Reviewable:start -->\n---\nThis change is [<img src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.io/reviews/servo/servo/19612)\n<!-- Reviewable:end -->\n",
|
||||
"created_at": "2017-12-20T17:24:41Z",
|
||||
"updated_at": "2017-12-21T13:34:10Z",
|
||||
"closed_at": null,
|
||||
"merged_at": null,
|
||||
"merge_commit_sha": "b584f06079f4d4dc10fbc0e9bbef848b5aeb0d15",
|
||||
"assignee": {
|
||||
"login": "SimonSapin",
|
||||
"id": 291359,
|
||||
"avatar_url": "https://avatars0.githubusercontent.com/u/291359?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/SimonSapin",
|
||||
"html_url": "https://github.com/SimonSapin",
|
||||
"followers_url": "https://api.github.com/users/SimonSapin/followers",
|
||||
"following_url": "https://api.github.com/users/SimonSapin/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/SimonSapin/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/SimonSapin/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/SimonSapin/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/SimonSapin/orgs",
|
||||
"repos_url": "https://api.github.com/users/SimonSapin/repos",
|
||||
"events_url": "https://api.github.com/users/SimonSapin/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/SimonSapin/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"assignees": [
|
||||
{
|
||||
"login": "SimonSapin",
|
||||
"id": 291359,
|
||||
"avatar_url": "https://avatars0.githubusercontent.com/u/291359?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/SimonSapin",
|
||||
"html_url": "https://github.com/SimonSapin",
|
||||
"followers_url": "https://api.github.com/users/SimonSapin/followers",
|
||||
"following_url": "https://api.github.com/users/SimonSapin/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/SimonSapin/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/SimonSapin/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/SimonSapin/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/SimonSapin/orgs",
|
||||
"repos_url": "https://api.github.com/users/SimonSapin/repos",
|
||||
"events_url": "https://api.github.com/users/SimonSapin/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/SimonSapin/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
}
|
||||
],
|
||||
"requested_reviewers": [
|
||||
|
||||
],
|
||||
"milestone": null,
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/pulls/19612/commits",
|
||||
"review_comments_url": "https://api.github.com/repos/servo/servo/pulls/19612/comments",
|
||||
"review_comment_url": "https://api.github.com/repos/servo/servo/pulls/comments{/number}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/issues/19612/comments",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/ab19bd1b6438c8e3aa0e5ab36dc3a6d5b14c12dd",
|
||||
"head": {
|
||||
"label": "tigercosmos:o1",
|
||||
"ref": "o1",
|
||||
"sha": "ab19bd1b6438c8e3aa0e5ab36dc3a6d5b14c12dd",
|
||||
"user": {
|
||||
"login": "tigercosmos",
|
||||
"id": 18013815,
|
||||
"avatar_url": "https://avatars0.githubusercontent.com/u/18013815?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/tigercosmos",
|
||||
"html_url": "https://github.com/tigercosmos",
|
||||
"followers_url": "https://api.github.com/users/tigercosmos/followers",
|
||||
"following_url": "https://api.github.com/users/tigercosmos/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/tigercosmos/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/tigercosmos/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/tigercosmos/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/tigercosmos/orgs",
|
||||
"repos_url": "https://api.github.com/users/tigercosmos/repos",
|
||||
"events_url": "https://api.github.com/users/tigercosmos/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/tigercosmos/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"repo": {
|
||||
"id": 100714943,
|
||||
"name": "servo",
|
||||
"full_name": "tigercosmos/servo",
|
||||
"owner": {
|
||||
"login": "tigercosmos",
|
||||
"id": 18013815,
|
||||
"avatar_url": "https://avatars0.githubusercontent.com/u/18013815?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/tigercosmos",
|
||||
"html_url": "https://github.com/tigercosmos",
|
||||
"followers_url": "https://api.github.com/users/tigercosmos/followers",
|
||||
"following_url": "https://api.github.com/users/tigercosmos/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/tigercosmos/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/tigercosmos/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/tigercosmos/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/tigercosmos/orgs",
|
||||
"repos_url": "https://api.github.com/users/tigercosmos/repos",
|
||||
"events_url": "https://api.github.com/users/tigercosmos/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/tigercosmos/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/tigercosmos/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": true,
|
||||
"url": "https://api.github.com/repos/tigercosmos/servo",
|
||||
"forks_url": "https://api.github.com/repos/tigercosmos/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/tigercosmos/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/tigercosmos/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/tigercosmos/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/tigercosmos/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/tigercosmos/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/tigercosmos/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/tigercosmos/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/tigercosmos/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/tigercosmos/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/tigercosmos/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/tigercosmos/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/tigercosmos/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/tigercosmos/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/tigercosmos/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/tigercosmos/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/tigercosmos/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/tigercosmos/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/tigercosmos/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/tigercosmos/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/tigercosmos/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/tigercosmos/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/tigercosmos/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/tigercosmos/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/tigercosmos/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/tigercosmos/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/tigercosmos/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/tigercosmos/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/tigercosmos/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/tigercosmos/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/tigercosmos/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/tigercosmos/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/tigercosmos/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/tigercosmos/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/tigercosmos/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/tigercosmos/servo/deployments",
|
||||
"created_at": "2017-08-18T13:31:45Z",
|
||||
"updated_at": "2017-11-05T13:18:26Z",
|
||||
"pushed_at": "2017-12-21T13:34:10Z",
|
||||
"git_url": "git://github.com/tigercosmos/servo.git",
|
||||
"ssh_url": "git@github.com:tigercosmos/servo.git",
|
||||
"clone_url": "https://github.com/tigercosmos/servo.git",
|
||||
"svn_url": "https://github.com/tigercosmos/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 321860,
|
||||
"stargazers_count": 0,
|
||||
"watchers_count": 0,
|
||||
"language": "Rust",
|
||||
"has_issues": false,
|
||||
"has_projects": true,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 0,
|
||||
"mirror_url": null,
|
||||
"archived": false,
|
||||
"open_issues_count": 0,
|
||||
"license": {
|
||||
"key": "mpl-2.0",
|
||||
"name": "Mozilla Public License 2.0",
|
||||
"spdx_id": "MPL-2.0",
|
||||
"url": "https://api.github.com/licenses/mpl-2.0"
|
||||
},
|
||||
"forks": 0,
|
||||
"open_issues": 0,
|
||||
"watchers": 0,
|
||||
"default_branch": "master"
|
||||
}
|
||||
},
|
||||
"base": {
|
||||
"label": "servo:master",
|
||||
"ref": "master",
|
||||
"sha": "df0f9ad7ae6f10ffeaf5d40f4a2a25abadabf9cc",
|
||||
"user": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"repo": {
|
||||
"id": 3390243,
|
||||
"name": "servo",
|
||||
"full_name": "servo/servo",
|
||||
"owner": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"created_at": "2012-02-08T19:07:25Z",
|
||||
"updated_at": "2017-12-21T09:43:03Z",
|
||||
"pushed_at": "2017-12-21T13:12:14Z",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 402429,
|
||||
"stargazers_count": 10867,
|
||||
"watchers_count": 10867,
|
||||
"language": "Rust",
|
||||
"has_issues": true,
|
||||
"has_projects": false,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 1810,
|
||||
"mirror_url": null,
|
||||
"archived": false,
|
||||
"open_issues_count": 2027,
|
||||
"license": {
|
||||
"key": "mpl-2.0",
|
||||
"name": "Mozilla Public License 2.0",
|
||||
"spdx_id": "MPL-2.0",
|
||||
"url": "https://api.github.com/licenses/mpl-2.0"
|
||||
},
|
||||
"forks": 1810,
|
||||
"open_issues": 2027,
|
||||
"watchers": 10867,
|
||||
"default_branch": "master"
|
||||
}
|
||||
},
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/19612"
|
||||
},
|
||||
"html": {
|
||||
"href": "https://github.com/servo/servo/pull/19612"
|
||||
},
|
||||
"issue": {
|
||||
"href": "https://api.github.com/repos/servo/servo/issues/19612"
|
||||
},
|
||||
"comments": {
|
||||
"href": "https://api.github.com/repos/servo/servo/issues/19612/comments"
|
||||
},
|
||||
"review_comments": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/19612/comments"
|
||||
},
|
||||
"review_comment": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/comments{/number}"
|
||||
},
|
||||
"commits": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/19612/commits"
|
||||
},
|
||||
"statuses": {
|
||||
"href": "https://api.github.com/repos/servo/servo/statuses/ab19bd1b6438c8e3aa0e5ab36dc3a6d5b14c12dd"
|
||||
}
|
||||
},
|
||||
"author_association": "CONTRIBUTOR",
|
||||
"merged": false,
|
||||
"mergeable": null,
|
||||
"rebaseable": null,
|
||||
"mergeable_state": "unknown",
|
||||
"merged_by": null,
|
||||
"comments": 61,
|
||||
"review_comments": 0,
|
||||
"maintainer_can_modify": true,
|
||||
"commits": 3,
|
||||
"additions": 19,
|
||||
"deletions": 20,
|
||||
"changed_files": 8
|
||||
},
|
||||
"before": "537b653d9044d2f265d5790ba3761cea539a57f6",
|
||||
"after": "ab19bd1b6438c8e3aa0e5ab36dc3a6d5b14c12dd",
|
||||
"repository": {
|
||||
"id": 3390243,
|
||||
"name": "servo",
|
||||
"full_name": "servo/servo",
|
||||
"owner": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"created_at": "2012-02-08T19:07:25Z",
|
||||
"updated_at": "2017-12-21T09:43:03Z",
|
||||
"pushed_at": "2017-12-21T13:12:14Z",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 402429,
|
||||
"stargazers_count": 10867,
|
||||
"watchers_count": 10867,
|
||||
"language": "Rust",
|
||||
"has_issues": true,
|
||||
"has_projects": false,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 1810,
|
||||
"mirror_url": null,
|
||||
"archived": false,
|
||||
"open_issues_count": 2027,
|
||||
"license": {
|
||||
"key": "mpl-2.0",
|
||||
"name": "Mozilla Public License 2.0",
|
||||
"spdx_id": "MPL-2.0",
|
||||
"url": "https://api.github.com/licenses/mpl-2.0"
|
||||
},
|
||||
"forks": 1810,
|
||||
"open_issues": 2027,
|
||||
"watchers": 10867,
|
||||
"default_branch": "master"
|
||||
},
|
||||
"organization": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"url": "https://api.github.com/orgs/servo",
|
||||
"repos_url": "https://api.github.com/orgs/servo/repos",
|
||||
"events_url": "https://api.github.com/orgs/servo/events",
|
||||
"hooks_url": "https://api.github.com/orgs/servo/hooks",
|
||||
"issues_url": "https://api.github.com/orgs/servo/issues",
|
||||
"members_url": "https://api.github.com/orgs/servo/members{/member}",
|
||||
"public_members_url": "https://api.github.com/orgs/servo/public_members{/member}",
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"description": "The Servo web browser engine"
|
||||
},
|
||||
"sender": {
|
||||
"login": "tigercosmos",
|
||||
"id": 18013815,
|
||||
"avatar_url": "https://avatars0.githubusercontent.com/u/18013815?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/tigercosmos",
|
||||
"html_url": "https://github.com/tigercosmos",
|
||||
"followers_url": "https://api.github.com/users/tigercosmos/followers",
|
||||
"following_url": "https://api.github.com/users/tigercosmos/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/tigercosmos/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/tigercosmos/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/tigercosmos/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/tigercosmos/orgs",
|
||||
"repos_url": "https://api.github.com/users/tigercosmos/repos",
|
||||
"events_url": "https://api.github.com/users/tigercosmos/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/tigercosmos/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
}
|
||||
}
|
499
etc/ci/upstream-wpt-changes/tests/synchronize.json
Normal file
499
etc/ci/upstream-wpt-changes/tests/synchronize.json
Normal file
|
@ -0,0 +1,499 @@
|
|||
{
|
||||
"action": "synchronize",
|
||||
"number": 19612,
|
||||
"pull_request": {
|
||||
"url": "https://api.github.com/repos/servo/servo/pulls/19612",
|
||||
"id": 159474132,
|
||||
"html_url": "https://github.com/servo/servo/pull/19612",
|
||||
"diff_url": "https://github.com/servo/servo/pull/19612.diff",
|
||||
"patch_url": "https://github.com/servo/servo/pull/19612.patch",
|
||||
"issue_url": "https://api.github.com/repos/servo/servo/issues/19612",
|
||||
"number": 19612,
|
||||
"state": "open",
|
||||
"locked": false,
|
||||
"title": "deny warnings",
|
||||
"user": {
|
||||
"login": "tigercosmos",
|
||||
"id": 18013815,
|
||||
"avatar_url": "https://avatars0.githubusercontent.com/u/18013815?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/tigercosmos",
|
||||
"html_url": "https://github.com/tigercosmos",
|
||||
"followers_url": "https://api.github.com/users/tigercosmos/followers",
|
||||
"following_url": "https://api.github.com/users/tigercosmos/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/tigercosmos/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/tigercosmos/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/tigercosmos/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/tigercosmos/orgs",
|
||||
"repos_url": "https://api.github.com/users/tigercosmos/repos",
|
||||
"events_url": "https://api.github.com/users/tigercosmos/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/tigercosmos/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"body": "<!-- Please describe your changes on the following line: -->\r\ndeny warnings\r\nrelated to #19573\r\n\r\n---\r\n<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->\r\n- [ ] `./mach build -d` does not report any errors\r\n- [ ] `./mach test-tidy` does not report any errors\r\n- [ ] These changes fix #19572 (github issue number if applicable).\r\n\r\n<!-- Either: -->\r\n- [ ] There are tests for these changes OR\r\n- [ ] These changes do not require tests because _____\r\n\r\n<!-- Also, please make sure that \"Allow edits from maintainers\" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->\r\n\r\n<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->\n\n<!-- Reviewable:start -->\n---\nThis change is [<img src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.io/reviews/servo/servo/19612)\n<!-- Reviewable:end -->\n",
|
||||
"created_at": "2017-12-20T17:24:41Z",
|
||||
"updated_at": "2017-12-21T13:34:10Z",
|
||||
"closed_at": null,
|
||||
"merged_at": null,
|
||||
"merge_commit_sha": "b584f06079f4d4dc10fbc0e9bbef848b5aeb0d15",
|
||||
"assignee": {
|
||||
"login": "SimonSapin",
|
||||
"id": 291359,
|
||||
"avatar_url": "https://avatars0.githubusercontent.com/u/291359?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/SimonSapin",
|
||||
"html_url": "https://github.com/SimonSapin",
|
||||
"followers_url": "https://api.github.com/users/SimonSapin/followers",
|
||||
"following_url": "https://api.github.com/users/SimonSapin/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/SimonSapin/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/SimonSapin/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/SimonSapin/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/SimonSapin/orgs",
|
||||
"repos_url": "https://api.github.com/users/SimonSapin/repos",
|
||||
"events_url": "https://api.github.com/users/SimonSapin/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/SimonSapin/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"assignees": [
|
||||
{
|
||||
"login": "SimonSapin",
|
||||
"id": 291359,
|
||||
"avatar_url": "https://avatars0.githubusercontent.com/u/291359?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/SimonSapin",
|
||||
"html_url": "https://github.com/SimonSapin",
|
||||
"followers_url": "https://api.github.com/users/SimonSapin/followers",
|
||||
"following_url": "https://api.github.com/users/SimonSapin/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/SimonSapin/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/SimonSapin/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/SimonSapin/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/SimonSapin/orgs",
|
||||
"repos_url": "https://api.github.com/users/SimonSapin/repos",
|
||||
"events_url": "https://api.github.com/users/SimonSapin/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/SimonSapin/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
}
|
||||
],
|
||||
"requested_reviewers": [
|
||||
|
||||
],
|
||||
"milestone": null,
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/pulls/19612/commits",
|
||||
"review_comments_url": "https://api.github.com/repos/servo/servo/pulls/19612/comments",
|
||||
"review_comment_url": "https://api.github.com/repos/servo/servo/pulls/comments{/number}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/issues/19612/comments",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/ab19bd1b6438c8e3aa0e5ab36dc3a6d5b14c12dd",
|
||||
"head": {
|
||||
"label": "tigercosmos:o1",
|
||||
"ref": "o1",
|
||||
"sha": "ab19bd1b6438c8e3aa0e5ab36dc3a6d5b14c12dd",
|
||||
"user": {
|
||||
"login": "tigercosmos",
|
||||
"id": 18013815,
|
||||
"avatar_url": "https://avatars0.githubusercontent.com/u/18013815?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/tigercosmos",
|
||||
"html_url": "https://github.com/tigercosmos",
|
||||
"followers_url": "https://api.github.com/users/tigercosmos/followers",
|
||||
"following_url": "https://api.github.com/users/tigercosmos/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/tigercosmos/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/tigercosmos/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/tigercosmos/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/tigercosmos/orgs",
|
||||
"repos_url": "https://api.github.com/users/tigercosmos/repos",
|
||||
"events_url": "https://api.github.com/users/tigercosmos/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/tigercosmos/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"repo": {
|
||||
"id": 100714943,
|
||||
"name": "servo",
|
||||
"full_name": "tigercosmos/servo",
|
||||
"owner": {
|
||||
"login": "tigercosmos",
|
||||
"id": 18013815,
|
||||
"avatar_url": "https://avatars0.githubusercontent.com/u/18013815?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/tigercosmos",
|
||||
"html_url": "https://github.com/tigercosmos",
|
||||
"followers_url": "https://api.github.com/users/tigercosmos/followers",
|
||||
"following_url": "https://api.github.com/users/tigercosmos/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/tigercosmos/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/tigercosmos/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/tigercosmos/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/tigercosmos/orgs",
|
||||
"repos_url": "https://api.github.com/users/tigercosmos/repos",
|
||||
"events_url": "https://api.github.com/users/tigercosmos/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/tigercosmos/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/tigercosmos/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": true,
|
||||
"url": "https://api.github.com/repos/tigercosmos/servo",
|
||||
"forks_url": "https://api.github.com/repos/tigercosmos/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/tigercosmos/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/tigercosmos/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/tigercosmos/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/tigercosmos/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/tigercosmos/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/tigercosmos/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/tigercosmos/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/tigercosmos/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/tigercosmos/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/tigercosmos/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/tigercosmos/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/tigercosmos/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/tigercosmos/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/tigercosmos/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/tigercosmos/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/tigercosmos/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/tigercosmos/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/tigercosmos/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/tigercosmos/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/tigercosmos/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/tigercosmos/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/tigercosmos/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/tigercosmos/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/tigercosmos/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/tigercosmos/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/tigercosmos/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/tigercosmos/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/tigercosmos/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/tigercosmos/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/tigercosmos/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/tigercosmos/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/tigercosmos/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/tigercosmos/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/tigercosmos/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/tigercosmos/servo/deployments",
|
||||
"created_at": "2017-08-18T13:31:45Z",
|
||||
"updated_at": "2017-11-05T13:18:26Z",
|
||||
"pushed_at": "2017-12-21T13:34:10Z",
|
||||
"git_url": "git://github.com/tigercosmos/servo.git",
|
||||
"ssh_url": "git@github.com:tigercosmos/servo.git",
|
||||
"clone_url": "https://github.com/tigercosmos/servo.git",
|
||||
"svn_url": "https://github.com/tigercosmos/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 321860,
|
||||
"stargazers_count": 0,
|
||||
"watchers_count": 0,
|
||||
"language": "Rust",
|
||||
"has_issues": false,
|
||||
"has_projects": true,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 0,
|
||||
"mirror_url": null,
|
||||
"archived": false,
|
||||
"open_issues_count": 0,
|
||||
"license": {
|
||||
"key": "mpl-2.0",
|
||||
"name": "Mozilla Public License 2.0",
|
||||
"spdx_id": "MPL-2.0",
|
||||
"url": "https://api.github.com/licenses/mpl-2.0"
|
||||
},
|
||||
"forks": 0,
|
||||
"open_issues": 0,
|
||||
"watchers": 0,
|
||||
"default_branch": "master"
|
||||
}
|
||||
},
|
||||
"base": {
|
||||
"label": "servo:master",
|
||||
"ref": "master",
|
||||
"sha": "df0f9ad7ae6f10ffeaf5d40f4a2a25abadabf9cc",
|
||||
"user": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"repo": {
|
||||
"id": 3390243,
|
||||
"name": "servo",
|
||||
"full_name": "servo/servo",
|
||||
"owner": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"created_at": "2012-02-08T19:07:25Z",
|
||||
"updated_at": "2017-12-21T09:43:03Z",
|
||||
"pushed_at": "2017-12-21T13:12:14Z",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 402429,
|
||||
"stargazers_count": 10867,
|
||||
"watchers_count": 10867,
|
||||
"language": "Rust",
|
||||
"has_issues": true,
|
||||
"has_projects": false,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 1810,
|
||||
"mirror_url": null,
|
||||
"archived": false,
|
||||
"open_issues_count": 2027,
|
||||
"license": {
|
||||
"key": "mpl-2.0",
|
||||
"name": "Mozilla Public License 2.0",
|
||||
"spdx_id": "MPL-2.0",
|
||||
"url": "https://api.github.com/licenses/mpl-2.0"
|
||||
},
|
||||
"forks": 1810,
|
||||
"open_issues": 2027,
|
||||
"watchers": 10867,
|
||||
"default_branch": "master"
|
||||
}
|
||||
},
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/19612"
|
||||
},
|
||||
"html": {
|
||||
"href": "https://github.com/servo/servo/pull/19612"
|
||||
},
|
||||
"issue": {
|
||||
"href": "https://api.github.com/repos/servo/servo/issues/19612"
|
||||
},
|
||||
"comments": {
|
||||
"href": "https://api.github.com/repos/servo/servo/issues/19612/comments"
|
||||
},
|
||||
"review_comments": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/19612/comments"
|
||||
},
|
||||
"review_comment": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/comments{/number}"
|
||||
},
|
||||
"commits": {
|
||||
"href": "https://api.github.com/repos/servo/servo/pulls/19612/commits"
|
||||
},
|
||||
"statuses": {
|
||||
"href": "https://api.github.com/repos/servo/servo/statuses/ab19bd1b6438c8e3aa0e5ab36dc3a6d5b14c12dd"
|
||||
}
|
||||
},
|
||||
"author_association": "CONTRIBUTOR",
|
||||
"merged": false,
|
||||
"mergeable": null,
|
||||
"rebaseable": null,
|
||||
"mergeable_state": "unknown",
|
||||
"merged_by": null,
|
||||
"comments": 61,
|
||||
"review_comments": 0,
|
||||
"maintainer_can_modify": true,
|
||||
"commits": 1,
|
||||
"additions": 19,
|
||||
"deletions": 20,
|
||||
"changed_files": 8
|
||||
},
|
||||
"before": "537b653d9044d2f265d5790ba3761cea539a57f6",
|
||||
"after": "ab19bd1b6438c8e3aa0e5ab36dc3a6d5b14c12dd",
|
||||
"repository": {
|
||||
"id": 3390243,
|
||||
"name": "servo",
|
||||
"full_name": "servo/servo",
|
||||
"owner": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/servo",
|
||||
"html_url": "https://github.com/servo",
|
||||
"followers_url": "https://api.github.com/users/servo/followers",
|
||||
"following_url": "https://api.github.com/users/servo/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/servo/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/servo/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/servo/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/servo/orgs",
|
||||
"repos_url": "https://api.github.com/users/servo/repos",
|
||||
"events_url": "https://api.github.com/users/servo/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/servo/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/servo/servo",
|
||||
"description": "The Servo Browser Engine",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/servo/servo",
|
||||
"forks_url": "https://api.github.com/repos/servo/servo/forks",
|
||||
"keys_url": "https://api.github.com/repos/servo/servo/keys{/key_id}",
|
||||
"collaborators_url": "https://api.github.com/repos/servo/servo/collaborators{/collaborator}",
|
||||
"teams_url": "https://api.github.com/repos/servo/servo/teams",
|
||||
"hooks_url": "https://api.github.com/repos/servo/servo/hooks",
|
||||
"issue_events_url": "https://api.github.com/repos/servo/servo/issues/events{/number}",
|
||||
"events_url": "https://api.github.com/repos/servo/servo/events",
|
||||
"assignees_url": "https://api.github.com/repos/servo/servo/assignees{/user}",
|
||||
"branches_url": "https://api.github.com/repos/servo/servo/branches{/branch}",
|
||||
"tags_url": "https://api.github.com/repos/servo/servo/tags",
|
||||
"blobs_url": "https://api.github.com/repos/servo/servo/git/blobs{/sha}",
|
||||
"git_tags_url": "https://api.github.com/repos/servo/servo/git/tags{/sha}",
|
||||
"git_refs_url": "https://api.github.com/repos/servo/servo/git/refs{/sha}",
|
||||
"trees_url": "https://api.github.com/repos/servo/servo/git/trees{/sha}",
|
||||
"statuses_url": "https://api.github.com/repos/servo/servo/statuses/{sha}",
|
||||
"languages_url": "https://api.github.com/repos/servo/servo/languages",
|
||||
"stargazers_url": "https://api.github.com/repos/servo/servo/stargazers",
|
||||
"contributors_url": "https://api.github.com/repos/servo/servo/contributors",
|
||||
"subscribers_url": "https://api.github.com/repos/servo/servo/subscribers",
|
||||
"subscription_url": "https://api.github.com/repos/servo/servo/subscription",
|
||||
"commits_url": "https://api.github.com/repos/servo/servo/commits{/sha}",
|
||||
"git_commits_url": "https://api.github.com/repos/servo/servo/git/commits{/sha}",
|
||||
"comments_url": "https://api.github.com/repos/servo/servo/comments{/number}",
|
||||
"issue_comment_url": "https://api.github.com/repos/servo/servo/issues/comments{/number}",
|
||||
"contents_url": "https://api.github.com/repos/servo/servo/contents/{+path}",
|
||||
"compare_url": "https://api.github.com/repos/servo/servo/compare/{base}...{head}",
|
||||
"merges_url": "https://api.github.com/repos/servo/servo/merges",
|
||||
"archive_url": "https://api.github.com/repos/servo/servo/{archive_format}{/ref}",
|
||||
"downloads_url": "https://api.github.com/repos/servo/servo/downloads",
|
||||
"issues_url": "https://api.github.com/repos/servo/servo/issues{/number}",
|
||||
"pulls_url": "https://api.github.com/repos/servo/servo/pulls{/number}",
|
||||
"milestones_url": "https://api.github.com/repos/servo/servo/milestones{/number}",
|
||||
"notifications_url": "https://api.github.com/repos/servo/servo/notifications{?since,all,participating}",
|
||||
"labels_url": "https://api.github.com/repos/servo/servo/labels{/name}",
|
||||
"releases_url": "https://api.github.com/repos/servo/servo/releases{/id}",
|
||||
"deployments_url": "https://api.github.com/repos/servo/servo/deployments",
|
||||
"created_at": "2012-02-08T19:07:25Z",
|
||||
"updated_at": "2017-12-21T09:43:03Z",
|
||||
"pushed_at": "2017-12-21T13:12:14Z",
|
||||
"git_url": "git://github.com/servo/servo.git",
|
||||
"ssh_url": "git@github.com:servo/servo.git",
|
||||
"clone_url": "https://github.com/servo/servo.git",
|
||||
"svn_url": "https://github.com/servo/servo",
|
||||
"homepage": "https://servo.org/",
|
||||
"size": 402429,
|
||||
"stargazers_count": 10867,
|
||||
"watchers_count": 10867,
|
||||
"language": "Rust",
|
||||
"has_issues": true,
|
||||
"has_projects": false,
|
||||
"has_downloads": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"forks_count": 1810,
|
||||
"mirror_url": null,
|
||||
"archived": false,
|
||||
"open_issues_count": 2027,
|
||||
"license": {
|
||||
"key": "mpl-2.0",
|
||||
"name": "Mozilla Public License 2.0",
|
||||
"spdx_id": "MPL-2.0",
|
||||
"url": "https://api.github.com/licenses/mpl-2.0"
|
||||
},
|
||||
"forks": 1810,
|
||||
"open_issues": 2027,
|
||||
"watchers": 10867,
|
||||
"default_branch": "master"
|
||||
},
|
||||
"organization": {
|
||||
"login": "servo",
|
||||
"id": 2566135,
|
||||
"url": "https://api.github.com/orgs/servo",
|
||||
"repos_url": "https://api.github.com/orgs/servo/repos",
|
||||
"events_url": "https://api.github.com/orgs/servo/events",
|
||||
"hooks_url": "https://api.github.com/orgs/servo/hooks",
|
||||
"issues_url": "https://api.github.com/orgs/servo/issues",
|
||||
"members_url": "https://api.github.com/orgs/servo/members{/member}",
|
||||
"public_members_url": "https://api.github.com/orgs/servo/public_members{/member}",
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/2566135?v=4",
|
||||
"description": "The Servo web browser engine"
|
||||
},
|
||||
"sender": {
|
||||
"login": "tigercosmos",
|
||||
"id": 18013815,
|
||||
"avatar_url": "https://avatars0.githubusercontent.com/u/18013815?v=4",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/tigercosmos",
|
||||
"html_url": "https://github.com/tigercosmos",
|
||||
"followers_url": "https://api.github.com/users/tigercosmos/followers",
|
||||
"following_url": "https://api.github.com/users/tigercosmos/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/tigercosmos/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/tigercosmos/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/tigercosmos/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/tigercosmos/orgs",
|
||||
"repos_url": "https://api.github.com/users/tigercosmos/repos",
|
||||
"events_url": "https://api.github.com/users/tigercosmos/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/tigercosmos/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
<html>
|
||||
<h1>css test!</h1>
|
||||
</html>
|
|
@ -0,0 +1,16 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Fetch: handling Location header during redirection</title>
|
||||
<meta name="author" title="Canon Research France" href="https://www.crf.canon.fr">
|
||||
<meta name="help" href="https://fetch.spec.whatwg.org/#http-network-or-cache-fetch">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script src="../resources/utils.js"></script>
|
||||
<script src="redirect-location.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
3
etc/ci/upstream-wpt-changes/tests/wpt-mock/test.html
Normal file
3
etc/ci/upstream-wpt-changes/tests/wpt-mock/test.html
Normal file
|
@ -0,0 +1,3 @@
|
|||
<html>
|
||||
<h1>this is a test file</h1>
|
||||
</html>
|
9
etc/ci/upstream-wpt-changes/tests/wpt.diff
Normal file
9
etc/ci/upstream-wpt-changes/tests/wpt.diff
Normal file
|
@ -0,0 +1,9 @@
|
|||
diff --git a/tests/wpt/web-platform-tests/css/css-test.html b/tests/wpt/web-platform-tests/css/css-test.html
|
||||
index cffb6eb..6100a49 100644
|
||||
--- a/tests/wpt/web-platform-tests/css/css-test.html
|
||||
+++ b/tests/wpt/web-platform-tests/css/css-test.html
|
||||
@@ -1,3 +1,3 @@
|
||||
<html>
|
||||
-<h1>css test!</h1>
|
||||
+<h1>css test!</h1>hi
|
||||
</html>
|
43
etc/ci/upstream-wpt-changes/upstream-wpt-changes.py
Executable file
43
etc/ci/upstream-wpt-changes/upstream-wpt-changes.py
Executable file
|
@ -0,0 +1,43 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
# Copyright 2023 The Servo Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
# pylint: disable=missing-docstring
|
||||
# pylint: disable=invalid-name
|
||||
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
|
||||
from wptupstreamer import WPTSync
|
||||
|
||||
|
||||
def main() -> int:
|
||||
context = json.loads(os.environ['GITHUB_CONTEXT'])
|
||||
logging.getLogger().level = logging.INFO
|
||||
|
||||
success = WPTSync(
|
||||
servo_repo='servo/servo',
|
||||
wpt_repo='servo/wpt',
|
||||
downstream_wpt_repo='servo-wpt-sync/web-platform-tests',
|
||||
servo_path='./servo',
|
||||
wpt_path='./wpt',
|
||||
github_api_token=os.environ['WPT_SYNC_GITHUB_TOKEN'],
|
||||
github_api_url='https://api.github.com/',
|
||||
github_username='servo-wpt-sync',
|
||||
github_email='josh+wptsync@joshmatthews.net',
|
||||
github_name='Servo WPT Sync',
|
||||
).run(context["event"])
|
||||
return 0 if success else 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
268
etc/ci/upstream-wpt-changes/wptupstreamer/__init__.py
Normal file
268
etc/ci/upstream-wpt-changes/wptupstreamer/__init__.py
Normal file
|
@ -0,0 +1,268 @@
|
|||
# Copyright 2023 The Servo Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
# pylint: disable=broad-except
|
||||
# pylint: disable=dangerous-default-value
|
||||
# pylint: disable=fixme
|
||||
# pylint: disable=missing-docstring
|
||||
|
||||
# This allows using types that are defined later in the file.
|
||||
from __future__ import annotations
|
||||
|
||||
import dataclasses
|
||||
import json
|
||||
import logging
|
||||
import re
|
||||
import subprocess
|
||||
|
||||
from typing import Callable, Optional
|
||||
|
||||
from .common import \
|
||||
CLOSING_EXISTING_UPSTREAM_PR, \
|
||||
NO_SYNC_SIGNAL, \
|
||||
NO_UPSTREAMBLE_CHANGES_COMMENT, \
|
||||
OPENED_NEW_UPSTREAM_PR, \
|
||||
UPDATED_EXISTING_UPSTREAM_PR, \
|
||||
UPDATED_TITLE_IN_EXISTING_UPSTREAM_PR, \
|
||||
UPSTREAMABLE_PATH, \
|
||||
wpt_branch_name_from_servo_pr_number
|
||||
|
||||
from .github import GithubRepository, PullRequest
|
||||
from .step import \
|
||||
AsyncValue, \
|
||||
ChangePRStep, \
|
||||
CommentStep, \
|
||||
CreateOrUpdateBranchForPRStep, \
|
||||
MergePRStep, \
|
||||
OpenPRStep, \
|
||||
RemoveBranchForPRStep, \
|
||||
Step
|
||||
|
||||
|
||||
class LocalGitRepo:
|
||||
def __init__(self, path: str, sync: WPTSync):
|
||||
self.path = path
|
||||
self.sync = sync
|
||||
|
||||
def run(self, *args, env: dict = {}):
|
||||
command_line = ["git"] + list(args)
|
||||
logging.info(" → Execution (cwd='%s'): %s",
|
||||
self.path, " ".join(command_line))
|
||||
|
||||
env.setdefault("GIT_AUTHOR_EMAIL", self.sync.github_email)
|
||||
env.setdefault("GIT_COMMITTER_EMAIL", self.sync.github_email)
|
||||
env.setdefault("GIT_AUTHOR_NAME", self.sync.github_name)
|
||||
env.setdefault("GIT_COMMITTER_NAME", self.sync.github_name)
|
||||
|
||||
return subprocess.check_output(
|
||||
command_line, cwd=self.path, env=env, stderr=subprocess.STDOUT
|
||||
).decode("utf-8")
|
||||
|
||||
|
||||
@dataclasses.dataclass()
|
||||
class SyncRun:
|
||||
sync: WPTSync
|
||||
servo_pr: PullRequest
|
||||
upstream_pr: AsyncValue[PullRequest]
|
||||
step_callback: Optional[Callable[[Step], None]]
|
||||
steps: list[Step] = dataclasses.field(default_factory=list)
|
||||
|
||||
def make_comment(self, template: str) -> str:
|
||||
upstream_pr = self.upstream_pr.value() if self.upstream_pr.has_value() else ""
|
||||
return template.format(
|
||||
upstream_pr=upstream_pr,
|
||||
servo_pr=self.servo_pr,
|
||||
)
|
||||
|
||||
def add_step(self, step) -> Optional[AsyncValue]:
|
||||
self.steps.append(step)
|
||||
return step.provides()
|
||||
|
||||
def run(self):
|
||||
# This loop always removes the first step and runs it, because
|
||||
# individual steps can modify the list of steps. For instance, if a
|
||||
# step fails, it might clear the remaining steps and replace them with
|
||||
# steps that report the error to GitHub.
|
||||
while self.steps:
|
||||
step = self.steps.pop(0)
|
||||
step.run(self)
|
||||
if self.step_callback:
|
||||
self.step_callback(step)
|
||||
|
||||
@staticmethod
|
||||
def clean_up_body_text(body: str) -> str:
|
||||
# Turn all bare or relative issue references into unlinked ones, so that
|
||||
# the PR doesn't inadvertently close or link to issues in the upstream
|
||||
# repository.
|
||||
return (
|
||||
re.sub(
|
||||
r"(^|\s)(\w*)#([1-9]\d*)",
|
||||
r"\g<1>\g<2>#<!-- nolink -->\g<3>",
|
||||
body,
|
||||
flags=re.MULTILINE,
|
||||
)
|
||||
.split("\n---")[0]
|
||||
.split("<!-- Thank you for")[0]
|
||||
)
|
||||
|
||||
def prepare_body_text(self, body: str) -> str:
|
||||
return SyncRun.clean_up_body_text(body) + f"\nReviewed in {self.servo_pr}"
|
||||
|
||||
|
||||
@dataclasses.dataclass(kw_only=True)
|
||||
class WPTSync:
|
||||
servo_repo: str
|
||||
wpt_repo: str
|
||||
downstream_wpt_repo: str
|
||||
servo_path: str
|
||||
wpt_path: str
|
||||
github_api_token: str
|
||||
github_api_url: str
|
||||
github_username: str
|
||||
github_email: str
|
||||
github_name: str
|
||||
suppress_force_push: bool = False
|
||||
|
||||
def __post_init__(self):
|
||||
self.servo = GithubRepository(self, self.servo_repo)
|
||||
self.wpt = GithubRepository(self, self.wpt_repo)
|
||||
self.downstream_wpt = GithubRepository(self, self.downstream_wpt_repo)
|
||||
self.local_servo_repo = LocalGitRepo(self.servo_path, self)
|
||||
self.local_wpt_repo = LocalGitRepo(self.wpt_path, self)
|
||||
|
||||
def run(self, payload: dict, step_callback=None) -> bool:
|
||||
if "pull_request" not in payload:
|
||||
return True
|
||||
|
||||
pull_data = payload["pull_request"]
|
||||
if NO_SYNC_SIGNAL in pull_data.get("body", ""):
|
||||
return True
|
||||
|
||||
# Only look for an existing remote PR if the action is appropriate.
|
||||
logging.info("Processing '%s' action...", payload["action"])
|
||||
action = payload["action"]
|
||||
if action not in ["opened", "synchronize", "reopened", "edited", "closed"]:
|
||||
return True
|
||||
|
||||
if (
|
||||
action == "edited"
|
||||
and "title" not in payload["changes"]
|
||||
and "body" not in payload["changes"]
|
||||
):
|
||||
return True
|
||||
|
||||
try:
|
||||
servo_pr = self.servo.get_pull_request(pull_data["number"])
|
||||
downstream_wpt_branch = self.downstream_wpt.get_branch(
|
||||
wpt_branch_name_from_servo_pr_number(servo_pr.number)
|
||||
)
|
||||
upstream_pr = self.wpt.get_open_pull_request_for_branch(
|
||||
downstream_wpt_branch
|
||||
)
|
||||
if upstream_pr:
|
||||
logging.info(
|
||||
" → Detected existing upstream PR %s", upstream_pr)
|
||||
|
||||
run = SyncRun(self, servo_pr, AsyncValue(upstream_pr), step_callback)
|
||||
|
||||
pull_data = payload["pull_request"]
|
||||
if payload["action"] in ["opened", "synchronize", "reopened"]:
|
||||
self.handle_new_pull_request_contents(run, pull_data)
|
||||
elif payload["action"] == "edited":
|
||||
self.handle_edited_pull_request(run, pull_data)
|
||||
elif payload["action"] == "closed":
|
||||
self.handle_closed_pull_request(run, pull_data)
|
||||
|
||||
run.run()
|
||||
return True
|
||||
except Exception as exception:
|
||||
if isinstance(exception, subprocess.CalledProcessError):
|
||||
logging.error(exception.output)
|
||||
logging.error(json.dumps(payload))
|
||||
logging.error(exception, exc_info=True)
|
||||
return False
|
||||
|
||||
def handle_new_pull_request_contents(self, run: SyncRun, pull_data: dict):
|
||||
is_upstreamable = (
|
||||
len(
|
||||
self.local_servo_repo.run(
|
||||
"diff", f"HEAD~{pull_data['commits']}", "--", UPSTREAMABLE_PATH
|
||||
)
|
||||
)
|
||||
> 0
|
||||
)
|
||||
logging.info(" → PR is upstreamable: '%s'", is_upstreamable)
|
||||
|
||||
title = pull_data['title']
|
||||
body = pull_data['body']
|
||||
if run.upstream_pr.has_value():
|
||||
if is_upstreamable:
|
||||
# In case this is adding new upstreamable changes to a PR that was closed
|
||||
# due to a lack of upstreamable changes, force it to be reopened.
|
||||
# Github refuses to reopen a PR that had a branch force pushed, so be sure
|
||||
# to do this first.
|
||||
run.add_step(ChangePRStep(
|
||||
run.upstream_pr.value(), "opened", title, body))
|
||||
# Push the relevant changes to the upstream branch.
|
||||
run.add_step(CreateOrUpdateBranchForPRStep(
|
||||
pull_data, run.servo_pr))
|
||||
run.add_step(CommentStep(
|
||||
run.servo_pr, UPDATED_EXISTING_UPSTREAM_PR))
|
||||
else:
|
||||
# Close the upstream PR, since would contain no changes otherwise.
|
||||
run.add_step(CommentStep(run.upstream_pr.value(),
|
||||
NO_UPSTREAMBLE_CHANGES_COMMENT))
|
||||
run.add_step(ChangePRStep(run.upstream_pr.value(), "closed"))
|
||||
run.add_step(RemoveBranchForPRStep(pull_data))
|
||||
run.add_step(CommentStep(
|
||||
run.servo_pr, CLOSING_EXISTING_UPSTREAM_PR))
|
||||
|
||||
elif is_upstreamable:
|
||||
# Push the relevant changes to a new upstream branch.
|
||||
branch = run.add_step(
|
||||
CreateOrUpdateBranchForPRStep(pull_data, run.servo_pr))
|
||||
|
||||
# Create a pull request against the upstream repository for the new branch.
|
||||
assert branch
|
||||
upstream_pr = run.add_step(OpenPRStep(
|
||||
branch, self.wpt, title, body,
|
||||
["servo-export", "do not merge yet"],
|
||||
))
|
||||
|
||||
assert upstream_pr
|
||||
run.upstream_pr = upstream_pr
|
||||
|
||||
# Leave a comment to the new pull request in the original pull request.
|
||||
run.add_step(CommentStep(run.servo_pr, OPENED_NEW_UPSTREAM_PR))
|
||||
|
||||
def handle_edited_pull_request(self, run: SyncRun, pull_data: dict):
|
||||
logging.info("Changing upstream PR title")
|
||||
if run.upstream_pr.has_value():
|
||||
run.add_step(ChangePRStep(
|
||||
run.upstream_pr.value(), "open", pull_data["title"], pull_data["body"]
|
||||
))
|
||||
run.add_step(CommentStep(
|
||||
run.servo_pr, UPDATED_TITLE_IN_EXISTING_UPSTREAM_PR))
|
||||
|
||||
def handle_closed_pull_request(self, run: SyncRun, pull_data: dict):
|
||||
logging.info("Processing closed PR")
|
||||
if not run.upstream_pr.has_value():
|
||||
# If we don't recognize this PR, it never contained upstreamable changes.
|
||||
return
|
||||
if pull_data["merged"]:
|
||||
# Since the upstreamable changes have now been merged locally, merge the
|
||||
# corresponding upstream PR.
|
||||
run.add_step(MergePRStep(run.upstream_pr.value(), ["do not merge yet"]))
|
||||
else:
|
||||
# If a PR with upstreamable changes is closed without being merged, we
|
||||
# don't want to merge the changes upstream either.
|
||||
run.add_step(ChangePRStep(run.upstream_pr.value(), "closed"))
|
||||
|
||||
# Always clean up our remote branch.
|
||||
run.add_step(RemoveBranchForPRStep(pull_data))
|
53
etc/ci/upstream-wpt-changes/wptupstreamer/common.py
Normal file
53
etc/ci/upstream-wpt-changes/wptupstreamer/common.py
Normal file
|
@ -0,0 +1,53 @@
|
|||
# Copyright 2023 The Servo Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
# pylint: disable=missing-docstring
|
||||
|
||||
UPSTREAMABLE_PATH = "tests/wpt/web-platform-tests/"
|
||||
NO_SYNC_SIGNAL = "[no-wpt-sync]"
|
||||
|
||||
OPENED_NEW_UPSTREAM_PR = (
|
||||
"🤖 Opened new upstream WPT pull request ({upstream_pr}) "
|
||||
"with upstreamable changes."
|
||||
)
|
||||
UPDATED_EXISTING_UPSTREAM_PR = (
|
||||
"📝 Transplanted new upstreamable changes to existing "
|
||||
"upstream WPT pull request ({upstream_pr})."
|
||||
)
|
||||
UPDATED_TITLE_IN_EXISTING_UPSTREAM_PR = (
|
||||
"✍ Updated existing upstream WPT pull request ({upstream_pr}) title and body."
|
||||
)
|
||||
CLOSING_EXISTING_UPSTREAM_PR = (
|
||||
"🤖 This change no longer contains upstreamable changes to WPT; closed existing "
|
||||
"upstream pull request ({upstream_pr})."
|
||||
)
|
||||
NO_UPSTREAMBLE_CHANGES_COMMENT = (
|
||||
"👋 Downstream pull request ({servo_pr}) no longer contains any upstreamable "
|
||||
"changes. Closing pull request without merging."
|
||||
)
|
||||
COULD_NOT_APPLY_CHANGES_DOWNSTREAM_COMMENT = (
|
||||
"🛠 These changes could not be applied onto the latest upstream WPT. "
|
||||
"Servo's copy of the Web Platform Tests may be out of sync."
|
||||
)
|
||||
COULD_NOT_APPLY_CHANGES_UPSTREAM_COMMENT = (
|
||||
"🛠 Changes from the source pull request ({servo_pr}) can no longer be "
|
||||
"cleanly applied. Waiting for a new version of these changes downstream."
|
||||
)
|
||||
COULD_NOT_MERGE_CHANGES_DOWNSTREAM_COMMENT = (
|
||||
"⛔ Failed to properly merge the upstream pull request ({upstream_pr}). "
|
||||
"Please address any CI issues and try to merge manually."
|
||||
)
|
||||
COULD_NOT_MERGE_CHANGES_UPSTREAM_COMMENT = (
|
||||
"⛔ The downstream PR has merged ({servo_pr}), but these changes could not "
|
||||
"be merged properly. Please address any CI issues and try to merge manually."
|
||||
)
|
||||
|
||||
|
||||
def wpt_branch_name_from_servo_pr_number(servo_pr_number):
|
||||
return f"servo_export_{servo_pr_number}"
|
166
etc/ci/upstream-wpt-changes/wptupstreamer/github.py
Normal file
166
etc/ci/upstream-wpt-changes/wptupstreamer/github.py
Normal file
|
@ -0,0 +1,166 @@
|
|||
# Copyright 2023 The Servo Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
# pylint: disable=missing-docstring
|
||||
|
||||
"""This modules contains some abstractions of GitHub repositories. It could one
|
||||
day be entirely replaced with something like PyGithub."""
|
||||
|
||||
# This allows using types that are defined later in the file.
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import urllib
|
||||
|
||||
from typing import Optional, TYPE_CHECKING
|
||||
|
||||
import requests
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from . import WPTSync
|
||||
|
||||
USER_AGENT = "Servo web-platform-test sync service"
|
||||
TIMEOUT = 30 # 30 seconds
|
||||
|
||||
|
||||
def authenticated(sync: WPTSync, method, url, json=None) -> requests.Response:
|
||||
logging.info(" → Request: %s %s", method, url)
|
||||
if json:
|
||||
logging.info(" → Request JSON: %s", json)
|
||||
|
||||
headers = {
|
||||
"Authorization": f"Bearer {sync.github_api_token}",
|
||||
"User-Agent": USER_AGENT,
|
||||
}
|
||||
|
||||
url = urllib.parse.urljoin(sync.github_api_url, url)
|
||||
response = requests.request(
|
||||
method, url, headers=headers, json=json, timeout=TIMEOUT
|
||||
)
|
||||
if int(response.status_code / 100) != 2:
|
||||
raise ValueError(
|
||||
f"Got unexpected {response.status_code} response: {response.text}"
|
||||
)
|
||||
return response
|
||||
|
||||
|
||||
class GithubRepository:
|
||||
"""
|
||||
This class allows interacting with a single GitHub repository.
|
||||
"""
|
||||
|
||||
def __init__(self, sync: WPTSync, repo: str):
|
||||
self.sync = sync
|
||||
self.repo = repo
|
||||
self.org = repo.split("/")[0]
|
||||
self.pulls_url = f"repos/{self.repo}/pulls"
|
||||
|
||||
def __str__(self):
|
||||
return self.repo
|
||||
|
||||
def get_pull_request(self, number: int) -> PullRequest:
|
||||
return PullRequest(self, number)
|
||||
|
||||
def get_branch(self, name: str) -> GithubBranch:
|
||||
return GithubBranch(self, name)
|
||||
|
||||
def get_open_pull_request_for_branch(
|
||||
self, branch: GithubBranch
|
||||
) -> Optional[PullRequest]:
|
||||
"""If this repository has an open pull request with the
|
||||
given source head reference targeting the master branch,
|
||||
return the first matching pull request, otherwise return None."""
|
||||
# Frustratingly, this is different from what you need for opening a pull request.
|
||||
head = f"{branch.repo.org}:{branch.name}"
|
||||
response = authenticated(
|
||||
self.sync, "GET", f"{self.pulls_url}?head={head}&base=master&state=open"
|
||||
)
|
||||
if int(response.status_code / 100) != 2:
|
||||
return None
|
||||
|
||||
json = response.json()
|
||||
if not json or not isinstance(json, list):
|
||||
return None
|
||||
return self.get_pull_request(json[0]["number"])
|
||||
|
||||
def open_pull_request(self, branch: GithubBranch, title: str, body: str):
|
||||
data = {
|
||||
"title": title,
|
||||
"head": branch.get_pr_head_reference_for_repo(self),
|
||||
"base": "master",
|
||||
"body": body,
|
||||
"maintainer_can_modify": False,
|
||||
}
|
||||
response = authenticated(self.sync, "POST", self.pulls_url, json=data)
|
||||
return self.get_pull_request(response.json()["number"])
|
||||
|
||||
|
||||
class GithubBranch:
|
||||
def __init__(self, repo: GithubRepository, branch_name: str):
|
||||
self.repo = repo
|
||||
self.name = branch_name
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.repo}/{self.name}"
|
||||
|
||||
def get_pr_head_reference_for_repo(self, other_repo: GithubRepository) -> str:
|
||||
"""Get the head reference to use in pull requests for the given repository.
|
||||
If the organization is the same this is just `<branch>` otherwise
|
||||
it will be `<org>:<branch>`."""
|
||||
if self.repo.org == other_repo.org:
|
||||
return self.name
|
||||
return f"{self.repo.org}:{self.name}"
|
||||
|
||||
|
||||
class PullRequest:
|
||||
"""
|
||||
This class allows interacting with a single pull request on GitHub.
|
||||
"""
|
||||
|
||||
def __init__(self, repo: GithubRepository, number: int):
|
||||
self.repo = repo
|
||||
self.context = repo.sync
|
||||
self.number = number
|
||||
self.base_url = f"repos/{self.repo.repo}/pulls/{self.number}"
|
||||
self.base_issues_url = f"repos/{self.repo.repo}/issues/{self.number}"
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.repo}#{self.number}"
|
||||
|
||||
def api(self, *args, **kwargs) -> requests.Response:
|
||||
return authenticated(self.context, *args, **kwargs)
|
||||
|
||||
def leave_comment(self, comment: str):
|
||||
return self.api(
|
||||
"POST", f"{self.base_issues_url}/comments", json={"body": comment}
|
||||
)
|
||||
|
||||
def change(
|
||||
self,
|
||||
state: Optional[str] = None,
|
||||
title: Optional[str] = None,
|
||||
body: Optional[str] = None,
|
||||
):
|
||||
data = {}
|
||||
if title:
|
||||
data["title"] = title
|
||||
if body:
|
||||
data["body"] = body
|
||||
if state:
|
||||
data["state"] = state
|
||||
return self.api("PATCH", self.base_url, json=data)
|
||||
|
||||
def remove_label(self, label: str):
|
||||
self.api("DELETE", f"{self.base_issues_url}/labels/{label}")
|
||||
|
||||
def add_labels(self, labels: list[str]):
|
||||
self.api("POST", f"{self.base_issues_url}/labels", json=labels)
|
||||
|
||||
def merge(self):
|
||||
self.api("PUT", f"{self.base_url}/merge", json={"merge_method": "rebase"})
|
300
etc/ci/upstream-wpt-changes/wptupstreamer/step.py
Normal file
300
etc/ci/upstream-wpt-changes/wptupstreamer/step.py
Normal file
|
@ -0,0 +1,300 @@
|
|||
# Copyright 2023 The Servo Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
# pylint: disable=broad-except
|
||||
# pylint: disable=dangerous-default-value
|
||||
# pylint: disable=fixme
|
||||
# pylint: disable=missing-docstring
|
||||
|
||||
# This allows using types that are defined later in the file.
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import os
|
||||
import textwrap
|
||||
|
||||
from typing import TYPE_CHECKING, Generic, Optional, TypeVar
|
||||
|
||||
from .common import COULD_NOT_APPLY_CHANGES_DOWNSTREAM_COMMENT
|
||||
from .common import COULD_NOT_APPLY_CHANGES_UPSTREAM_COMMENT
|
||||
from .common import COULD_NOT_MERGE_CHANGES_DOWNSTREAM_COMMENT
|
||||
from .common import COULD_NOT_MERGE_CHANGES_UPSTREAM_COMMENT
|
||||
from .common import UPSTREAMABLE_PATH
|
||||
from .common import wpt_branch_name_from_servo_pr_number
|
||||
from .github import GithubBranch, GithubRepository, PullRequest
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from . import SyncRun, WPTSync
|
||||
|
||||
PATCH_FILE_NAME = "tmp.patch"
|
||||
|
||||
|
||||
class Step:
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
|
||||
def provides(self) -> Optional[AsyncValue]:
|
||||
return None
|
||||
|
||||
def run(self, _: SyncRun):
|
||||
return
|
||||
|
||||
|
||||
T = TypeVar('T')
|
||||
|
||||
|
||||
class AsyncValue(Generic[T]):
|
||||
def __init__(self, value: Optional[T] = None):
|
||||
self._value = value
|
||||
|
||||
def resolve(self, value: T):
|
||||
self._value = value
|
||||
|
||||
def value(self) -> T:
|
||||
assert self._value is not None
|
||||
return self._value
|
||||
|
||||
def has_value(self):
|
||||
return self._value is not None
|
||||
|
||||
|
||||
class CreateOrUpdateBranchForPRStep(Step):
|
||||
def __init__(self, pull_data: dict, pull_request: PullRequest):
|
||||
Step.__init__(self, "CreateOrUpdateBranchForPRStep")
|
||||
self.pull_data = pull_data
|
||||
self.pull_request = pull_request
|
||||
self.branch: AsyncValue[GithubBranch] = AsyncValue()
|
||||
|
||||
def provides(self):
|
||||
return self.branch
|
||||
|
||||
def run(self, run: SyncRun):
|
||||
try:
|
||||
commits = self._get_upstreamable_commits_from_local_servo_repo(
|
||||
run.sync)
|
||||
branch_name = self._create_or_update_branch_for_pr(run, commits)
|
||||
branch = run.sync.downstream_wpt.get_branch(branch_name)
|
||||
|
||||
self.branch.resolve(branch)
|
||||
self.name += f":{len(commits)}:{branch}"
|
||||
except Exception as exception:
|
||||
logging.info("Could not apply changes to upstream WPT repository.")
|
||||
logging.info(exception, exc_info=True)
|
||||
|
||||
run.steps = []
|
||||
run.add_step(CommentStep(
|
||||
self.pull_request, COULD_NOT_APPLY_CHANGES_DOWNSTREAM_COMMENT
|
||||
))
|
||||
if run.upstream_pr.has_value():
|
||||
run.add_step(CommentStep(
|
||||
run.upstream_pr.value(), COULD_NOT_APPLY_CHANGES_UPSTREAM_COMMENT
|
||||
))
|
||||
|
||||
def _get_upstreamable_commits_from_local_servo_repo(self, sync: WPTSync):
|
||||
local_servo_repo = sync.local_servo_repo
|
||||
number_of_commits = self.pull_data["commits"]
|
||||
commit_shas = local_servo_repo.run(
|
||||
"log", "--pretty=%H", f"-{number_of_commits}"
|
||||
).splitlines()
|
||||
|
||||
filtered_commits = []
|
||||
for sha in commit_shas:
|
||||
# Specifying the path here does a few things. First, it excludes any
|
||||
# changes that do not touch WPT files at all. Secondly, when a file is
|
||||
# moved in or out of the WPT directory the filename which is outside the
|
||||
# directory becomes /dev/null and the change becomes an addition or
|
||||
# deletion. This makes the patch usable on the WPT repository itself.
|
||||
# TODO: If we could cleverly parse and manipulate the full commit diff
|
||||
# we could avoid cloning the servo repository altogether and only
|
||||
# have to fetch the commit diffs from GitHub.
|
||||
diff = local_servo_repo.run(
|
||||
"show", "--binary", "--format=%b", sha, "--", UPSTREAMABLE_PATH
|
||||
)
|
||||
|
||||
# Retrieve the diff of any changes to files that are relevant
|
||||
if diff:
|
||||
# Create an object that contains everything necessary to transplant this
|
||||
# commit to another repository.
|
||||
filtered_commits += [
|
||||
{
|
||||
"author": local_servo_repo.run(
|
||||
"show", "-s", "--pretty=%an <%ae>", sha
|
||||
),
|
||||
"message": local_servo_repo.run(
|
||||
"show", "-s", "--pretty=%B", sha
|
||||
),
|
||||
"diff": diff,
|
||||
}
|
||||
]
|
||||
return filtered_commits
|
||||
|
||||
def _apply_filtered_servo_commit_to_wpt(self, run: SyncRun, commit: dict):
|
||||
patch_path = os.path.join(run.sync.wpt_path, PATCH_FILE_NAME)
|
||||
strip_count = UPSTREAMABLE_PATH.count("/") + 1
|
||||
|
||||
try:
|
||||
with open(patch_path, "w", encoding="utf-8") as file:
|
||||
file.write(commit["diff"])
|
||||
run.sync.local_wpt_repo.run(
|
||||
"apply", PATCH_FILE_NAME, "-p", str(strip_count)
|
||||
)
|
||||
finally:
|
||||
# Ensure the patch file is not added with the other changes.
|
||||
os.remove(patch_path)
|
||||
|
||||
run.sync.local_wpt_repo.run("add", "--all")
|
||||
run.sync.local_wpt_repo.run(
|
||||
"commit", "--message", commit["message"], "--author", commit["author"]
|
||||
)
|
||||
|
||||
def _create_or_update_branch_for_pr(
|
||||
self, run: SyncRun, commits: list[dict], pre_commit_callback=None
|
||||
):
|
||||
branch_name = wpt_branch_name_from_servo_pr_number(
|
||||
self.pull_data["number"])
|
||||
try:
|
||||
# Create a new branch with a unique name that is consistent between
|
||||
# updates of the same PR.
|
||||
run.sync.local_wpt_repo.run("checkout", "-b", branch_name)
|
||||
|
||||
for commit in commits:
|
||||
self._apply_filtered_servo_commit_to_wpt(run, commit)
|
||||
|
||||
if pre_commit_callback:
|
||||
pre_commit_callback()
|
||||
|
||||
# Push the branch upstream (forcing to overwrite any existing changes).
|
||||
if not run.sync.suppress_force_push:
|
||||
user = run.sync.github_username
|
||||
token = run.sync.github_api_token
|
||||
repo = run.sync.downstream_wpt_repo
|
||||
remote_url = f"https://{user}:{token}@github.com/{repo}.git"
|
||||
run.sync.local_wpt_repo.run(
|
||||
"push", "-f", remote_url, branch_name)
|
||||
|
||||
return branch_name
|
||||
finally:
|
||||
try:
|
||||
run.sync.local_wpt_repo.run("checkout", "master")
|
||||
run.sync.local_wpt_repo.run("branch", "-D", branch_name)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
class RemoveBranchForPRStep(Step):
|
||||
def __init__(self, pull_request):
|
||||
Step.__init__(self, "RemoveBranchForPRStep")
|
||||
self.branch_name = wpt_branch_name_from_servo_pr_number(
|
||||
pull_request["number"])
|
||||
|
||||
def run(self, run: SyncRun):
|
||||
self.name += f":{run.sync.downstream_wpt.get_branch(self.branch_name)}"
|
||||
logging.info(" -> Removing branch used for upstream PR")
|
||||
if not run.sync.suppress_force_push:
|
||||
run.sync.local_wpt_repo.run("push", "origin", "--delete",
|
||||
self.branch_name)
|
||||
|
||||
|
||||
class ChangePRStep(Step):
|
||||
def __init__(
|
||||
self,
|
||||
pull_request: PullRequest,
|
||||
state: str,
|
||||
title: Optional[str] = None,
|
||||
body: Optional[str] = None,
|
||||
):
|
||||
name = f"ChangePRStep:{pull_request}:{state}"
|
||||
if title:
|
||||
name += f":{title}"
|
||||
|
||||
Step.__init__(self, name)
|
||||
self.pull_request = pull_request
|
||||
self.state = state
|
||||
self.title = title
|
||||
self.body = body
|
||||
|
||||
def run(self, run: SyncRun):
|
||||
body = self.body
|
||||
if body:
|
||||
body = run.prepare_body_text(body)
|
||||
self.name += (
|
||||
f':{textwrap.shorten(body, width=20, placeholder="...")}[{len(body)}]'
|
||||
)
|
||||
|
||||
self.pull_request.change(state=self.state, title=self.title, body=body)
|
||||
|
||||
|
||||
class MergePRStep(Step):
|
||||
def __init__(self, pull_request: PullRequest, labels_to_remove: list[str] = []):
|
||||
Step.__init__(self, f"MergePRStep:{pull_request}")
|
||||
self.pull_request = pull_request
|
||||
self.labels_to_remove = labels_to_remove
|
||||
|
||||
def run(self, run: SyncRun):
|
||||
for label in self.labels_to_remove:
|
||||
self.pull_request.remove_label(label)
|
||||
try:
|
||||
self.pull_request.merge()
|
||||
except Exception as exception:
|
||||
logging.warning("Could not merge PR (%s).", self.pull_request)
|
||||
logging.warning(exception, exc_info=True)
|
||||
|
||||
run.steps = []
|
||||
run.add_step(CommentStep(
|
||||
self.pull_request, COULD_NOT_MERGE_CHANGES_UPSTREAM_COMMENT
|
||||
))
|
||||
run.add_step(CommentStep(
|
||||
run.servo_pr, COULD_NOT_MERGE_CHANGES_DOWNSTREAM_COMMENT
|
||||
))
|
||||
self.pull_request.add_labels(["stale-servo-export"])
|
||||
|
||||
|
||||
class OpenPRStep(Step):
|
||||
def __init__(
|
||||
self,
|
||||
source_branch: AsyncValue[GithubBranch],
|
||||
target_repo: GithubRepository,
|
||||
title: str,
|
||||
body: str,
|
||||
labels: list[str],
|
||||
):
|
||||
Step.__init__(self, "OpenPRStep")
|
||||
self.title = title
|
||||
self.body = body
|
||||
self.source_branch = source_branch
|
||||
self.target_repo = target_repo
|
||||
self.new_pr: AsyncValue[PullRequest] = AsyncValue()
|
||||
self.labels = labels
|
||||
|
||||
def provides(self):
|
||||
return self.new_pr
|
||||
|
||||
def run(self, run: SyncRun):
|
||||
pull_request = self.target_repo.open_pull_request(
|
||||
self.source_branch.value(), self.title, run.prepare_body_text(self.body)
|
||||
)
|
||||
|
||||
if self.labels:
|
||||
pull_request.add_labels(self.labels)
|
||||
|
||||
self.new_pr.resolve(pull_request)
|
||||
|
||||
self.name += f":{self.source_branch.value()}→{self.new_pr.value()}"
|
||||
|
||||
|
||||
class CommentStep(Step):
|
||||
def __init__(self, pull_request: PullRequest, comment_template: str):
|
||||
Step.__init__(self, "CommentStep")
|
||||
self.pull_request = pull_request
|
||||
self.comment_template = comment_template
|
||||
|
||||
def run(self, run: SyncRun):
|
||||
comment = run.make_comment(self.comment_template)
|
||||
self.name += f":{self.pull_request}:{comment}"
|
||||
self.pull_request.leave_comment(comment)
|
Loading…
Add table
Add a link
Reference in a new issue