mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Allow for different result files when using GCC versus native compiler.
This commit is contained in:
@ -1,4 +1,4 @@
|
|||||||
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/regress.sgml,v 1.12 2000/10/22 19:11:05 tgl Exp $ -->
|
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/regress.sgml,v 1.13 2000/11/21 23:40:27 petere Exp $ -->
|
||||||
|
|
||||||
<chapter id="regress">
|
<chapter id="regress">
|
||||||
<title id="regress-title">Regression Tests</title>
|
<title id="regress-title">Regression Tests</title>
|
||||||
@ -272,52 +272,61 @@ diff results/random.out expected/random.out
|
|||||||
|
|
||||||
<!-- We might want to move the following section into the developer's guide. -->
|
<!-- We might want to move the following section into the developer's guide. -->
|
||||||
<sect1 id="regress-platform">
|
<sect1 id="regress-platform">
|
||||||
<title>Platform-specific comparison files</title>
|
<title>Platform-specific comparison files</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Since some of the tests inherently produce platform-specific results,
|
Since some of the tests inherently produce platform-specific
|
||||||
we have provided a way to supply platform-specific result comparison
|
results, we have provided a way to supply platform-specific result
|
||||||
files. Frequently, the same variation applies to multiple platforms;
|
comparison files. Frequently, the same variation applies to
|
||||||
rather than supplying a separate comparison file for every platform,
|
multiple platforms; rather than supplying a separate comparison
|
||||||
there is a mapping file that defines which comparison file to use.
|
file for every platform, there is a mapping file that defines
|
||||||
So, to eliminate bogus test "failures" for a particular platform,
|
which comparison file to use. So, to eliminate bogus test
|
||||||
you must choose or make a variant result file, and then add a line
|
<quote>failures</quote> for a particular platform, you must choose
|
||||||
to the mapping file, which is "resultmap".
|
or make a variant result file, and then add a line to the mapping
|
||||||
</para>
|
file, which is <filename>resultmap</filename>.
|
||||||
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Each line in the mapping file is of the form
|
Each line in the mapping file is of the form
|
||||||
<programlisting>
|
<synopsis>
|
||||||
testname/platformnamepattern=comparisonfilename
|
testname/platformnamepattern=comparisonfilename
|
||||||
</programlisting>
|
</synopsis>
|
||||||
The test name is just the name of the particular regression test module.
|
The test name is just the name of the particular regression test
|
||||||
The platform name pattern is a pattern in the style of expr(1) (that is,
|
module. The platform name pattern is a pattern in the style of
|
||||||
a regular expression with an implicit ^ anchor at the start). It is matched
|
expr(1) (that is, a regular expression with an implicit ^ anchor
|
||||||
against the platform name as printed by config.guess. The comparison
|
at the start). It is matched against the platform name as printed
|
||||||
file name is the name of the substitute result comparison file.
|
by <filename>config.guess</filename> with an appended
|
||||||
</para>
|
<literal>:gcc</literal> or <literal>:cc</literal>, 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.
|
||||||
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
For example: the int2 regress test includes a deliberate entry of a value
|
For example: the int2 regression test includes a deliberate entry
|
||||||
that is too large to fit in int2. The specific error message that is
|
of a value that is too large to fit in int2. The specific error
|
||||||
produced is platform-dependent; our reference platform emits
|
message that is produced is platform-dependent; our reference
|
||||||
<programlisting>
|
platform emits
|
||||||
ERROR: pg_atoi: error reading "100000": Numerical result out of range
|
<screen>
|
||||||
</programlisting>
|
<computeroutput>ERROR: pg_atoi: error reading "100000": Numerical result out of range</computeroutput>
|
||||||
but a fair number of other Unix platforms emit
|
</screen>
|
||||||
<programlisting>
|
but a fair number of other Unix platforms emit
|
||||||
ERROR: pg_atoi: error reading "100000": Result too large
|
<screen>
|
||||||
</programlisting>
|
<computeroutput>ERROR: pg_atoi: error reading "100000": Result too large</computeroutput>
|
||||||
Therefore, we provide a variant comparison file, int2-too-large.out,
|
</screen>
|
||||||
that includes this spelling of the error message. To silence the
|
Therefore, we provide a variant comparison file,
|
||||||
bogus "failure" message on HPPA platforms, resultmap includes
|
<filename>int2-too-large.out</filename>, that includes this
|
||||||
<programlisting>
|
spelling of the error message. To silence the bogus
|
||||||
int2/hppa=int2-too-large
|
<quote>failure</quote> message on HPPA platforms, resultmap
|
||||||
</programlisting>
|
includes
|
||||||
which will trigger on any machine for which config.guess's output
|
<programlisting>
|
||||||
begins with 'hppa'. Other lines in resultmap select the variant
|
int2/hppa=int2-too-large
|
||||||
comparison file for other platforms where it's appropriate.
|
</programlisting>
|
||||||
</para>
|
which will trigger on any machine for which config.guess's output
|
||||||
|
begins with <quote><literal>hppa</literal></quote>. Other lines
|
||||||
|
in resultmap select the variant comparison file for other
|
||||||
|
platforms where it's appropriate.
|
||||||
|
</para>
|
||||||
|
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
# IDENTIFICATION
|
# IDENTIFICATION
|
||||||
# $Header: /cvsroot/pgsql/src/test/regress/GNUmakefile,v 1.30 2000/10/27 20:00:19 petere Exp $
|
# $Header: /cvsroot/pgsql/src/test/regress/GNUmakefile,v 1.31 2000/11/21 23:40:28 petere Exp $
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -37,6 +37,7 @@ pg_regress: pg_regress.sh GNUmakefile
|
|||||||
-e 's/@host_tuple@/$(host_tuple)/g' \
|
-e 's/@host_tuple@/$(host_tuple)/g' \
|
||||||
-e 's,@GMAKE@,$(MAKE),g' \
|
-e 's,@GMAKE@,$(MAKE),g' \
|
||||||
-e 's/@enable_shared@/$(enable_shared)/g' \
|
-e 's/@enable_shared@/$(enable_shared)/g' \
|
||||||
|
-e 's/@GCC@/$(GCC)/g' \
|
||||||
$< >$@
|
$< >$@
|
||||||
chmod a+x $@
|
chmod a+x $@
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# $Header: /cvsroot/pgsql/src/test/regress/Attic/pg_regress.sh,v 1.11 2000/11/21 17:34:21 petere Exp $
|
# $Header: /cvsroot/pgsql/src/test/regress/Attic/pg_regress.sh,v 1.12 2000/11/21 23:40:28 petere Exp $
|
||||||
|
|
||||||
me=`basename $0`
|
me=`basename $0`
|
||||||
: ${TMPDIR=/tmp}
|
: ${TMPDIR=/tmp}
|
||||||
@ -74,6 +74,13 @@ bindir='@bindir@'
|
|||||||
datadir='@datadir@'
|
datadir='@datadir@'
|
||||||
host_platform='@host_tuple@'
|
host_platform='@host_tuple@'
|
||||||
enable_shared='@enable_shared@'
|
enable_shared='@enable_shared@'
|
||||||
|
GCC=@GCC@
|
||||||
|
|
||||||
|
if [ "$GCC" = yes ]; then
|
||||||
|
compiler=gcc
|
||||||
|
else
|
||||||
|
compiler=cc
|
||||||
|
fi
|
||||||
|
|
||||||
unset mode
|
unset mode
|
||||||
unset schedule
|
unset schedule
|
||||||
@ -223,9 +230,12 @@ trap '
|
|||||||
# ----------
|
# ----------
|
||||||
# Scan resultmap file to find which platform-specific expected files to use.
|
# Scan resultmap file to find which platform-specific expected files to use.
|
||||||
# The format of each line of the file is
|
# The format of each line of the file is
|
||||||
# testname/hostplatformpattern=substitutefile
|
# testname/hostplatformpattern=substitutefile
|
||||||
# where the hostplatformpattern is evaluated per the rules of expr(1),
|
# where the hostplatformpattern is evaluated per the rules of expr(1),
|
||||||
# namely, it is a standard regular expression with an implicit ^ at the start.
|
# namely, it is a standard regular expression with an implicit ^ at the start.
|
||||||
|
# What hostplatformpattern will be matched against is the config.guess output
|
||||||
|
# followed by either ':gcc' or ':cc' (independent of the actual name of the
|
||||||
|
# compiler executable).
|
||||||
#
|
#
|
||||||
# The tempfile hackery is needed because some shells will run the loop
|
# The tempfile hackery is needed because some shells will run the loop
|
||||||
# inside a subshell, whereupon shell variables set therein aren't seen
|
# inside a subshell, whereupon shell variables set therein aren't seen
|
||||||
@ -236,7 +246,7 @@ cat /dev/null >$TMPFILE
|
|||||||
while read LINE
|
while read LINE
|
||||||
do
|
do
|
||||||
HOSTPAT=`expr "$LINE" : '.*/\(.*\)='`
|
HOSTPAT=`expr "$LINE" : '.*/\(.*\)='`
|
||||||
if [ `expr "$host_platform" : "$HOSTPAT"` -ne 0 ]
|
if [ `expr "$host_platform:$compiler" : "$HOSTPAT"` -ne 0 ]
|
||||||
then
|
then
|
||||||
# remove hostnamepattern from line so that there are no shell
|
# remove hostnamepattern from line so that there are no shell
|
||||||
# wildcards in SUBSTLIST; else later 'for' could expand them!
|
# wildcards in SUBSTLIST; else later 'for' could expand them!
|
||||||
|
Reference in New Issue
Block a user