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 interpret very small floating-point values
as zero, rather than reporting an underflow error. This causes a
few differences in the float8
regression test.
Therefore, we provide a variant comparison file,
float8-small-is-zero.out
, which includes
the results to be expected on these systems. To silence the bogus
“failure” message on OpenBSD
platforms, resultmap
includes
float8/i.86-.*-openbsd=float8-small-is-zero
which will trigger on any machine for which the output of
config.guess
matches i.86-.*-openbsd
.
Other lines
in resultmap
select the variant comparison file for other
platforms where it's appropriate.