ITSUKI.
技術735 文字2 分

Day 28|Contract Test — 境界の約束を、両側から確かめる

#Codex#ソースコードリーディング#図解

この章しょうの答こたえ

要求ようきゅう・永続えいぞく状態じょうたいの変更へんこう・返答へんとう・通知つうちが、同おなじ意味いみでつながることを検証けんしょうする。

TUI のテストとサーバーのテストがそれぞれ通とおっていても、間あいだの約束やくそくがずれていると利用者りようしゃの操作そうさは壊こわれます。thread/revert を題材だいざいに、何なにを変更へんこうし、何なにを返かえす API なのかを具体化ぐたいかします。

01|図でつかむ

図28|Contract Test

返答へんとうと通知つうちの順序じゅんじょや内容ないようはテスト対象たいしょう。図ずは固定こていの配信はいしん順じゅんを保証ほしょうするものではない。

02|3つのポイントで理解する

1. 何を戻す操作かを明確にする

確認かくにんした ThreadRevertParams は、指定してい turn より前まえの保存ほぞん済すみ会話かいわ履歴りれきへ置き換おきかえる操作そうさです。ファイルの変更へんこうを元もとに戻もどす操作そうさではありません。この区別くべつが契約けいやくの中心ちゅうしんです。

2. 応答だけで履歴がそろうかを見る

確認かくにんした型かたの説明せつめいでは、返かえす thread の turns は空からで、保持ほじされた履歴りれきは一覧いちらん API から取得しゅとくします。応答おうとうにすべての turn が入はいると思い込おもいこむと、UI の復元ふくげんが不完全ふかんぜんになります。

3. 失敗時の状態も契約に含める

不正ふせいな対象たいしょうを指定していしたとき、エラーだけでなく保存状態ほぞんじょうたいがどう残のこるかを確たしかめます。成功せいこう時ときは通知つうちと再さい取得しゅとくが同おなじ履歴りれきを示しめすかを見みます。

03|ソースで確かめる

以下いかの検索けんさくは Codex リポジトリのルートで実行じっこうします。最初さいしょに対象たいしょう commit を記録きろくし、検索結果けんさくけっかから定義ていぎと呼び出よびだし元もとを一ひとつずつ開ひらいてください。

git rev-parse --short HEAD
rg -n "ThreadRevertParams|ThreadRevertResponse" codex-rs

読よむ入口いりぐち: codex-rs/app-server-protocol/src/protocol/v2/thread.rs 。リンク先さきは照合しょうごうに使つかった固定こてい commit のファイルです。手元てもとの版はんと異ことなる場合ばあいは、上うえの検索語けんさくごから探さがし直なおします。

小さく試す

ThreadRevertParams と Response のコメントを読よみ、入力にゅうりょく、変更対象へんこうたいしょう、返答へんとう、再さい取得しゅとくの必要性ひつようせいを四行よんぎょうで整理せいりします。

04|30秒で復習

  • API が何なにを変更へんこうするかを明確めいかくにする。
  • 応答おうとうにない情報じょうほうは別途べっと取得しゅとくする。
  • 成功せいこうと失敗しっぱいの両方りょうほうで保存状態ほぞんじょうたいを確認かくにんする。

全ぜん30章しょうの目次もくじへ