← 実例マッピング | livt
ストーリー ルール 提案中のルール テストが自動化している 具体例 疑問点 ユビキタス言語
表示
実装リポジトリのテストから自動化を集めてレポートにする→

ルール

8
#R-01
テストは自動化する対象を、マーカー付きのlivt URIで示す
具体例6
#EX-01
コメント行に livt:automates と1つのlivt URIを並べて書く
#EX-02
コメントの書き方は各言語の構文に従い、livtは言語を知らない
#EX-03
マーカーのない裸のlivt URIはただの参照で、自動化として数えない
#EX-04
1つのテストが複数を自動化するなら、1行1URIで並べる
#EX-05
プレースホルダを含むURIは引用として数えない(マーカーの書き方をドキュメントに示せる)
#EX-06
マーカーはあるがURIが1つに読めない行は、黙って落とさず警告する
#R-02
走査はルールと具体例を独立に拾い、構造を推論しない
具体例4
#EX-01
ルールのURIを引用すればルールが、具体例のURIを引用すればその具体例が自動化済みになる
#EX-02
具体例が全て引用されていても、ルール自身は自動化済みにならない
#EX-03
ルールを囲むブロックに具体例のケースを入れ子にするのは書き手の作法で、走査は行とURIしか見ない
#EX-04
構造を読まないから、テストフレームワークごとの知識を持たずに済む
#R-03
どの実装リポジトリが参加するかは実装側のCIが決め、livtリポジトリは宣言を持たない
具体例7
#EX-01
livt automations <path> がそのチェックアウトを走査してレポートを出す
#EX-03
livtリポジトリはsubmoduleを持たない(ピン留めは投影の鮮度を殺す)
#EX-08
実装リポジトリは走査せず、マージしたrevを通知するだけで、そのrevをfetchして走査するのはlivtリポジトリ側
#EX-09
参加は実装リポジトリのCIにlivtが配るactionを1つ足すことで決まり、走査の作法を写す必要はない
#EX-10
資格情報は実装リポジトリ側がlivtリポジトリへdispatchを送る1本と、livtリポジトリ側が実装リポジトリを読む1本(publicなら後者は要らない)
#EX-11
livtリポジトリ自身が実装リポジトリを兼ねる場合も、既定のGITHUB_TOKENでは足りない(それが署名したdispatchはworkflowを起動しない)
#EX-12
参加には段階があり、通知を組む前に手元の走査から始められる(レポートの型が同じなので、後でCIに移しても同じものが出る)
#R-04
レポートは引用の事実だけを運び、判断を持たない
具体例4
#EX-01
各エントリはlivt URIとファイル・行を示す
#EX-02
レポートは実装リポジトリの識別子・rev・生成時刻を名乗る
#EX-03
自動化済みかどうかの判断は書かない(導出はderive-automation-status側)
#EX-04
汚れた作業ツリーではrevを名乗らない(走査は作業ツリーを読むので、HEADを名乗ると行がズレる)
#R-05
レポートはlivtリポジトリにコミットし、書き戻しは機械だけが行う
具体例8
#EX-04
レポートは生成物としてディスカバリーの成果物の外に置き、人は手で編集しない
#EX-06
レポートは生成時刻を名乗り、古いレポートは古いものとして映る
#EX-07
読み手はlivtリポジトリの権限だけで状況を読め、実装リポジトリへの権限は要らない
#EX-08
artifactや外部サービスには置かない(読むのに同じ権限が要り、期限で消え、過去のリビジョンで引けない)
#EX-10
置き場は automations/{owner}/{repo}.json で、実装リポジトリごとに1ファイル
#EX-11
内容が変わったときだけPRを出し、ブランチは実装リポジトリごとに1本を更新する
#EX-13
実装リポジトリのCIはマージしたrevを通知するだけで、走査もPR作成もlivtリポジトリ側が行う
#EX-14
置き場・ブランチ名・コミット・PR本文を知るのはlivtリポジトリ側だけで、実装リポジトリは通知先しか知らない
#R-06
テストの所在はforgeのURLとして運べるが、無くても自動化の判定は変わらない
具体例4
#EX-01
既定で知るのは github.com と gitlab.com のURL形だけ
#EX-02
セルフホストはホスト名で見分けられないので、forgeかテンプレートをCIが宣言する
#EX-03
URLはrevで固定し、走査した時点のコードを指す
#EX-04
URLを組み立てられないときはファイルと行をそのまま示し、リンクにしない
#R-07
走査もPRも、引用の集合が変わったかだけで決める
具体例7
#EX-01
pushの差分がマーカー行を足すか消したときだけ走査する
#EX-02
マーカー行の削除も走査の理由になる(テストが消えたのに自動化済みのまま残ると、ボードは現在について嘘をつく)
#EX-03
行の移動やファイルの改名では走査しない(レポートはrevで固定した時点のスナップショットで、後の移動はリンクを壊さない)
#EX-04
走査するときは差分を当てず、リポジトリ全体のレポートを作り直す
#EX-05
比べる基点が無いpushは走査する(新しいブランチやforce pushでは差分を読めない)
#EX-06
PRを出すかは引用の集合で比べる(rev・生成時刻・revから組むURLは走行ごとに動く)
#EX-07
判定はlivtのコマンドが持ち、CIは答えを受けて分岐するだけ(マーカーの綴りはlivtのもので、CIに写すと二重定義になる)
#R-08
ルールをどこで引用するかは実装リポジトリで働くAIスキルが導き、走査は推論しない
具体例5
#EX-01
ルールを囲むブロックがあるテストでは、ブロックにルールを、中の各ケースに具体例を引用する
#EX-03
具体例がすべて自動化されたからルールも自動化とみなすのはスキルの判断で、走査と導出は具体例の引用からルールを導かない
#EX-04
ルールを引用した後に具体例が増えても、スキルはルールの引用を外さず、増えた具体例に引用が無いことはサイトのボードで気付ける(ルールと具体例を独立に扱う以上、ルールの印だけでは崩れを言えない)
#EX-07
具体例はそれぞれ自分のテストケースを持ち、その引用はケースの直上に置く(入れ子でもフラットでも同じ)
#EX-08
囲むブロックのないフラットなテストでは、ルールの具体例がすべて引用されたときにルールの引用を足すが、具体例のURIがすでにルールを示すので近くで何度も繰り返さない(ファイルに1行はその一例で、置き方は決めない)

疑問点

1
疑問点
#Q-02 走査が拾うパターンをリポジトリごとに宣言できるようにするか(マーカーを1つに決めたので今は要らないが、言語ネイティブのアノテーションを使いたい場合の拡張先)
ユビキタス言語