fix: decode harness git output as utf-8
This commit is contained in:
+4
-2
@@ -58,7 +58,7 @@ class StepExecutor:
|
|||||||
"""Phase 디렉토리 안의 step들을 순차 실행하는 하네스."""
|
"""Phase 디렉토리 안의 step들을 순차 실행하는 하네스."""
|
||||||
|
|
||||||
MAX_RETRIES = 3
|
MAX_RETRIES = 3
|
||||||
FEAT_MSG = "feat({phase}): step {num} — {name}"
|
FEAT_MSG = "feat({phase}): step {num} - {name}"
|
||||||
CHORE_MSG = "chore({phase}): step {num} output"
|
CHORE_MSG = "chore({phase}): step {num} output"
|
||||||
TZ = timezone(timedelta(hours=9))
|
TZ = timezone(timedelta(hours=9))
|
||||||
|
|
||||||
@@ -112,7 +112,9 @@ class StepExecutor:
|
|||||||
|
|
||||||
def _run_git(self, *args) -> subprocess.CompletedProcess:
|
def _run_git(self, *args) -> subprocess.CompletedProcess:
|
||||||
cmd = ["git"] + list(args)
|
cmd = ["git"] + list(args)
|
||||||
return subprocess.run(cmd, cwd=self._root, capture_output=True, text=True)
|
return subprocess.run(
|
||||||
|
cmd, cwd=self._root, capture_output=True, text=True, encoding="utf-8"
|
||||||
|
)
|
||||||
|
|
||||||
def _checkout_branch(self):
|
def _checkout_branch(self):
|
||||||
branch = f"feat-{self._phase_name}"
|
branch = f"feat-{self._phase_name}"
|
||||||
|
|||||||
@@ -34,3 +34,28 @@ def test_invoke_codex_uses_utf8_for_unicode_prompt(tmp_path, monkeypatch):
|
|||||||
|
|
||||||
assert "Euler–Bernoulli 보" in invocation["kwargs"]["input"]
|
assert "Euler–Bernoulli 보" in invocation["kwargs"]["input"]
|
||||||
assert invocation["kwargs"]["encoding"] == "utf-8"
|
assert invocation["kwargs"]["encoding"] == "utf-8"
|
||||||
|
|
||||||
|
|
||||||
|
def test_run_git_decodes_output_as_utf8(tmp_path, monkeypatch):
|
||||||
|
invocation = {}
|
||||||
|
|
||||||
|
def capture_run(command, **kwargs):
|
||||||
|
invocation["command"] = command
|
||||||
|
invocation["kwargs"] = kwargs
|
||||||
|
return subprocess.CompletedProcess(command, 0, stdout="", stderr="")
|
||||||
|
|
||||||
|
monkeypatch.setattr(execute.subprocess, "run", capture_run)
|
||||||
|
executor = object.__new__(execute.StepExecutor)
|
||||||
|
executor._root = str(tmp_path)
|
||||||
|
|
||||||
|
executor._run_git("status", "--short")
|
||||||
|
|
||||||
|
assert invocation["kwargs"]["encoding"] == "utf-8"
|
||||||
|
|
||||||
|
|
||||||
|
def test_feature_commit_message_is_windows_console_safe():
|
||||||
|
message = execute.StepExecutor.FEAT_MSG.format(
|
||||||
|
phase="linear-static-3d-euler-beam", num=0, name="requirements-baseline"
|
||||||
|
)
|
||||||
|
|
||||||
|
message.encode("cp949")
|
||||||
|
|||||||
Reference in New Issue
Block a user