12.2. 平台相关的比较文件

因为一些测试天生会产生平台相关的结果, 我们提供了一个方法以支持平台相关的结果比较文件。 通常,一套文件可用于多个平台; 而不是为每个平台提供一套独立的比较文件, 因此存在一个定义选用哪个比较文件的映射文件。 所以,要消除某特定平台的虚假的测试“失败”, 你必须选择或者制作一个结果文件的变种,然后往映射文件里加一行, 即是“resultmap”。

映射文件里的每行都有下面形式

testname/platformpattern=comparisonfilename
测试名称只是特定蜕变测试模块的名称。 平台名称模式是一个 expr(1) 风格的模式 (也就是说,一个开头带有隐含^锚符号的正则表达式)。 它与config.guess打印出来的跟在 :gcc:cc 后面的 平台名匹配,具体情况取决于你是使用 GNU 编译器还是系统本机的编译器。 (在那些有区别的系统上). 比较文件名是替换结果比较文件。

例如:int2 蜕变测试包括一个有意的超过 int2 范围的数值的输入。 产生的错误信息是平台相关的;我们的参考平台显示

ERROR:  pg_atoi: error reading "100000": Numerical result out of range
但是相当多其他 Unix 平台显示
ERROR:  pg_atoi: error reading "100000": Result too large
因此,我们提供一个比较文件的变种, int2-too-large.out, 该文件包含这样的错误信息的写法。要消除在 HPPA 平台上的虚假“错误 ”信息, resultmap 包括
int2/hppa=int2-too-large
这样将在任何 config.guess 的输出以 “hppa” 开头的机器上触发。 其他 resultmap 里的行选择对应其他平台合适的比较文件。