天天看点

PostgreSQL 10.1 手册_部分 III. 服务器管理_第 32 章 回归测试_32.3. 变体比较文件

32.3. 变体比较文件

因为某些测试生来就会产生依赖环境的结果,我们提供了方法来指定替代的“预期”结果文件。每一个回归测试可以有多个比较文件来展示在不同平台上的可能结果。有两种独立的机制来决定为每一个测试使用哪个比较文件。

第一种机制允许为指定平台选择比较文件。这是一个映射文件

src/test/regress/resultmap

,它定义了为每一个平台使用哪个比较文件。要为一个特定平台消除虚假的测试“失败”,你可以首先选择或创建一个变体结果文件,然后在

resultmap

文件中增加一行。

在该映射文件中的每一行的形式为:

testname:output:platformpattern=comparisonfilename      

测试名只是该特定回归测试模块的名称。输出值指定要检查哪个输出文件。对于标准回归测试,这总是

out

。该值对应于输出文件的文件扩展。平台模式是一个 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

是任何单一数字

-

9

)。如果任一这种文件是一个完全匹配,测试被认为是通过的。否则,产生最短区别的文件被用来创建失败报告(如果

resultmap

包括特定测试的一个项,那么基础

testname

resultmap

中给定的替补名称)。

例如,对于

char

测试,比较文件

char.out

包含在

C

POSIX

区域中期望的结果,而文件

char_1.out

包含在其他很多区域中的排序结果。

最佳匹配机制被设计为与区域依赖的结果协同工作,但是它可以被用在任何测试结果无法只从平台名很容易地预测的情况中。这种机制的一个限制是测试驱动器不能说出哪个变体对当前环境是真正“正确的”,它将只是选择看起来工作得最好的变体。因此对你认为在所有上下文中具有同等合法性的变体结果使用这种机制才是最安全的。

本文转自PostgreSQL中文社区,原文链接:

继续阅读