dowel

実物フィクスチャ

現実の形をしたプロジェクトを丸ごと置く。合成した小さなプロジェクトでは 現れない性質を、利用者と同じ立場から確かめるための層である。 設計の全体は docs/51-testing.md にある。

規約

  • tests/projects/<name>/ が1つのフィクスチャ
  • dowel.toml を持つ直下のディレクトリがパッケージ
  • ハーネス(crates/dowel-cli/tests/fixture.rs)は各パッケージで check → build → もう一度 build(2回目は何も走らないこと)→ test を行う
  • フィクスチャは自分自身を検査する。 ビルドシステムの意味論に対する主張は、 可能な限り C 側の #error と終了状態で書く。利用者が実際に確かめる形と同じであり、 Rust 側の期待値と二重に持たなくて済むため
  • C から観測できないもの(compile_commands.json の中身、伝播しないことの否定、 再ビルドで何が走ったか)だけをハーネス側に書く
  • 各フィクスチャの README.md に「何を固定するか」を書く。 これが無いと、壊れたときに「直すべきか、期待値を変えるべきか」が判断できない

ビルド成果物を置かない

ハーネスは target/ 配下へ複製してからビルドする。このディレクトリの下に .dowel/ や compile_commands.json が現れたら、それはハーネスの経路を 通らずに実行した跡である(e2e の the_build_leaves_no_stray_files_in_the_project が同種の退行を検出する)。

一覧

フィクスチャ 固定するもの
layered 3層・5パッケージの依存形状。公開/非公開の伝播、ダイヤモンド、推移的なインクルード探索
configured match / 後置 when / 機能フラグの組み合わせ。構成を切り替えたときの分岐と、有効でない任意の依存