Add simple script to add pytest marks

This commit is contained in:
Lj Miranda 2021-11-05 10:33:53 +08:00
parent f0e8c9fe58
commit 199943deb4

View File

@ -0,0 +1,41 @@
import re
from pathlib import Path
from typing import Optional
import typer
def main(
filename: Path, out_file: Optional[Path] = typer.Option(None), dry_run: bool = False
):
"""Add pytest issue markers on regression tests
If --out-file is not used, it will overwrite the original file. You can set
the --dry-run flag to just see the changeset and not write to disk.
"""
lines = []
with filename.open() as f:
lines = f.readlines()
# Regex pattern for matching common regression formats (e.g. test_issue1234)
pattern = r"def test_issue\d{1,4}"
regex = re.compile(pattern)
new_lines = []
for line_text in lines:
if regex.search(line_text): # if match, append marker first
issue_num = int(re.findall(r"\d+", line_text)[0]) # Simple heuristic
typer.echo(f"Found: {line_text} with issue number: {issue_num}")
new_lines.append(f"@pytest.mark.issue({issue_num})\n")
new_lines.append(line_text)
# Save to file
if not dry_run:
out = out_file or filename
with out.open("w") as f:
for new_line in new_lines:
f.write(new_line)
if __name__ == "__main__":
typer.run(main)