Commit 90cfa9ac authored by Peter Eisentraut's avatar Peter Eisentraut

Allow for different result files when using GCC versus native compiler.

parent fd05f896
<!-- $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 ...@@ -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 @@ ...@@ -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 ...@@ -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 $@
......
#! /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@' ...@@ -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 ' ...@@ -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 ...@@ -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!
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment