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 ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers