mirror of
https://github.com/MadsLorentzen/ai-job-search.git
synced 2026-11-05 06:27:56 +00:00
fix(check_framework_version): decode git diff output as UTF-8 (#511)
* fix(check_framework_version): decode git diff output as UTF-8 run_git() passed subprocess.run(text=True) with no explicit encoding, so it fell back to the host locale's default codec - cp1252 on Windows - instead of UTF-8. Any non-ASCII byte in a modified framework file's diff (e.g. an em dash in a profile edit) then raised UnicodeDecodeError before the gate could evaluate the change, instead of a pass/fail verdict. Reproduced on a real Windows checkout. Pin encoding="utf-8" on the subprocess.run() call. Added a regression test that patches subprocess.run and asserts run_git() always passes encoding="utf-8" - confirmed it fails against the pre-fix code and passes against the fix. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * fix(check_framework_version): address review on UTF-8 decode fix Per MadsLorentzen's review on PR #511: - Add errors="replace" alongside encoding="utf-8" on the subprocess.run() call, matching the convention used elsewhere in this repo (robots_check.py). - Correct the docstring: an em dash does not crash the un-pinned decode (cp1252 maps it fine); the actual trigger is a byte cp1252 leaves undefined, e.g. Cyrillic Ё/ё, much CJK, or Á-class Latin. - Correct "profile file" to "framework file" - the tool only diffs the framework's own directories, not arbitrary profile files. - Add a CHANGELOG entry under [Unreleased] / Fixed naming the tool and test. --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f9ef82f169
commit
27a9b4a91d
3 files changed
+58
-1
No files matched your search
@@ -23,7 +23,14 @@ if root_agents.exists():
|
||||
FRAMEWORK_FILES.append(root_agents)
|
||||
|
||||
def run_git(args: list[str]) -> tuple[int, str, str]:
|
||||
res = subprocess.run(["git"] + args, cwd=str(ROOT), capture_output=True, text=True)
|
||||
res = subprocess.run(
|
||||
["git"] + args,
|
||||
cwd=str(ROOT),
|
||||
capture_output=True,
|
||||
text=True,
|
||||
encoding="utf-8",
|
||||
errors="replace",
|
||||
)
|
||||
return res.returncode, res.stdout, res.stderr
|
||||
|
||||
def get_base_commit() -> str | None:
|
||||
|
||||
Reference in new issue
Block a user