由于部分测试的输出结果具有环境依赖性,我们提供了指定替代的“期望”结果文件的方法。每个回归测试都可以有多个比较文件,用于展示不同平台上的可能结果。有两种独立的机制可以决定为每个测试使用哪个比较文件。
第一种机制允许为特定平台选择比较文件。有一个映射文件 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
.outdigit
是任何单个数字 0
-9
)。如果任何此类文件完全匹配,则测试被认为通过;否则,将使用生成最短 diff 的文件来创建失败报告。(如果 resultmap
包含特定测试的条目,则基本 testname
是 resultmap
中给出的替代名称。)
例如,对于 char
测试,比较文件 char.out
包含在 C
和 POSIX
区域设置中预期的结果,而文件 char_1.out
包含在许多其他区域设置中出现的排序结果。
最佳匹配机制是为了处理区域设置依赖的结果而设计的,但它可用于任何测试结果不能仅凭平台名称轻松预测的情况。此机制的局限性在于,测试驱动程序无法确定当前环境“正确”的变体是哪个;它只会选择看起来效果最好的变体。因此,最安全的方法是仅将此机制用于您愿意在所有上下文中都视为同样有效的变体结果。
如果您在文档中发现任何不正确、与您对特定功能的经验不符或需要进一步澄清的内容,请使用 此表单 报告文档问题。