Spaces:
Running on Zero
Running on Zero
| """PR-style patch export for generated tests.""" | |
| from __future__ import annotations | |
| import difflib | |
| from pathlib import Path | |
| from generator import GeneratedSuite | |
| def make_pr_patch(suite: GeneratedSuite) -> str: | |
| """Return a unified diff that adds the generated tests and a CI hint.""" | |
| sections: list[str] = [] | |
| for relative, content in sorted(suite.files.items()): | |
| new_lines = content.splitlines(keepends=True) | |
| diff = difflib.unified_diff( | |
| [], | |
| new_lines, | |
| fromfile="/dev/null", | |
| tofile=f"b/{relative}", | |
| lineterm="", | |
| ) | |
| sections.append("\n".join(diff)) | |
| ci_hint = "pytest tests -q\n" | |
| sections.append( | |
| "\n".join( | |
| difflib.unified_diff( | |
| [], | |
| [ci_hint], | |
| fromfile="/dev/null", | |
| tofile="b/TESTFORGE_CI_HINT.txt", | |
| lineterm="", | |
| ) | |
| ) | |
| ) | |
| return "\n\n".join(sections) + "\n" | |
| def write_patch(suite: GeneratedSuite, path: str | Path) -> Path: | |
| output = Path(path) | |
| output.parent.mkdir(parents=True, exist_ok=True) | |
| output.write_text(make_pr_patch(suite), encoding="utf-8") | |
| return output | |