↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 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
历史版本。 PostgreSQL 8.2 已结束支持。 请参阅 当前版本手册.

28.3. 变体比较文件 #

由于某些测试天生会产生依赖环境的结果,我们提供了指定备用“预期”结果文件的方法。每个回归测试都可以有多个比较文件,用来展示不同平台上的可能结果。对于每个测试应使用哪个比较文件,有两种相互独立的判定机制。

第一种机制允许针对特定平台选择比较文件。有一个映射文件 src/test/regress/resultmap,用于定义每个平台应使用哪个比较文件。要为某个特定平台消除虚假的测试“失败”,你需要先选择或创建一个变体结果文件,然后在resultmap 文件中增加一行。

映射文件中的每一行都采用如下形式:

testname/platformpattern=comparisonfilename

测试名就是相应回归测试模块的名称。平台模式是 Unix 工具expr风格的模式(也就是在开头隐含^锚点的正则表达式)。它会与config.guess打印出的平台名进行匹配。比较文件名则是替代结果比较文件的基名。

例如:某些系统会把极小的浮点数值解释为零,而不是报告下溢错误。这会导致float8回归测试出现一些差异。因此,我们提供了一个变体比较文件float8-small-is-zero.out,其中包含这些系统上的预期结果。为了消除虚假的“失败”消息,在OpenBSD平台上,resultmap包含以下内容:

float8/i.86-.*-openbsd=float8-small-is-zero

如果一台机器上的config.guess输出匹配i.86-.*-openbsd,就会触发该规则。resultmap中的其他行会为其他适用的平台选择变体比较文件。

第二种用于选择变体比较文件的机制更加自动化:它只是在多个提供的比较文件中选取“最佳匹配”。回归测试驱动脚本既考虑某个测试的标准比较文件testname.out,也考虑名为 testname_digit.out 的变体文件(其中digit可以是任一单个数字 0-9)。如果其中任何一个文件完全匹配,就认为测试通过;否则,会使用生成最短 diff 的那个文件来创建失败报告。(如果resultmap为该特定测试包含一项,那么基础testname就是 resultmap中给出的替代名称。)

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

最佳匹配机制原本是为了解决依赖区域设置的结果问题,但它也可以用于任何仅凭平台名无法轻易预测测试结果的场景。该机制的一个局限是,测试驱动器无法判断哪一个变体对当前环境才真正“正确”;它只会选择看起来最合适的那个。因此,最安全的做法是只对那些你愿意在所有上下文中都视为同样有效的变体结果使用这种机制。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.