summaryrefslogtreecommitdiff
path: root/src/tools
diff options
context:
space:
mode:
authorMagnus Hagander <magnus@hagander.net>2007-06-12 11:07:34 +0000
committerMagnus Hagander <magnus@hagander.net>2007-06-12 11:07:34 +0000
commit09922597c5f460ab02882716c371b2a5c47e742e (patch)
tree50c02e13bf202463570cf107fbcda70b42812bcc /src/tools
parente514740e699d306b744849e43bcd2ef9728d464b (diff)
downloadpostgresql-09922597c5f460ab02882716c371b2a5c47e742e.tar.gz
Rewrite ECPG regression test driver in C, by splitting the standard
regression driver into two parts and reusing half of it. Required to run ECPG tests without a shell on MSVC builds. Fix ECPG thread tests for MSVC build (incl output files). Joachim Wieland and Magnus Hagander
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/msvc/Install.pm4
-rw-r--r--src/tools/msvc/Mkvcbuild.pm12
-rwxr-xr-xsrc/tools/msvc/clean.bat6
-rw-r--r--src/tools/msvc/ecpg_regression.proj46
-rw-r--r--src/tools/msvc/vcregress.bat17
5 files changed, 79 insertions, 6 deletions
diff --git a/src/tools/msvc/Install.pm b/src/tools/msvc/Install.pm
index 26ad8f4a4e..e8980c2dd6 100644
--- a/src/tools/msvc/Install.pm
+++ b/src/tools/msvc/Install.pm
@@ -3,7 +3,7 @@ package Install;
#
# Package that provides 'make install' functionality for msvc builds
#
-# $PostgreSQL: pgsql/src/tools/msvc/Install.pm,v 1.15 2007/05/13 15:33:07 mha Exp $
+# $PostgreSQL: pgsql/src/tools/msvc/Install.pm,v 1.16 2007/06/12 11:07:34 mha Exp $
#
use strict;
use warnings;
@@ -25,6 +25,7 @@ sub Install
require 'config.pl';
chdir("../../..") if (-f "../../../configure");
+ chdir("../../../..") if (-f "../../../../configure");
my $conf = "";
if (-d "debug")
{
@@ -115,6 +116,7 @@ sub CopySetOfFiles
{
chomp;
next if /regress/; # Skip temporary install in regression subdir
+ next if /ecpg.test/; # Skip temporary install in regression subdir
my $tgt = $target . basename($_);
print ".";
my $src = $norecurse?(dirname($spec) . '/' . $_):$_;
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index 35ccdcc471..c71ea446bc 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -3,7 +3,7 @@ package Mkvcbuild;
#
# Package that generates build files for msvc build
#
-# $PostgreSQL: pgsql/src/tools/msvc/Mkvcbuild.pm,v 1.11 2007/04/27 16:45:54 mha Exp $
+# $PostgreSQL: pgsql/src/tools/msvc/Mkvcbuild.pm,v 1.12 2007/06/12 11:07:34 mha Exp $
#
use Carp;
use Win32;
@@ -154,6 +154,15 @@ sub mkvcbuild
$ecpg->AddDefine('PATCHLEVEL=1');
$ecpg->AddReference($libpgport);
+ my $pgregress_ecpg = $solution->AddProject('pg_regress_ecpg','exe','misc');
+ $pgregress_ecpg->AddFile('src\interfaces\ecpg\test\pg_regress_ecpg.c');
+ $pgregress_ecpg->AddFile('src\test\regress\pg_regress.c');
+ $pgregress_ecpg->AddIncludeDir('src\port');
+ $pgregress_ecpg->AddIncludeDir('src\test\regress');
+ $pgregress_ecpg->AddDefine('HOST_TUPLE="i686-pc-win32vc"');
+ $pgregress_ecpg->AddDefine('FRONTEND');
+ $pgregress_ecpg->AddReference($libpgport);
+
# src/bin
my $initdb = AddSimpleFrontend('initdb', 1);
$initdb->AddLibrary('wsock32.lib ws2_32.lib');
@@ -315,6 +324,7 @@ sub mkvcbuild
my $pgregress = $solution->AddProject('pg_regress','exe','misc');
$pgregress->AddFile('src\test\regress\pg_regress.c');
+ $pgregress->AddFile('src\test\regress\pg_regress_main.c');
$pgregress->AddIncludeDir('src\port');
$pgregress->AddDefine('HOST_TUPLE="i686-pc-win32vc"');
$pgregress->AddDefine('FRONTEND');
diff --git a/src/tools/msvc/clean.bat b/src/tools/msvc/clean.bat
index 1f13c92b24..7d4a0a802e 100755
--- a/src/tools/msvc/clean.bat
+++ b/src/tools/msvc/clean.bat
@@ -1,5 +1,5 @@
@echo off
-REM $PostgreSQL: pgsql/src/tools/msvc/clean.bat,v 1.4 2007/03/23 09:53:33 mha Exp $
+REM $PostgreSQL: pgsql/src/tools/msvc/clean.bat,v 1.5 2007/06/12 11:07:34 mha Exp $
set D=%CD%
if exist ..\msvc if exist ..\..\..\src cd ..\..\..
@@ -59,6 +59,10 @@ call :del tsearch2\tsearch2.sql
call :del tsearch2\uninstall_tsearch2.sql
cd %D%
+
+REM Clean up ecpg regression test files
+msbuild ecpg_regression.proj /t:clean /v:q
+
goto :eof
diff --git a/src/tools/msvc/ecpg_regression.proj b/src/tools/msvc/ecpg_regression.proj
new file mode 100644
index 0000000000..6634627f2b
--- /dev/null
+++ b/src/tools/msvc/ecpg_regression.proj
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="all">
+<!--
+ MSBuild project file to build ecpg regression tests
+-->
+
+ <PropertyGroup>
+ <TESTDIR>..\..\interfaces\ecpg\test</TESTDIR>
+ <CONFIG>Debug</CONFIG>
+ <OUTDIR>..\..\..\..\..\$(CONFIG)\</OUTDIR>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(CONFIG)'=='DEBUG'">
+ <!-- set debug runtime library if necessary to be compatible with the LIB files generated -->
+ <DEBUGLIB>d</DEBUGLIB>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <Pgc Include="$(TESTDIR)\**\*.pgc" Exclude="$(TESTDIR)\performance\perftest.pgc"/>
+ </ItemGroup>
+
+ <ItemGroup>
+ <OutputToDelete Include="$(TESTDIR)\**\*.exe" />
+ <OutputToDelete Include="$(TESTDIR)\**\*.exe.manifest" />
+ <OutputToDelete Include="$(TESTDIR)\**\*.obj" />
+ <OutputToDelete Include="$(TESTDIR)\**\*.c" Exclude="$(TESTDIR)\pg_regress_ecpg.c;$(TESTDIR)\expected\*.c" />
+ </ItemGroup>
+
+ <Target Name="all" Inputs="@(Pgc)" Outputs="%(RelativeDir)%(Filename).exe">
+ <!-- Set special parameters for some tests -->
+ <CreateProperty Value="-C INFORMIX" Condition="'%(Pgc.RelativeDir)'=='$(TESTDIR)\compat_informix\'">
+ <Output TaskParameter="Value" PropertyName="ECPGPARAM" />
+ </CreateProperty>
+ <CreateProperty Value="-C INFORMIX -r no_indicator" Condition="'%(Pgc.FileName)'=='rnull'">
+ <Output TaskParameter="Value" PropertyName="ECPGPARAM" />
+ </CreateProperty>
+
+ <!-- Run ECPG and the Visual C++ compiler on the files. Don't bother with dependency check between the steps -->
+ <Exec WorkingDirectory="%(Pgc.RelativeDir)" Command="$(OUTDIR)ecpg\ecpg -I ../../include --regression $(ECPGPARAM) -o %(Pgc.Filename).c %(Pgc.Filename).pgc" />
+ <Exec WorkingDirectorY="%(Pgc.RelativeDir)" Command="cl /nologo %(Pgc.FileName).c /TC /MD$(DEBUGLIB) /DENABLE_THREAD_SAFETY /DWIN32 /DWIN32_ONLY_COMPILER /I. /I..\..\include /I..\..\..\libpq /I..\..\..\..\include /link /defaultlib:$(OUTDIR)libecpg\libecpg.lib /defaultlib:$(OUTDIR)libecpg_compat\libecpg_compat.lib /defaultlib:$(OUTDIR)libpgtypes\libpgtypes.lib" />
+ </Target>
+
+ <!-- Clean up all output files -->
+ <Target Name="clean">
+ <Delete Files="@(OutputToDelete)" />
+ </Target>
+</Project>
diff --git a/src/tools/msvc/vcregress.bat b/src/tools/msvc/vcregress.bat
index 8793989967..e3221b268f 100644
--- a/src/tools/msvc/vcregress.bat
+++ b/src/tools/msvc/vcregress.bat
@@ -1,5 +1,5 @@
@echo off
-REM $PostgreSQL: pgsql/src/tools/msvc/vcregress.bat,v 1.11 2007/04/21 20:58:05 mha Exp $
+REM $PostgreSQL: pgsql/src/tools/msvc/vcregress.bat,v 1.12 2007/06/12 11:07:34 mha Exp $
SETLOCAL
SET STARTDIR=%CD%
@@ -11,6 +11,7 @@ if /I "%1"=="check" SET what=CHECK
if /I "%1"=="installcheck" SET what=INSTALLCHECK
if /I "%1"=="plcheck" SET what=PLCHECK
if /I "%1"=="contribcheck" SET what=CONTRIBCHECK
+if /I "%1"=="ecpgcheck" SET what=ECPGCHECK
if "%what%"=="" goto usage
SET CONFIG=Debug
@@ -28,10 +29,20 @@ SET SCHEDULE=parallel
SET TEMPPORT=54321
IF NOT "%2"=="" SET SCHEDULE=%2
-SET PERL5LIB=..\..\tools\msvc
+IF "%what%"=="ECPGCHECK" (
+ cd "%STARTDIR%"
+ msbuild ecpg_regression.proj /p:config=%CONFIG%
+ if errorlevel 1 exit /b 1
+ cd "%TOPDIR%"
+ cd src\interfaces\ecpg\test
+ SET SCHEDULE=ecpg
+)
+
+SET PERL5LIB=%TOPDIR%\src\tools\msvc
if "%what%"=="INSTALLCHECK" ..\..\..\%CONFIG%\pg_regress\pg_regress --psqldir="..\..\..\%CONFIG%\psql" --schedule=%SCHEDULE%_schedule --multibyte=SQL_ASCII --load-language=plpgsql --no-locale
if "%what%"=="CHECK" ..\..\..\%CONFIG%\pg_regress\pg_regress --psqldir="..\..\..\%CONFIG%\psql" --schedule=%SCHEDULE%_schedule --multibyte=SQL_ASCII --load-language=plpgsql --no-locale --temp-install=./tmp_check --top-builddir="%TOPDIR%" --temp-port=%TEMPPORT%
+if "%what%"=="ECPGCHECK" ..\..\..\..\%CONFIG%\pg_regress_ecpg\pg_regress_ecpg --psqldir="..\..\..\%CONFIG%\psql" --dbname=regress1,connectdb --create-role=connectuser,connectdb --schedule=%SCHEDULE%_schedule --multibyte=SQL_ASCII --load-language=plpgsql --no-locale --temp-install=./tmp_check --top-builddir="%TOPDIR%" --temp-port=%TEMPPORT%
if "%what%"=="PLCHECK" call :plcheck
if "%what%"=="CONTRIBCHECK" call :contribcheck
SET E=%ERRORLEVEL%
@@ -40,7 +51,7 @@ cd "%STARTDIR%"
exit /b %E%
:usage
-echo "Usage: vcregress <check|installcheck> [schedule]"
+echo "Usage: vcregress <check|installcheck|plcheck|contribcheck|ecpgcheck> [schedule]"
goto :eof