現実の形をしたプロジェクトを丸ごと置く。合成した小さなプロジェクトでは
現れない性質を、利用者と同じ立場から確かめるための層である。
設計の全体は docs/51-testing.md にある。
tests/projects/<name>/ が1つのフィクスチャdowel.toml を持つ直下のディレクトリがパッケージcrates/dowel-cli/tests/fixture.rs)は各パッケージで
check → build → もう一度 build(2回目は何も走らないこと)→ test を行う#error と終了状態で書く。利用者が実際に確かめる形と同じであり、
Rust 側の期待値と二重に持たなくて済むため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 / 機能フラグの組み合わせ。構成を切り替えたときの分岐と、有効でない任意の依存 |