mirror of
https://github.com/servo/servo.git
synced 2025-09-29 16:19:14 +01:00
Use ruff
to enforce python code formatting (#37117)
Requires servo/servo#37045 for deps and config. Testing: No need for tests to test tests. Fixes: servo/servo#37041 --------- Signed-off-by: zefr0x <zer0-x.7ty50@aleeas.com>
This commit is contained in:
parent
41ecfb53a1
commit
c96de69e80
67 changed files with 3021 additions and 3085 deletions
|
@ -37,7 +37,7 @@ class Item:
|
|||
def from_result(cls, result: dict, title: Optional[str] = None, print_stack=True):
|
||||
expected = result["expected"]
|
||||
actual = result["actual"]
|
||||
title = title if title else f'`{result["path"]}`'
|
||||
title = title if title else f"`{result['path']}`"
|
||||
if expected != actual:
|
||||
title = f"{actual} [expected {expected}] {title}"
|
||||
else:
|
||||
|
@ -45,8 +45,7 @@ class Item:
|
|||
|
||||
issue_url = "http://github.com/servo/servo/issues/"
|
||||
if "issues" in result and result["issues"]:
|
||||
issues = ", ".join([f"[#{issue}]({issue_url}{issue})"
|
||||
for issue in result["issues"]])
|
||||
issues = ", ".join([f"[#{issue}]({issue_url}{issue})" for issue in result["issues"]])
|
||||
title += f" ({issues})"
|
||||
|
||||
stack = result["stack"] if result["stack"] and print_stack else ""
|
||||
|
@ -59,8 +58,9 @@ class Item:
|
|||
cls.from_result(
|
||||
subtest_result,
|
||||
f"subtest: `{subtest_result['subtest']}`"
|
||||
+ (f" \n```\n{subtest_result['message']}\n```\n" if subtest_result['message'] else ""),
|
||||
False)
|
||||
+ (f" \n```\n{subtest_result['message']}\n```\n" if subtest_result["message"] else ""),
|
||||
False,
|
||||
)
|
||||
for subtest_result in subtest_results
|
||||
]
|
||||
return cls(title, body, children)
|
||||
|
@ -68,10 +68,8 @@ class Item:
|
|||
def to_string(self, bullet: str = "", indent: str = ""):
|
||||
output = f"{indent}{bullet}{self.title}\n"
|
||||
if self.body:
|
||||
output += textwrap.indent(f"{self.body}\n",
|
||||
" " * len(indent + bullet))
|
||||
output += "\n".join([child.to_string("• ", indent + " ")
|
||||
for child in self.children])
|
||||
output += textwrap.indent(f"{self.body}\n", " " * len(indent + bullet))
|
||||
output += "\n".join([child.to_string("• ", indent + " ") for child in self.children])
|
||||
return output.rstrip().replace("`", "")
|
||||
|
||||
def to_html(self, level: int = 0) -> ElementTree.Element:
|
||||
|
@ -88,17 +86,13 @@ class Item:
|
|||
if self.children:
|
||||
# Some tests have dozens of failing tests, which overwhelm the
|
||||
# output. Limit the output for subtests in GitHub comment output.
|
||||
max_children = len(
|
||||
self.children) if level < 2 else SUBTEST_RESULT_TRUNCATION
|
||||
max_children = len(self.children) if level < 2 else SUBTEST_RESULT_TRUNCATION
|
||||
if len(self.children) > max_children:
|
||||
children = self.children[:max_children]
|
||||
children.append(Item(
|
||||
f"And {len(self.children) - max_children} more unexpected results...",
|
||||
"", []))
|
||||
children.append(Item(f"And {len(self.children) - max_children} more unexpected results...", "", []))
|
||||
else:
|
||||
children = self.children
|
||||
container = ElementTree.SubElement(
|
||||
result, "div" if not level else "ul")
|
||||
container = ElementTree.SubElement(result, "div" if not level else "ul")
|
||||
for child in children:
|
||||
container.append(child.to_html(level + 1))
|
||||
|
||||
|
@ -125,17 +119,16 @@ def get_results(filenames: list[str], tag: str = "") -> Optional[Item]:
|
|||
return not is_flaky(result) and not result["issues"]
|
||||
|
||||
def add_children(children: List[Item], results: List[dict], filter_func, text):
|
||||
filtered = [Item.from_result(result) for result in
|
||||
filter(filter_func, results)]
|
||||
filtered = [Item.from_result(result) for result in filter(filter_func, results)]
|
||||
if filtered:
|
||||
children.append(Item(f"{text} ({len(filtered)})", "", filtered))
|
||||
|
||||
children: List[Item] = []
|
||||
add_children(children, unexpected, is_flaky, "Flaky unexpected result")
|
||||
add_children(children, unexpected, is_stable_and_known,
|
||||
"Stable unexpected results that are known to be intermittent")
|
||||
add_children(children, unexpected, is_stable_and_unexpected,
|
||||
"Stable unexpected results")
|
||||
add_children(
|
||||
children, unexpected, is_stable_and_known, "Stable unexpected results that are known to be intermittent"
|
||||
)
|
||||
add_children(children, unexpected, is_stable_and_unexpected, "Stable unexpected results")
|
||||
|
||||
run_url = get_github_run_url()
|
||||
text = "Test results"
|
||||
|
@ -154,8 +147,8 @@ def get_github_run_url() -> Optional[str]:
|
|||
return None
|
||||
if "run_id" not in github_context:
|
||||
return None
|
||||
repository = github_context['repository']
|
||||
run_id = github_context['run_id']
|
||||
repository = github_context["repository"]
|
||||
run_id = github_context["run_id"]
|
||||
return f"[#{run_id}](https://github.com/{repository}/actions/runs/{run_id})"
|
||||
|
||||
|
||||
|
@ -197,14 +190,14 @@ def create_github_reports(body: str, tag: str = ""):
|
|||
# This process is based on the documentation here:
|
||||
# https://docs.github.com/en/rest/checks/runs?apiVersion=2022-11-28#create-a-check-runs
|
||||
results = json.loads(os.environ.get("RESULTS", "{}"))
|
||||
if all(r == 'success' for r in results):
|
||||
conclusion = 'success'
|
||||
if all(r == "success" for r in results):
|
||||
conclusion = "success"
|
||||
elif "failure" in results:
|
||||
conclusion = 'failure'
|
||||
conclusion = "failure"
|
||||
elif "cancelled" in results:
|
||||
conclusion = 'cancelled'
|
||||
conclusion = "cancelled"
|
||||
else:
|
||||
conclusion = 'neutral'
|
||||
conclusion = "neutral"
|
||||
|
||||
github_token = os.environ.get("GITHUB_TOKEN")
|
||||
github_context = json.loads(os.environ.get("GITHUB_CONTEXT", "{}"))
|
||||
|
@ -214,34 +207,42 @@ def create_github_reports(body: str, tag: str = ""):
|
|||
return None
|
||||
repo = github_context["repository"]
|
||||
data = {
|
||||
'name': tag,
|
||||
'head_sha': github_context["sha"],
|
||||
'status': 'completed',
|
||||
'started_at': datetime.utcnow().replace(microsecond=0).isoformat() + "Z",
|
||||
'conclusion': conclusion,
|
||||
'completed_at': datetime.utcnow().replace(microsecond=0).isoformat() + "Z",
|
||||
'output': {
|
||||
'title': f'Aggregated {tag} report',
|
||||
'summary': body,
|
||||
'images': [{'alt': 'WPT logo', 'image_url': 'https://avatars.githubusercontent.com/u/37226233'}]
|
||||
"name": tag,
|
||||
"head_sha": github_context["sha"],
|
||||
"status": "completed",
|
||||
"started_at": datetime.utcnow().replace(microsecond=0).isoformat() + "Z",
|
||||
"conclusion": conclusion,
|
||||
"completed_at": datetime.utcnow().replace(microsecond=0).isoformat() + "Z",
|
||||
"output": {
|
||||
"title": f"Aggregated {tag} report",
|
||||
"summary": body,
|
||||
"images": [{"alt": "WPT logo", "image_url": "https://avatars.githubusercontent.com/u/37226233"}],
|
||||
},
|
||||
'actions': [
|
||||
]
|
||||
"actions": [],
|
||||
}
|
||||
|
||||
subprocess.Popen(["curl", "-L",
|
||||
"-X", "POST",
|
||||
"-H", "Accept: application/vnd.github+json",
|
||||
"-H", f"Authorization: Bearer {github_token}",
|
||||
"-H", "X-GitHub-Api-Version: 2022-11-28",
|
||||
f"https://api.github.com/repos/{repo}/check-runs",
|
||||
"-d", json.dumps(data)]).wait()
|
||||
subprocess.Popen(
|
||||
[
|
||||
"curl",
|
||||
"-L",
|
||||
"-X",
|
||||
"POST",
|
||||
"-H",
|
||||
"Accept: application/vnd.github+json",
|
||||
"-H",
|
||||
f"Authorization: Bearer {github_token}",
|
||||
"-H",
|
||||
"X-GitHub-Api-Version: 2022-11-28",
|
||||
f"https://api.github.com/repos/{repo}/check-runs",
|
||||
"-d",
|
||||
json.dumps(data),
|
||||
]
|
||||
).wait()
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--tag", default="wpt", action="store",
|
||||
help="A string tag used to distinguish the results.")
|
||||
parser.add_argument("--tag", default="wpt", action="store", help="A string tag used to distinguish the results.")
|
||||
args, filenames = parser.parse_known_args()
|
||||
results = get_results(filenames, args.tag)
|
||||
if not results:
|
||||
|
@ -251,14 +252,12 @@ def main():
|
|||
|
||||
print(results.to_string())
|
||||
|
||||
html_string = ElementTree.tostring(
|
||||
results.to_html(), encoding="unicode")
|
||||
html_string = ElementTree.tostring(results.to_html(), encoding="unicode")
|
||||
create_github_reports(html_string, args.tag)
|
||||
|
||||
pr_number = get_pr_number()
|
||||
if pr_number:
|
||||
process = subprocess.Popen(
|
||||
['gh', 'pr', 'comment', pr_number, '-F', '-'], stdin=subprocess.PIPE)
|
||||
process = subprocess.Popen(["gh", "pr", "comment", pr_number, "-F", "-"], stdin=subprocess.PIPE)
|
||||
print(process.communicate(input=html_string.encode("utf-8"))[0])
|
||||
else:
|
||||
print("Could not find PR number in environment. Not making GitHub comment.")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue