async def gather_commits(version: str) -> str:
p = await asyncio.create_subprocess_exec(
- 'git', 'log', '--oneline', f'mesa-{version}..', '--grep', r'\(Closes\|Fixes\): \(https\|#\).*',
+ 'git', 'log', '--oneline', f'mesa-{version}..', '-i', '--grep', r'\(Closes\|Fixes\): \(https\|#\).*',
stdout=asyncio.subprocess.PIPE)
out, _ = await p.communicate()
assert p.returncode == 0, f"git log didn't work: {version}"
out = _out.decode().split('\n')
for line in reversed(out):
- if not line.startswith(('Closes:', 'Fixes:')):
+ if not line.lower().startswith(('closes:', 'fixes:')):
continue
bug = line.split(':', 1)[1].strip()
if (bug.startswith('https://gitlab.freedesktop.org/mesa/mesa')
''',
['36', '37'],
),
+ (
+ '''\
+ Parse Fixes/Closes in weird cases
+
+ fixes: https://gitlab.freedesktop.org/mesa/mesa/issues/36
+ fiXES: https://gitlab.freedesktop.org/mesa/mesa/issues/37
+ closes: https://gitlab.freedesktop.org/mesa/mesa/issues/38
+ cloSES: https://gitlab.freedesktop.org/mesa/mesa/issues/39
+ ''',
+ ['36', '37', '38', '39'],
+ ),
])
async def test_parse_issues(content: str, bugs: typing.List[str]) -> None:
mock_com = mock.AsyncMock(return_value=(textwrap.dedent(content).encode(), ''))