diff options
Diffstat (limited to 'src/test/regress/GNUmakefile')
-rw-r--r-- | src/test/regress/GNUmakefile | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/src/test/regress/GNUmakefile b/src/test/regress/GNUmakefile new file mode 100644 index 0000000..fe6e0c9 --- /dev/null +++ b/src/test/regress/GNUmakefile @@ -0,0 +1,167 @@ +#------------------------------------------------------------------------- +# +# GNUmakefile-- +# Makefile for src/test/regress (the regression tests) +# +# Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/test/regress/GNUmakefile +# +#------------------------------------------------------------------------- + +PGFILEDESC = "pg_regress - test driver" +PGAPPICON = win32 + +subdir = src/test/regress +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +# maximum simultaneous connections for parallel tests +MAXCONNOPT = +ifdef MAX_CONNECTIONS +MAXCONNOPT += --max-connections=$(MAX_CONNECTIONS) +endif + +# stuff to pass into build of pg_regress +EXTRADEFS = '-DHOST_TUPLE="$(host_tuple)"' \ + '-DSHELLPROG="$(SHELL)"' \ + '-DDLSUFFIX="$(DLSUFFIX)"' + +## +## Prepare for tests +## + +# Build regression test driver + +all: pg_regress$(X) + +pg_regress$(X): pg_regress.o pg_regress_main.o $(WIN32RES) | submake-libpgport + $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@ + +# dependencies ensure that path changes propagate +pg_regress.o: pg_regress.c $(top_builddir)/src/port/pg_config_paths.h +pg_regress.o: override CPPFLAGS += -I$(top_builddir)/src/port $(EXTRADEFS) + +# note: because of the submake dependency, this rule's action is really a no-op +$(top_builddir)/src/port/pg_config_paths.h: | submake-libpgport + $(MAKE) -C $(top_builddir)/src/port pg_config_paths.h + +install: all installdirs + $(INSTALL_PROGRAM) pg_regress$(X) '$(DESTDIR)$(pgxsdir)/$(subdir)/pg_regress$(X)' + +installdirs: + $(MKDIR_P) '$(DESTDIR)$(pgxsdir)/$(subdir)' + +uninstall: + rm -f '$(DESTDIR)$(pgxsdir)/$(subdir)/pg_regress$(X)' + + +# Build dynamically-loaded object file for CREATE FUNCTION ... LANGUAGE C. + +NAME = regress +OBJS = $(WIN32RES) regress.o + +include $(top_srcdir)/src/Makefile.shlib + +all: all-lib + +# Ensure parallel safety if a build is started in this directory +$(OBJS): | submake-libpgport submake-generated-headers + +# Test input and expected files. These are created by pg_regress itself, so we +# don't have a rule to create them. We do need rules to clean them however. +input_files = $(patsubst $(srcdir)/input/%.source,sql/%.sql, $(wildcard $(srcdir)/input/*.source)) +output_files := $(patsubst $(srcdir)/output/%.source,expected/%.out, $(wildcard $(srcdir)/output/*.source)) + + +# not installed by default + +regress_data_files = \ + $(filter-out $(addprefix $(srcdir)/,$(output_files)),$(wildcard $(srcdir)/expected/*.out)) \ + $(wildcard $(srcdir)/input/*.source) \ + $(wildcard $(srcdir)/output/*.source) \ + $(filter-out $(addprefix $(srcdir)/,$(input_files)),$(wildcard $(srcdir)/sql/*.sql)) \ + $(wildcard $(srcdir)/data/*.data) \ + $(srcdir)/parallel_schedule $(srcdir)/resultmap + +install-tests: all install install-lib installdirs-tests + $(MAKE) -C $(top_builddir)/contrib/spi install + for file in $(subst $(srcdir)/,,$(regress_data_files)); do \ + $(INSTALL_DATA) $(srcdir)/$$file '$(DESTDIR)$(pkglibdir)/regress/'$$file || exit; \ + done + +installdirs-tests: installdirs + $(MKDIR_P) $(patsubst $(srcdir)/%/,'$(DESTDIR)$(pkglibdir)/regress/%',$(sort $(dir $(regress_data_files)))) + + +# Get some extra C modules from contrib/spi + +all: refint$(DLSUFFIX) autoinc$(DLSUFFIX) + +refint$(DLSUFFIX): $(top_builddir)/contrib/spi/refint$(DLSUFFIX) + cp $< $@ + +autoinc$(DLSUFFIX): $(top_builddir)/contrib/spi/autoinc$(DLSUFFIX) + cp $< $@ + +$(top_builddir)/contrib/spi/refint$(DLSUFFIX): | submake-contrib-spi ; + +$(top_builddir)/contrib/spi/autoinc$(DLSUFFIX): | submake-contrib-spi ; + +submake-contrib-spi: | submake-libpgport submake-generated-headers + $(MAKE) -C $(top_builddir)/contrib/spi + +.PHONY: submake-contrib-spi + + +## +## Run tests +## + +REGRESS_OPTS = --dlpath=. --max-concurrent-tests=20 --make-testtablespace-dir \ + $(EXTRA_REGRESS_OPTS) + +check: all + $(pg_regress_check) $(REGRESS_OPTS) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) $(EXTRA_TESTS) + +check-tests: all | temp-install + $(pg_regress_check) $(REGRESS_OPTS) $(MAXCONNOPT) $(TESTS) $(EXTRA_TESTS) + +installcheck: all + $(pg_regress_installcheck) $(REGRESS_OPTS) --schedule=$(srcdir)/parallel_schedule --max-connections=1 $(EXTRA_TESTS) + +installcheck-parallel: all + $(pg_regress_installcheck) $(REGRESS_OPTS) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) $(EXTRA_TESTS) + +installcheck-tests: all + $(pg_regress_installcheck) $(REGRESS_OPTS) $(TESTS) $(EXTRA_TESTS) + +standbycheck: all + $(pg_regress_installcheck) $(REGRESS_OPTS) --schedule=$(srcdir)/standby_schedule --use-existing + +# old interfaces follow... + +runcheck: check +runtest: installcheck +runtest-parallel: installcheck-parallel + +bigtest: all + $(pg_regress_installcheck) $(REGRESS_OPTS) --schedule=$(srcdir)/parallel_schedule --max-connections=1 numeric_big + +bigcheck: all | temp-install + $(pg_regress_check) $(REGRESS_OPTS) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) numeric_big + + +## +## Clean up +## + +clean distclean maintainer-clean: clean-lib +# things built by `all' target + rm -f $(OBJS) refint$(DLSUFFIX) autoinc$(DLSUFFIX) + rm -f pg_regress_main.o pg_regress.o pg_regress$(X) +# things created by various check targets + rm -f $(output_files) $(input_files) + rm -rf testtablespace + rm -rf $(pg_regress_clean_files) |