diff options
| author | Magnus Hagander <magnus@hagander.net> | 2007-06-12 11:07:34 +0000 |
|---|---|---|
| committer | Magnus Hagander <magnus@hagander.net> | 2007-06-12 11:07:34 +0000 |
| commit | 09922597c5f460ab02882716c371b2a5c47e742e (patch) | |
| tree | 50c02e13bf202463570cf107fbcda70b42812bcc /src/tools | |
| parent | e514740e699d306b744849e43bcd2ef9728d464b (diff) | |
| download | postgresql-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.pm | 4 | ||||
| -rw-r--r-- | src/tools/msvc/Mkvcbuild.pm | 12 | ||||
| -rwxr-xr-x | src/tools/msvc/clean.bat | 6 | ||||
| -rw-r--r-- | src/tools/msvc/ecpg_regression.proj | 46 | ||||
| -rw-r--r-- | src/tools/msvc/vcregress.bat | 17 |
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 |
