テストマトリクス
テストの面は make test 1 つではありません。Formulon は 1 ソースツリーから複数パッケージを出荷するため、層(core / oracle / packaging / parity)ごとに異なる種類の回帰を捕えます。
用語: CTest labels
CTest はテストにテキストラベル(SLOW / LOAD / VARIANT など)を付け、ラベルで include / exclude できます。pre-commit では遅いテストを除外し、CI ではそれらも回す、という運用が可能です。
Core テスト
make build
make test
make test-slow
make test-allmake test は SLOW と LOAD ラベルを除外します。make test-all は最も広い CTest セット。commit 前に make test、core を触る PR を出す前に make test-all。
Oracle テスト
make oracle-verifyoracle verification は Excel から取得済みの JSON と Formulon 出力を比較します。Excel を起動しないので CI でも安全です。
variant oracle テストは opt-in:
cmake -B build -DFORMULON_ORACLE_VARIANTS=ON
cmake --build build --target formulon_oracle_variant_tests
cd build && ctest -L VARIANT --output-on-failureprofile 固有差分の調査や、新 profile を追加する前に使います。
パッケージング smoke test
| surface | コマンド |
|---|---|
| WASM | make wasm、make test-wasm、make npm-test |
| Python | make python-test |
| Native Node | make node-test |
| CLI | tests/cli 配下の CTest target |
各 binding の load → mutate → recalc → save ループが core 変更後も成立することを確認します。
Surface 間の parity
make parity-testparity runner は利用可能 channel すべてで共有 fixture を評価し、2 つ以上の surface が食い違ったら mismatch を報告します。未ビルドの channel は failure ではなく missing として扱われるので、Emscripten / Excel / 特定 toolchain を持たないマシンからも contribute できます。
parity と oracle の違いを 1 行で
parity = 自分たちの surface 同士が一致している。oracle = 自分たちが Excel と一致している。リリース前には両方の signal が必要です。
診断
| コマンド | 目的 |
|---|---|
RegistryCatalog.CoverageReport | 正規カタログに対する実行時の関数登録状態 |
make behavior-status | behavior vocabulary の status |
make coverage | ローカル coverage 診断 |
make mutation | ローカル mutation testing 診断 |
次に読むもの
- ソースからビルド ─ テスト対象のビルド方法
- Oracle 提供 ─
oracle-verifyが消費するデータ - リリースチェックリスト ─ 各テストがリリース時いつ走るか