Here is a patch that implements make check support for the PLs and a make check-world target.
I found the lack of this quite annoying while reviewing the load of PL/Python patches. There did not appear to be a reason why it wasn't done before. Support for make check in contrib would also be nice, but it's currently not possible without a way to teach pg_regress to install the respective module's shared library.
diff --git a/GNUmakefile.in b/GNUmakefile.in index 8ccbdcc..b9c5f31 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -60,6 +60,9 @@ check: all check installcheck installcheck-parallel: $(MAKE) -C src/test $@ +# TODO: add contrib +$(call recurse,check-world,src/test src/pl src/interfaces/ecpg,check) + $(call recurse,installcheck-world,src/test src/pl src/interfaces/ecpg contrib,installcheck) GNUmakefile: GNUmakefile.in $(top_builddir)/config.status @@ -121,4 +124,4 @@ distcheck: dist rm -rf $(distdir) $(dummy) @echo "Distribution integrity checks out." -.PHONY: dist distdir distcheck docs install-docs world install-world installcheck-world +.PHONY: dist distdir distcheck docs install-docs world check-world install-world installcheck-world diff --git a/Makefile b/Makefile index b5b2ea5..72e9c83 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ # GNUmakefile won't exist yet, so we catch that case as well. -all check install installdirs installcheck installcheck-parallel uninstall clean distclean maintainer-clean dist distcheck world install-world installcheck-world: +all check install installdirs installcheck installcheck-parallel uninstall clean distclean maintainer-clean dist distcheck world check-world install-world installcheck-world: @if [ ! -f GNUmakefile ] ; then \ echo "You need to run the 'configure' program first. See the file"; \ echo "'INSTALL' for installation instructions." ; \ diff --git a/src/Makefile.global.in b/src/Makefile.global.in index d6b7b47..9fad24e 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -285,9 +285,6 @@ XGETTEXT = @XGETTEXT@ GZIP = gzip BZIP2 = bzip2 -PL_TESTDB = pl_regression -CONTRIB_TESTDB = contrib_regression - # Installation. INSTALL = $(SHELL) $(top_srcdir)/config/install-sh -c @@ -428,6 +425,19 @@ submake-libpgport: ########################################################################## # +# Testing support + +PL_TESTDB = pl_regression +CONTRIB_TESTDB = contrib_regression + +pg_regress_check = $(top_builddir)/src/test/regress/pg_regress --temp-install=./tmp_check --top-builddir=$(top_builddir) +pg_regress_installcheck = $(top_builddir)/src/test/regress/pg_regress --inputdir=$(srcdir) --psqldir=$(PSQLDIR) + +pg_regress_clean_files = results/ regression.diffs regression.out tmp_check/ log/ + + +########################################################################## +# # Customization # # This includes your local customizations if Makefile.custom exists diff --git a/src/makefiles/pgxs.mk b/src/makefiles/pgxs.mk index 412bf5c..23f28e3 100644 --- a/src/makefiles/pgxs.mk +++ b/src/makefiles/pgxs.mk @@ -280,12 +280,11 @@ endif # against installed postmaster installcheck: submake - $(top_builddir)/src/test/regress/pg_regress --inputdir=$(srcdir) --psqldir=$(PSQLDIR) $(REGRESS_OPTS) $(REGRESS) + $(pg_regress_installcheck) $(REGRESS_OPTS) $(REGRESS) # in-tree test doesn't work yet (no way to install my shared library) #check: all submake -# $(top_builddir)/src/test/regress/pg_regress --temp-install \ -# --top-builddir=$(top_builddir) $(REGRESS_OPTS) $(REGRESS) +# $(pg_regress_check) $(REGRESS_OPTS) $(REGRESS) check: @echo "'make check' is not supported." @echo "Do 'make install', then 'make installcheck' instead." diff --git a/src/pl/plperl/.gitignore b/src/pl/plperl/.gitignore index c04f42b..1a79873 100644 --- a/src/pl/plperl/.gitignore +++ b/src/pl/plperl/.gitignore @@ -4,4 +4,6 @@ /plperl_opmask.h # Generated subdirectories +/log/ /results/ +/tmp_check/ diff --git a/src/pl/plperl/GNUmakefile b/src/pl/plperl/GNUmakefile index 85cf9a8..01e585e 100644 --- a/src/pl/plperl/GNUmakefile +++ b/src/pl/plperl/GNUmakefile @@ -76,8 +76,11 @@ installdirs: installdirs-lib uninstall: uninstall-lib +check: submake + $(pg_regress_check) $(REGRESS_OPTS) $(REGRESS) + installcheck: submake - $(top_builddir)/src/test/regress/pg_regress --inputdir=$(srcdir) --psqldir=$(PSQLDIR) $(REGRESS_OPTS) $(REGRESS) + $(pg_regress_installcheck) $(REGRESS_OPTS) $(REGRESS) .PHONY: submake submake: @@ -85,8 +88,7 @@ submake: clean distclean maintainer-clean: clean-lib rm -f SPI.c Util.c $(OBJS) perlchunks.h plperl_opmask.h - rm -rf results - rm -f regression.diffs regression.out + rm -rf $(pg_regress_clean_files) else # can't build diff --git a/src/pl/plpython/.gitignore b/src/pl/plpython/.gitignore index 19b6c5b..5dcb3ff 100644 --- a/src/pl/plpython/.gitignore +++ b/src/pl/plpython/.gitignore @@ -1,2 +1,4 @@ # Generated subdirectories +/log/ /results/ +/tmp_check/ diff --git a/src/pl/plpython/Makefile b/src/pl/plpython/Makefile index 16d78ae..3a2411b 100644 --- a/src/pl/plpython/Makefile +++ b/src/pl/plpython/Makefile @@ -120,13 +120,19 @@ prep3: clean3: rm -rf python3/ +check: submake prep3 + $(pg_regress_check) --inputdir=./python3 --outputdir=./python3 $(REGRESS_OPTS) $(REGRESS) + installcheck: submake prep3 - $(top_builddir)/src/test/regress/pg_regress --inputdir=./python3 --outputdir=./python3 --psqldir=$(PSQLDIR) $(REGRESS_OPTS) $(REGRESS) + $(pg_regress_installcheck) --inputdir=./python3 --outputdir=./python3 $(REGRESS_OPTS) $(REGRESS) clean: clean3 else +check: submake + $(pg_regress_check) $(REGRESS_OPTS) $(REGRESS) + installcheck: submake - $(top_builddir)/src/test/regress/pg_regress --inputdir=$(srcdir) --psqldir=$(PSQLDIR) $(REGRESS_OPTS) $(REGRESS) + $(pg_regress_installcheck) $(REGRESS_OPTS) $(REGRESS) endif .PHONY: submake @@ -135,8 +141,7 @@ submake: clean distclean maintainer-clean: clean-lib rm -f $(OBJS) - rm -rf results - rm -f regression.diffs regression.out + rm -rf $(pg_regress_clean_files) ifeq ($(PORTNAME), win32) rm -f python${pytverstr}.def endif diff --git a/src/pl/tcl/.gitignore b/src/pl/tcl/.gitignore index 19b6c5b..5dcb3ff 100644 --- a/src/pl/tcl/.gitignore +++ b/src/pl/tcl/.gitignore @@ -1,2 +1,4 @@ # Generated subdirectories +/log/ /results/ +/tmp_check/ diff --git a/src/pl/tcl/Makefile b/src/pl/tcl/Makefile index 24be38f..b29478d 100644 --- a/src/pl/tcl/Makefile +++ b/src/pl/tcl/Makefile @@ -58,8 +58,11 @@ installdirs: installdirs-lib uninstall: uninstall-lib $(MAKE) -C modules $@ +check: submake + $(pg_regress_check) $(REGRESS_OPTS) $(REGRESS) + installcheck: submake - $(top_builddir)/src/test/regress/pg_regress --inputdir=$(srcdir) --psqldir=$(PSQLDIR) $(REGRESS_OPTS) $(REGRESS) + $(pg_regress_installcheck) $(REGRESS_OPTS) $(REGRESS) .PHONY: submake submake: @@ -77,6 +80,5 @@ endif # TCL_SHARED_BUILD = 0 clean distclean maintainer-clean: clean-lib rm -f $(OBJS) - rm -rf results - rm -f regression.diffs regression.out + rm -rf $(pg_regress_clean_files) $(MAKE) -C modules $@ diff --git a/src/test/regress/GNUmakefile b/src/test/regress/GNUmakefile index 4c8af0f..982548b 100644 --- a/src/test/regress/GNUmakefile +++ b/src/test/regress/GNUmakefile @@ -138,19 +138,19 @@ tablespace-setup: ## Run tests ## -pg_regress_call = ./pg_regress --inputdir=$(srcdir) --dlpath=. $(if $(MULTIBYTE),--multibyte=$(MULTIBYTE)) $(NOLOCALE) +REGRESS_OPTS = --dlpath=. $(if $(MULTIBYTE),--multibyte=$(MULTIBYTE)) $(NOLOCALE) check: all tablespace-setup - $(pg_regress_call) --temp-install=./tmp_check --top-builddir=$(top_builddir) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) $(TEMP_CONF) $(EXTRA_TESTS) + $(pg_regress_check) $(REGRESS_OPTS) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) $(TEMP_CONF) $(EXTRA_TESTS) installcheck: all tablespace-setup - $(pg_regress_call) --psqldir=$(PSQLDIR) --schedule=$(srcdir)/serial_schedule $(EXTRA_TESTS) + $(pg_regress_installcheck) $(REGRESS_OPTS) --schedule=$(srcdir)/serial_schedule $(EXTRA_TESTS) installcheck-parallel: all tablespace-setup - $(pg_regress_call) --psqldir=$(PSQLDIR) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) $(EXTRA_TESTS) + $(pg_regress_installcheck) $(REGRESS_OPTS) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) $(EXTRA_TESTS) standbycheck: all - $(pg_regress_call) --psqldir=$(PSQLDIR) --schedule=$(srcdir)/standby_schedule --use-existing + $(pg_regress_installcheck) $(REGRESS_OPTS) --schedule=$(srcdir)/standby_schedule --use-existing # old interfaces follow... @@ -159,10 +159,10 @@ runtest: installcheck runtest-parallel: installcheck-parallel bigtest: all tablespace-setup - $(pg_regress_call) --psqldir=$(PSQLDIR) --schedule=$(srcdir)/serial_schedule numeric_big + $(pg_regress_installcheck) $(REGRESS_OPTS) --schedule=$(srcdir)/serial_schedule numeric_big bigcheck: all tablespace-setup - $(pg_regress_call) --temp-install=./tmp_check --top-builddir=$(top_builddir) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) numeric_big + $(pg_regress_check) $(REGRESS_OPTS) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) numeric_big ## diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c index a321162..a616029 100644 --- a/src/test/regress/pg_regress.c +++ b/src/test/regress/pg_regress.c @@ -2094,7 +2094,7 @@ regression_main(int argc, char *argv[], init_function ifunc, test_function tfunc /* "make install" */ #ifndef WIN32_ONLY_COMPILER snprintf(buf, sizeof(buf), - SYSTEMQUOTE "\"%s\" -C \"%s\" DESTDIR=\"%s/install\" install with_perl=no with_python=no > \"%s/log/install.log\" 2>&1" SYSTEMQUOTE, + SYSTEMQUOTE "\"%s\" -C \"%s\" DESTDIR=\"%s/install\" install > \"%s/log/install.log\" 2>&1" SYSTEMQUOTE, makeprog, top_builddir, temp_install, outputdir); #else snprintf(buf, sizeof(buf),
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers