mirror of
https://github.com/godotengine/issue-bot.git
synced 2025-12-31 05:48:38 +03:00
64 lines
2.8 KiB
Python
64 lines
2.8 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import re
|
|
|
|
|
|
def makeurl(issue, repo=""):
|
|
if not repo:
|
|
repo = "godot"
|
|
|
|
return f"https://github.com/godotengine/{repo}/issues/{issue}"
|
|
|
|
|
|
tests = [
|
|
{"text": "#100", "results": [makeurl(100)]},
|
|
{"text": "godot#100", "results": [makeurl(100)]},
|
|
{"text": "issue-bot#100", "results": [makeurl(100, "issue-bot")]},
|
|
{"text": "#100,text", "results": [makeurl(100)]},
|
|
{"text": "#100,#101,#102", "results": [makeurl(100), makeurl(101), makeurl(102)]},
|
|
{"text": "text #100,#101,#102 text", "results": [makeurl(100), makeurl(101), makeurl(102)]},
|
|
{
|
|
"text": "text issue-bot#100,godot#101,collada-exporter#102 text",
|
|
"results": [makeurl(100, "issue-bot"), makeurl(101), makeurl(102, "collada-exporter")],
|
|
},
|
|
{"text": "text #100", "results": [makeurl(100)]},
|
|
{"text": "text #100 text", "results": [makeurl(100)]},
|
|
{"text": "text #100 #101 text", "results": [makeurl(100), makeurl(101)]},
|
|
{"text": "godot#100", "results": [makeurl(100)]},
|
|
{"text": "text godot#100 text", "results": [makeurl(100)]},
|
|
{"text": "godot#100 text", "results": [makeurl(100)]},
|
|
{"text": "repo.name#100 text", "results": [makeurl(100, "repo.name")]},
|
|
{"text": "(#100) text", "results": [makeurl(100)]},
|
|
{"text": "(repo#100) text", "results": [makeurl(100, "repo")]},
|
|
{"text": "https://github.com/godotengine/issue-bot/issues/2", "results": [makeurl(2, "issue-bot")]},
|
|
{"text": "https://github.com/godotengine/godot/pull/100", "results": [makeurl(100)]},
|
|
{"text": "http://github.com/godotengine/godot/pull/100", "results": [makeurl(100)]},
|
|
{"text": "github.com/godotengine/godot/pull/100", "results": [makeurl(100)]},
|
|
{"text": "https://github.com/godotengine/godot/pull/100#issuecomment-1", "results": [makeurl(100)]},
|
|
{
|
|
"text": "https://github.com/godotengine/godot-cpp/pull/373/checks?check_run_id=1802261888",
|
|
"results": [makeurl(373, "godot-cpp")],
|
|
},
|
|
{
|
|
"text": "a long line of text with an url https://github.com/godotengine/godot/issues/100 and some tags #102 repo#103",
|
|
"results": [makeurl(102), makeurl(103, "repo"), makeurl(100)],
|
|
},
|
|
{"text": "just a bunch of text", "results": []},
|
|
{"text": "Bunch of ## nonsense ##sdf $$", "results": []},
|
|
]
|
|
|
|
tag_prog = re.compile("([A-Za-z0-9_.-]+)?#(\d+)")
|
|
url_prog = re.compile("(https?://)?github.com/([A-Za-z0-9_.-]+)/([A-Za-z0-9_.-]+)/(issues|pull)/(\d+)(\S*)")
|
|
for test in tests:
|
|
text = test["text"]
|
|
result = []
|
|
|
|
for match in re.finditer(tag_prog, text):
|
|
result.append(makeurl(match.group(2), match.group(1)))
|
|
|
|
for match in re.finditer(url_prog, text):
|
|
result.append(makeurl(match.group(5), match.group(3)))
|
|
|
|
if test["results"] != result:
|
|
print(f'FAILED for {text}: expected {test["results"]} got: {result}')
|