self = monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x11b1b0e60> def test_range_uses_only_trading_days_and_is_idempotent_shape(self, monkeypatch): filed = [] def fake_file_bug(*args, **kwargs): filed.append((args, kwargs)) return {"fingerprint": f"fp-{kwargs['pattern']}", "created": True} monkeypatch.setattr(FE.BL, "file_bug", fake_file_bug) monkeypatch.setattr(FE.BL, "set_context", lambda *args, **kwargs: None) monkeypatch.setattr( "rtrader.scheduler.get_trading_days_between", lambda start_date, end_date: [date(2026, 7, 2), date(2026, 7, 6)], ) plan = FE.file_per_day_eval_bugs( start=date(2026, 7, 2), end=date(2026, 7, 6), branch="9d948937ae", run_id="anchor-1", actor="test", ) assert plan["count"] == 2 assert [row["day"] for row in plan["days"]] == ["2026-07-02", "2026-07-06"] assert all("--date" in row["command"] and "--branch 9d948937ae" in row["command"] for row in plan["days"]) assert all(call[1]["requires_coding"] is False and call[1]["kind"] == "ops" for call in filed) > assert all("anchor-1" in call[1]["context"] for call in filed) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/services/test_flywheel_eval.py:289: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ .0 = > assert all("anchor-1" in call[1]["context"] for call in filed) ^^^^^^^^^^^^^^^^^^ E KeyError: 'context' tests/services/test_flywheel_eval.py:289: KeyError