diff --git a/doc/src/sgml/regress.sgml b/doc/src/sgml/regress.sgml index ebf17683735546bfa486a375c0578ac69f61ed26..239250ae848fb2df91933ea254ded4856e1571f5 100644 --- a/doc/src/sgml/regress.sgml +++ b/doc/src/sgml/regress.sgml @@ -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"> <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. --> <sect1 id="regress-platform"> - <title>Platform-specific comparison files</title> + <title>Platform-specific comparison files</title> - <para> - 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 "resultmap". - </para> + <para> + 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 + <quote>failures</quote> for a particular platform, you must choose + or make a variant result file, and then add a line to the mapping + file, which is <filename>resultmap</filename>. + </para> - <para> - Each line in the mapping file is of the form - <programlisting> - testname/platformnamepattern=comparisonfilename - </programlisting> - The test name is just the name of the particular regression test module. - The platform name pattern is a pattern in the style of expr(1) (that is, - a regular expression with an implicit ^ anchor at the start). It is matched - against the platform name as printed by config.guess. The comparison - file name is the name of the substitute result comparison file. - </para> + <para> + Each line in the mapping file is of the form +<synopsis> +testname/platformnamepattern=comparisonfilename +</synopsis> + The test name is just the name of the particular regression test + module. The platform name pattern is a pattern in the style of + expr(1) (that is, a regular expression with an implicit ^ anchor + at the start). It is matched against the platform name as printed + by <filename>config.guess</filename> with an appended + <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> - For example: the int2 regress test includes a deliberate entry of a value - that is too large to fit in int2. The specific error message that is - produced is platform-dependent; our reference platform emits - <programlisting> - ERROR: pg_atoi: error reading "100000": Numerical result out of range - </programlisting> - but a fair number of other Unix platforms emit - <programlisting> - ERROR: pg_atoi: error reading "100000": Result too large - </programlisting> - Therefore, we provide a variant comparison file, int2-too-large.out, - that includes this spelling of the error message. To silence the - bogus "failure" message on HPPA platforms, resultmap includes - <programlisting> - int2/hppa=int2-too-large - </programlisting> - which will trigger on any machine for which config.guess's output - begins with 'hppa'. Other lines in resultmap select the variant - comparison file for other platforms where it's appropriate. - </para> + <para> + For example: the int2 regression test includes a deliberate entry + of a value that is too large to fit in int2. The specific error + message that is produced is platform-dependent; our reference + platform emits +<screen> +<computeroutput>ERROR: pg_atoi: error reading "100000": Numerical result out of range</computeroutput> +</screen> + but a fair number of other Unix platforms emit +<screen> +<computeroutput>ERROR: pg_atoi: error reading "100000": Result too large</computeroutput> +</screen> + Therefore, we provide a variant comparison file, + <filename>int2-too-large.out</filename>, that includes this + spelling of the error message. To silence the bogus + <quote>failure</quote> message on HPPA platforms, resultmap + includes +<programlisting> +int2/hppa=int2-too-large +</programlisting> + 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> diff --git a/src/test/regress/GNUmakefile b/src/test/regress/GNUmakefile index b7af6883de8d28a293c5fc77851de78ada0318d3..21b514c31bd22c3b74fb60a6fd993665cfe21485 100644 --- a/src/test/regress/GNUmakefile +++ b/src/test/regress/GNUmakefile @@ -7,7 +7,7 @@ # # # 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,@GMAKE@,$(MAKE),g' \ -e 's/@enable_shared@/$(enable_shared)/g' \ + -e 's/@GCC@/$(GCC)/g' \ $< >$@ chmod a+x $@ diff --git a/src/test/regress/pg_regress.sh b/src/test/regress/pg_regress.sh index 55017cc5352f77f5f54509c919b99b314c9e47a4..c0f2204d25c5f49e2e8dfcfdf34f9f97b91ee286 100644 --- a/src/test/regress/pg_regress.sh +++ b/src/test/regress/pg_regress.sh @@ -1,5 +1,5 @@ #! /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` : ${TMPDIR=/tmp} @@ -74,6 +74,13 @@ bindir='@bindir@' datadir='@datadir@' host_platform='@host_tuple@' enable_shared='@enable_shared@' +GCC=@GCC@ + +if [ "$GCC" = yes ]; then + compiler=gcc +else + compiler=cc +fi unset mode unset schedule @@ -223,9 +230,12 @@ trap ' # ---------- # Scan resultmap file to find which platform-specific expected files to use. # 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), # 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 # inside a subshell, whereupon shell variables set therein aren't seen @@ -236,7 +246,7 @@ cat /dev/null >$TMPFILE while read LINE do HOSTPAT=`expr "$LINE" : '.*/\(.*\)='` - if [ `expr "$host_platform" : "$HOSTPAT"` -ne 0 ] + if [ `expr "$host_platform:$compiler" : "$HOSTPAT"` -ne 0 ] then # remove hostnamepattern from line so that there are no shell # wildcards in SUBSTLIST; else later 'for' could expand them!