Skip to content

テストマトリクス

テストの面は make test 1 つではありません。Formulon は 1 ソースツリーから複数パッケージを出荷するため、層(core / oracle / packaging / parity)ごとに異なる種類の回帰を捕えます。

用語: CTest labels

CTest はテストにテキストラベル(SLOW / LOAD / VARIANT など)を付け、ラベルで include / exclude できます。pre-commit では遅いテストを除外し、CI ではそれらも回す、という運用が可能です。

Core テスト

sh
make build
make test
make test-slow
make test-all

make testSLOWLOAD ラベルを除外します。make test-all は最も広い CTest セット。commit 前に make test、core を触る PR を出す前に make test-all

Oracle テスト

sh
make oracle-verify

oracle verification は Excel から取得済みの JSON と Formulon 出力を比較します。Excel を起動しないので CI でも安全です。

variant oracle テストは opt-in:

sh
cmake -B build -DFORMULON_ORACLE_VARIANTS=ON
cmake --build build --target formulon_oracle_variant_tests
cd build && ctest -L VARIANT --output-on-failure

profile 固有差分の調査や、新 profile を追加する前に使います。

パッケージング smoke test

surfaceコマンド
WASMmake wasmmake test-wasmmake npm-test
Pythonmake python-test
Native Nodemake node-test
CLItests/cli 配下の CTest target

各 binding の load → mutate → recalc → save ループが core 変更後も成立することを確認します。

Surface 間の parity

sh
make parity-test

parity 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-statusbehavior vocabulary の status
make coverageローカル coverage 診断
make mutationローカル mutation testing 診断

次に読むもの