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:
Martin Robinson 2023-01-09 13:17:55 +01:00
parent c165536188
commit 659597281b
34 changed files with 4998 additions and 0 deletions

View 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

View 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 }}
#

View file

View file

@ -0,0 +1,4 @@
-r requirements.txt
flask
types-requests

View file

@ -0,0 +1 @@
requests

View 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()

View 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

View 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
}
}

View 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/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>

View 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"
}
}

View 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
}
}

View 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

View 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

View 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')

View 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": "[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
}
}

View 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
}
}

View file

@ -0,0 +1 @@
This is a repository designed to superficially resemble the Servo repository.

View file

@ -0,0 +1,3 @@
<html>
<h1>this is a mozilla-specific test</h1>
</html>

View file

@ -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')

View file

@ -0,0 +1,3 @@
<html>
<h1>css test!</h1>
</html>

View file

@ -0,0 +1,3 @@
<html>
<h1>css test!</h1>
</html>

View file

@ -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>

View file

@ -0,0 +1,3 @@
<html>
<h1>this is a test file</h1>
</html>

View 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
}
}

View 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
}
}

View file

@ -0,0 +1,3 @@
<html>
<h1>css test!</h1>
</html>

View file

@ -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>

View file

@ -0,0 +1,3 @@
<html>
<h1>this is a test file</h1>
</html>

View 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>

View 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())

View 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))

View 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}"

View 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"})

View 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)