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

当没有可执行行失败时,退出状态为 0。

日常任务

运行文件和目录

gda path/to/add.decTest path/to/multiply.decTest
gda .tmp/decimal/official          # every *.decTest directly in the directory

文件按路径排序,并作为一次运行执行。

选择行

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 时,只要有任何被选中的行不受支持或属于遗留(legacy)行,即使所有已执行的行都通过,退出状态也为 1。

深入了解

  • just conformance run decimal_gda 会获取固定版本的官方语料,按 testdata/decimal/interpreter_stages.json 将其划分为各阶段,并用此运行器并行运行各分片。
  • gda_expr 教程 解释了行的语义和通过规则。

常见陷阱

  • --help 返回 2。 运行器将其用法作为错误打印;经由分发器时,--help 显示的则是分发器的用法。
  • 只报告第一个解析错误。 格式错误的行会以一条 file:line:1: message 终止运行;修正后重新运行才能看到下一个错误。
  • 目录不递归。 不会搜索子目录。

后续步骤