On this page
32.3. 变体比较文件
由于某些测试固有地会产生与环境有关的结果,因此我们提供了指定备用“预期”结果文件的方法。每个回归测试可以具有几个比较文件,这些文件显示在不同平台上可能的结果。有两种独立的机制来确定每个测试使用哪个比较文件。
第一种机制允许为特定平台选择比较文件。有一个 Map 文件src/test/regress/resultmap
,用于定义每个平台要使用的比较文件。要消除特定平台的虚假测试“失败”,您首先选择或制作一个变体结果文件,然后在resultmap
文件中添加一行。
Map 文件中的每一行都是以下格式:
testname:output:platformpattern=comparisonfilename
测试名称只是特定回归测试模块的名称。输出值指示要检查的输出文件。对于标准回归测试,该值始终为out
。该值对应于输出文件的文件 extensions。平台模式是 Unix 工具expr
风格的模式(即,在开始时带有隐式^
锚的正则表达式)。它与config.guess
打印的平台名称匹配。比较文件名是替代结果比较文件的基本名称。
例如:有些系统将很小的浮点值解释为零,而不是报告下溢错误。这会在float8
回归测试中造成一些差异。因此,我们提供了一个变体比较文件float8-small-is-zero.out
,其中包括这些系统上预期的结果。要使 OpenBSD 平台上的假“失败”消息消失,resultmap
包括:
float8:out:i.86-.*-openbsd=float8-small-is-zero.out
它将在config.guess
的输出与i.86-.*-openbsd
匹配的任何计算机上触发。 resultmap
中的其他行在适当的情况下为其他平台选择变体比较文件。
变体比较文件的第二种选择机制更加自动化:它仅使用几个提供的比较文件中的“最佳匹配”。回归测试驱动程序脚本同时考虑了测试的标准比较文件testname.out
和名为testname_digit.out
的变体文件(其中* digit
是任何一位数字0
-9
)。如果有任何这样的文件完全匹配,则认为测试通过。否则,将使用生成最短差异的文件来创建故障报告。 (如果resultmap
包括特定测试的条目,则基本 testname
*是resultmap
中给出的替代名称.)
例如,对于char
测试,比较文件char.out
包含在C
和POSIX
语言环境中预期的结果,而文件char_1.out
包含在许多其他语言环境中出现的结果进行排序。
设计了最佳匹配机制来处理与语言环境相关的结果,但是它可以用于无法仅凭平台名称轻松预测测试结果的任何情况。这种机制的局限性在于,测试驱动程序无法确定哪个变体对于当前环境实际上是“正确的”。它只会选择效果最好的变体。因此,仅将这种机制用于您希望在所有情况下都同样有效的变体结果,这是最安全的。