26.3. Platform-specific comparison files

Since some of the tests inherently produce platform-specific results, we have provided a way to supply platform-specific result comparison files. Frequently, the same variation applies to multiple platforms; rather than supplying a separate comparison file for every platform, there is a mapping file that defines which comparison file to use. So, to eliminate bogus test "failures" for a particular platform, you must choose or make a variant result file, and then add a line to the mapping file, which is src/test/regress/resultmap.

Each line in the mapping file is of the form

testname/platformpattern=comparisonfilename

The test name is just the name of the particular regression test module. The platform pattern is a pattern in the style of the Unix tool expr (that is, a regular expression with an implicit ^ anchor at the start). It is matched against the platform name as printed by config.guess followed by :gcc or :cc, depending on whether you use the GNU compiler or the system's native compiler (on systems where there is a difference). The comparison file name is the name of the substitute result comparison file.

For example: some systems using older time zone libraries fail to apply daylight-saving corrections to dates before 1970, causing pre-1970 PDT times to be displayed in PST instead. This causes a few differences in the horology regression test. Therefore, we provide a variant comparison file, horology-no-DST-before-1970.out, which includes the results to be expected on these systems. To silence the bogus "failure" message on HPUX platforms, resultmap includes

horology/.*-hpux=horology-no-DST-before-1970

which will trigger on any machine for which the output of config.guess includes -hpux. Other lines in resultmap select the variant comparison file for other platforms where it's appropriate.