Skip to content

Commit e553254

Browse files
Kasper Jungeclaude
authored andcommitted
refactor: deduplicate check result data construction in _run_checks_phase
Build each check result dict once and reuse it for both per-check events and the summary event, eliminating the dual data construction that used inconsistent key names (check_name vs name). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent bb8dcc3 commit e553254

3 files changed

Lines changed: 19 additions & 22 deletions

File tree

src/ralphify/engine.py

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -354,34 +354,31 @@ def _run_checks_phase(
354354

355355
check_results = run_all_checks(enabled_checks, project_root)
356356

357+
# Build per-result data once; reused for both per-check and summary events.
358+
results_data: list[dict] = []
357359
for cr in check_results:
360+
result = {
361+
"name": cr.check.name,
362+
"passed": cr.passed,
363+
"exit_code": cr.exit_code,
364+
"timed_out": cr.timed_out,
365+
}
366+
results_data.append(result)
358367
emitter.emit(Event(
359368
type=EventType.CHECK_PASSED if cr.passed else EventType.CHECK_FAILED,
360369
run_id=state.run_id,
361-
data={
362-
"iteration": iteration,
363-
"check_name": cr.check.name,
364-
"exit_code": cr.exit_code,
365-
"timed_out": cr.timed_out,
366-
},
370+
data={"iteration": iteration, **result},
367371
))
368372

373+
passed = sum(1 for r in results_data if r["passed"])
369374
emitter.emit(Event(
370375
type=EventType.CHECKS_COMPLETED,
371376
run_id=state.run_id,
372377
data={
373378
"iteration": iteration,
374-
"passed": sum(1 for r in check_results if r.passed),
375-
"failed": sum(1 for r in check_results if not r.passed),
376-
"results": [
377-
{
378-
"name": r.check.name,
379-
"passed": r.passed,
380-
"exit_code": r.exit_code,
381-
"timed_out": r.timed_out,
382-
}
383-
for r in check_results
384-
],
379+
"passed": passed,
380+
"failed": len(results_data) - passed,
381+
"results": results_data,
385382
},
386383
))
387384

src/ralphify/ui/persistence.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ async def _on_check_result(
228228
(
229229
run_id,
230230
iteration,
231-
data.get("check_name", ""),
231+
data.get("name", ""),
232232
1 if event_type == EventType.CHECK_PASSED else 0,
233233
data.get("exit_code"),
234234
1 if data.get("timed_out") else 0,

tests/test_persistence.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ async def test():
197197
await store.save_event(_make_event(event_type="run_started"))
198198
await store.save_event(_make_event(
199199
event_type="check_passed",
200-
data={"iteration": 1, "check_name": "pytest", "exit_code": 0, "timed_out": False},
200+
data={"iteration": 1, "name": "pytest", "exit_code": 0, "timed_out": False},
201201
))
202202

203203
checks = await store.get_check_results("run-001", 1)
@@ -215,7 +215,7 @@ async def test():
215215
await store.save_event(_make_event(event_type="run_started"))
216216
await store.save_event(_make_event(
217217
event_type="check_failed",
218-
data={"iteration": 2, "check_name": "mypy", "exit_code": 1, "timed_out": False},
218+
data={"iteration": 2, "name": "mypy", "exit_code": 1, "timed_out": False},
219219
))
220220

221221
checks = await store.get_check_results("run-001", 2)
@@ -295,12 +295,12 @@ async def test():
295295
# Checks for iteration 1
296296
await store.save_event(_make_event(
297297
event_type="check_passed",
298-
data={"iteration": 1, "check_name": "pytest", "exit_code": 0},
298+
data={"iteration": 1, "name": "pytest", "exit_code": 0},
299299
))
300300
# Checks for iteration 2
301301
await store.save_event(_make_event(
302302
event_type="check_failed",
303-
data={"iteration": 2, "check_name": "mypy", "exit_code": 1},
303+
data={"iteration": 2, "name": "mypy", "exit_code": 1},
304304
))
305305

306306
checks_1 = await store.get_check_results("run-001", 1)

0 commit comments

Comments
 (0)