2024 年 9 月 26 日: PostgreSQL 17 发布!
支持版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不支持版本:11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1

31.3. 变体比较文件 #

由于一些测试本身会产生依赖于环境的结果,因此我们提供了指定备用 预期 结果文件的方法。每个回归测试可以有多个比较文件,显示在不同平台上可能的结果。有两种独立的机制来确定为每个测试使用哪个比较文件。

第一种机制允许为特定平台选择比较文件。有一个映射文件,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.out 的变体文件(其中 digit 是任何一位数字 0-9)。如果任何此类文件完全匹配,则测试被认为已通过;否则,使用生成最短差异的文件来创建失败报告。(如果 resultmap 包含该特定测试的条目,则基本 testnameresultmap 中给出的替代名称。)

例如,对于 char 测试,比较文件 char.out 包含在 CPOSIX 本地化中预期的结果,而文件 char_1.out 包含按许多其他本地化中显示的顺序排序的结果。

最佳匹配机制是为了应对依赖于本地化的结果而设计的,但它可以在任何情况下使用,只要测试结果无法从平台名称本身轻松预测。此机制的一个限制是,测试驱动程序无法确定哪个变体实际上对当前环境是 正确 的;它只会选择看起来最有效的变体。因此,最安全的方法是仅对您愿意在所有情况下都认为等效有效的变体结果使用此机制。

提交更正

如果您在文档中看到任何不正确的内容、与您对特定功能的体验不符或需要进一步说明,请使用 此表格 报告文档问题。