支持的版本:当前 (17) / 16 / 15 / 14 / 13
开发版本:devel
不支持的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1

31.3. 变体比较文件 #

由于某些测试本质上会产生依赖于环境的结果,我们提供了一些方法来指定备用的预期结果文件。每个回归测试可以有几个比较文件,显示不同平台上可能的结果。有两种独立的机制来确定每个测试使用哪个比较文件。

第一种机制允许为特定平台选择比较文件。有一个映射文件 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 和名为 testname_digit.out 的变体文件(其中 digit 是任何单个数字 0-9)。如果任何此类文件完全匹配,则认为测试通过;否则,使用产生最短差异的文件来创建失败报告。(如果 resultmap 包含特定测试的条目,则基本 testnameresultmap 中给定的替换名称。)

例如,对于 char 测试,比较文件 char.out 包含在 CPOSIX 区域设置中预期的结果,而文件 char_1.out 包含许多其他区域设置中出现的排序结果。

最佳匹配机制旨在处理依赖于区域设置的结果,但它可用于仅从平台名称无法轻易预测测试结果的任何情况。此机制的局限性在于,测试驱动程序无法判断哪个变体实际上对于当前环境是正确的;它只会选择似乎最有效的变体。因此,仅对您愿意在所有上下文中都认为同样有效的变体结果使用此机制是最安全的。

提交更正

如果您发现文档中的任何内容不正确,与您使用特定功能的体验不符,或需要进一步澄清,请使用此表单报告文档问题。