Postgresql 中文操作指南
33.3. Variant Comparison Files #
由于某些测试本质上会产生环境相关的结果,因此我们提供了指定备用“预期”结果文件的方法。每个回归测试可以有几个比较文件,显示不同平台上的可能结果。有两种独立的机制用于确定每个测试使用的比较文件。
第一个机制允许为特定平台选择比较文件。有一个映射文件 src/test/regress/resultmap,它定义了在每个平台中使用的比较文件。为了消除特定平台上的虚假测试“失败”,您首先选择或制作一个变体结果文件,然后向 resultmap 文件中添加一行。
映射文件中的每一行都采用以下形式:
testname:output:platformpattern=comparisonfilename
测试名称只是特定回归测试模块的名称。输出值表示要检查的输出文件。对于标准回归测试,这始终是 out。该值对应于输出文件的扩展名。平台模式采用 Unix 工具 expr 样式的模式(即,在开头带有隐式 ^ 锚点的正则表达式)。它与 config.guess 打印的平台名称相匹配。比较文件名是替代结果比较文件的基名称。
例如:一些系统缺少工作 strtof 功能,对此我们的解决方法会导致 float4 回归测试中出现舍入误差。因此,我们提供了一个变体比较文件 float4-misrounded-input.out,其中包含预期的这些系统的结果。为了消除 Cygwin 平台上的虚假“失败”消息,resultmap 包含:
float4:out:.*-.*-cygwin.*=float4-misrounded-input.out
它会在任何输出 config.guess 匹配 .-.-cygwin.* 的机器上触发。resultmap 中的其他行会为适当的其他平台选择变量比较文件。
用于变体比较文件的第二个选择机制更加自动化:它只是简单地使用提供的多个比较文件中的“最佳匹配”。回归测试驱动脚本既考虑测试的标准比较文件, testname.out_, and variant files named _ testname___digit_.out_(其中 digit 是任何一个数字 0 到 9 )。如果有任何一个这样的文件完全匹配,则认为测试通过;否则,将使用生成最短的 diff 的那个文件创建失败报告。(如果 resultmap 为特定测试包含一个条目,则基本名称 testname 是在 resultmap 中给出的替换名称。)
例如,对于 char 测试,比较文件 char.out 包含 C 和 POSIX 本地预期结果,而文件 char_1.out 包含按许多其他本地显示排序的结果。
最佳匹配机制旨在应对与区域相关的结果,但它可以在无法仅从平台名称轻松预测测试结果的任何情况下使用。此机制的一个限制是:测试驱动程序无法判断哪个变量实际上是当前环境的“正确”答案;它只挑选看起来效果最好的那个变体。因此,最安全的做法是仅将此机制用于您愿意在所有上下文中都同样考虑有效的结果变体。