gda_expr_cli チュートリアル
このチュートリアルでは、GDA ランナーで .decTest ファイルを実行する方法を説明します。ファイルと行の選択、実行のシャード分割、JSON 出力の取得、サポートされない行で実行を失敗させる方法を扱います。ランナーは floating-conformance --backend gda として呼び出します。以下では gda でこのコマンドを略記します。
クイックスタート
実行ファイルをビルドし、コミット済みのスモークファイルを実行します。
just conformance build decimal_gda
_build/conformance/gda/native/release/build/gda-conformance.exe --backend gda
GDA expression execution summary
cases: …
selected cases: …
executable cases: …
passed cases: …
failed cases: 0
skipped cases: …
shard: 0/1
実行可能な行が 1 つも失敗しなければ、終了ステータスは 0 です。
日常的なタスク
ファイルとディレクトリを実行する
gda path/to/add.decTest path/to/multiply.decTest
gda .tmp/decimal/official # every *.decTest directly in the directory
ファイルはパス順にソートされ、1 回の実行としてまとめて実行されます。
行を選択する
gda --cases add001 add.decTest
gda --cases add001..add099,addx1001 add.decTest
範囲は、同じ長さで、ソート順が両端の間にある ID にマッチします。
実行をシャードに分割する
gda --json --shard-count 4 --shard-index 0 .tmp/decimal/official
gda --json --shard-count 4 --shard-index 1 .tmp/decimal/official
シャード i は、(--cases フィルタ適用後、全ファイルを通した)位置をシャード数で割った余りが i である行を実行します。全シャードの JSON カウンタを合計すると、シャード分割しない実行のカウンタになります。
サポートされない行で失敗させる
gda --strict-supported add.decTest
--strict-supported を指定すると、実行された行がすべて合格していても、選択された行のいずれかがサポート外またはレガシーであれば終了ステータスは 1 になります。
さらに進んで
just conformance run decimal_gdaは固定された公式コーパスを取得し、testdata/decimal/interpreter_stages.jsonのフェーズに分割して、このランナーでシャードを並列実行します。- 行の意味論と合格規則については gda_expr チュートリアル で説明しています。
よくある落とし穴
--helpは2を返します。 ランナーは使用法をエラーとして表示します。ディスパッチャ経由では、--helpはディスパッチャの使用法を表示します。- 最初の構文解析エラーのみ。 不正な行があると、1 つの
file:line:1: messageを出力して実行が停止します。修正して再実行すると次のエラーが表示されます。 - ディレクトリは再帰的に探索されません。 サブディレクトリは探索されません。
次のステップ
- オプション、出力キー、終了コードについては gda_expr_cli API。
- gda_expr_cli 設計。