# 33.3.变量比较文件
由于某些测试本身会产生与环境相关的结果,因此我们提供了指定替代“预期”结果文件的方法。每个回归测试可以有几个比较文件,显示不同平台上可能的结果。有两种独立的机制来确定每个测试使用哪个比较文件。
第一种机制允许为特定平台选择比较文件。有一个映射文件,src/测试/回归/结果映射
,它定义了每个平台要使用的比较文件。为了消除特定平台的虚假测试“失败”,您首先选择或创建一个变体结果文件,然后向结果图
文件
映射文件中的每一行都是
testname:output:platformpattern=comparisonfilename
测试名称只是特定回归测试模块的名称。输出值指示要检查的输出文件。对于标准回归测试,这始终是出来
。该值对应于输出文件的文件扩展名。平台模式是Unix工具风格的模式expr
(即,带有隐式^
锚定在起点)。它与打印的平台名称匹配配置。猜测
.比较文件名是替换结果比较文件的基本名称。
例如:一些系统缺少工作模式斯特尔托夫
函数,我们的解决方法会导致浮动4
回归测试。因此,我们提供了一个变体比较文件,float4输入四舍五入错误。出来
,其中包括这些系统的预期结果。要在HP-UX 10平台上消除虚假的“失败”信息,结果图
包括:
float4:out:hppa.*-hp-hpux10.*=float4-misrounded-input.out
这将在任何机器上触发配置。猜测
比赛hppa*-hp-hpux10*
.其他线路结果图
在适当的地方,为其他平台选择变体比较文件。
变量比较文件的第二种选择机制更加自动化:它只是在提供的几个比较文件中使用“最佳匹配”。回归测试驱动程序脚本考虑了测试的标准比较文件,*
测试名*.出去
,以及名为*
测试名*_*
数字*.出去
(如果*数字
是个位数吗0
-9
)。如果任何此类文件完全匹配,则认为测试通过;否则,将使用生成最短差异的那个来创建故障报告。(如果结果图
包括特定测试的条目,然后是基础测试名称
*是给出的替代名称结果图
.)
例如,对于字符
测试,比较文件字符输出
包含预期的结果C
和POSIX
语言环境,而文件char_1.out
包含在许多其他语言环境中出现时排序的结果。
最佳匹配机制旨在处理依赖于语言环境的结果,但它可用于仅从平台名称无法轻松预测测试结果的任何情况。这种机制的一个限制是测试驱动程序无法判断哪个变体对于当前环境实际上是“正确的”;它只会选择似乎效果最好的变体。因此,仅将这种机制用于您愿意认为在所有上下文中同样有效的变体结果是最安全的。