実物フィクスチャ
現実の形をしたプロジェクトを丸ごと置く。合成した小さなプロジェクトでは
現れない性質を、利用者と同じ立場から確かめるための層である。
設計の全体は 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 / 機能フラグの組み合わせ。構成を切り替えたときの分岐と、有効でない任意の依存 |