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 を出力して実行が停止します。修正して再実行すると次のエラーが表示されます。
  • ディレクトリは再帰的に探索されません。 サブディレクトリは探索されません。

次のステップ