summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut2009-08-07 20:50:22 +0000
committerPeter Eisentraut2009-08-07 20:50:22 +0000
commitcfca5cc38c94417f6a25b4881440f587856d1794 (patch)
tree1fca6be0ee02adb7a5d930beefae7a9668089f8b
parent46cd3b380943e3db817802e757434a26b42e5091 (diff)
Expand test coverage support to entire tree
Test coverage support now covers the entire source tree, including contrib, instead of just src/backend. In a related but independent development, the commands make coverage and make coverage-html can be run in any directory. This turned out to be much easier than feared. Besides a few ad hoc fixes to pass the make target down the tree, change all affected makefiles to list their directories in the SUBDIRS variable, changed from variants like DIRS and WANTED_DIRS. MSVC build fix was attempted as well.
-rw-r--r--GNUmakefile.in21
-rw-r--r--contrib/Makefile12
-rw-r--r--doc/src/sgml/regress.sgml1
-rw-r--r--src/Makefile9
-rw-r--r--src/Makefile.global.in10
-rw-r--r--src/backend/common.mk6
-rw-r--r--src/backend/utils/mb/conversion_procs/Makefile10
-rw-r--r--src/bin/Makefile6
-rw-r--r--src/interfaces/Makefile4
-rw-r--r--src/pl/Makefile12
-rw-r--r--src/pl/plpgsql/Makefile2
-rw-r--r--src/tools/msvc/Mkvcbuild.pm2
12 files changed, 45 insertions, 50 deletions
diff --git a/GNUmakefile.in b/GNUmakefile.in
index 3045a4e47e..342ac1a203 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -20,7 +20,7 @@ install:
$(MAKE) -C config $@
@echo "PostgreSQL installation complete."
-installdirs uninstall:
+installdirs uninstall coverage:
$(MAKE) -C doc $@
$(MAKE) -C src $@
$(MAKE) -C config $@
@@ -63,25 +63,6 @@ GNUmakefile: GNUmakefile.in $(top_builddir)/config.status
##########################################################################
-coverage:
- $(MAKE) -C src/backend $@
-
-.PHONY: coverage-html
-coverage-html: coverage
- rm -rf coverage
- mkdir coverage
- $(GENHTML) --show-details --legend --output-directory=coverage --title=PostgreSQL --num-spaces=4 --prefix=$(abs_top_srcdir)/src `find src/backend -name lcov.info -print`
-
-ifeq ($(enable_coverage),yes)
-clean distclean maintainer-clean: clean-coverage-local
-.PHONY: clean-coverage-local
-clean-coverage-local:
- rm -rf coverage
-endif
-
-
-##########################################################################
-
distdir = postgresql-$(VERSION)
dummy = =install=
garbage = =* "#"* ."#"* *~* *.orig *.rej core postgresql-*
diff --git a/contrib/Makefile b/contrib/Makefile
index 738a28a63a..247c4972f0 100644
--- a/contrib/Makefile
+++ b/contrib/Makefile
@@ -4,7 +4,7 @@ subdir = contrib
top_builddir = ..
include $(top_builddir)/src/Makefile.global
-WANTED_DIRS = \
+SUBDIRS = \
adminpack \
auto_explain \
btree_gin \
@@ -42,15 +42,15 @@ WANTED_DIRS = \
vacuumlo
ifeq ($(with_openssl),yes)
-WANTED_DIRS += sslinfo
+SUBDIRS += sslinfo
endif
ifeq ($(with_ossp_uuid),yes)
-WANTED_DIRS += uuid-ossp
+SUBDIRS += uuid-ossp
endif
ifeq ($(with_libxml),yes)
-WANTED_DIRS += xml2
+SUBDIRS += xml2
endif
# Missing:
@@ -58,13 +58,13 @@ endif
all install installdirs uninstall distprep clean distclean maintainer-clean:
- @for dir in $(WANTED_DIRS); do \
+ @for dir in $(SUBDIRS); do \
$(MAKE) -C $$dir $@ || exit; \
done
# We'd like check operations to run all the subtests before failing.
check installcheck:
- @CHECKERR=0; for dir in $(WANTED_DIRS); do \
+ @CHECKERR=0; for dir in $(SUBDIRS); do \
$(MAKE) -C $$dir $@ || CHECKERR=$$?; \
done; \
exit $$CHECKERR
diff --git a/doc/src/sgml/regress.sgml b/doc/src/sgml/regress.sgml
index 35e5564bc9..3203384c6f 100644
--- a/doc/src/sgml/regress.sgml
+++ b/doc/src/sgml/regress.sgml
@@ -476,6 +476,7 @@ gmake coverage-html
</screen>
Then point your HTML browser
to <filename>coverage/index.html</filename>.
+ The <command>gmake</command> commands also work in subdirectories.
</para>
<para>
diff --git a/src/Makefile b/src/Makefile
index acefa7580b..bc8eb95b1c 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -73,5 +73,14 @@ distclean maintainer-clean:
$(MAKE) -C test/thread $@
rm -f Makefile.port Makefile.global
+coverage:
+ $(MAKE) -C timezone $@
+ $(MAKE) -C backend $@
+ $(MAKE) -C backend/utils/mb/conversion_procs $@
+ $(MAKE) -C backend/snowball $@
+ $(MAKE) -C interfaces $@
+ $(MAKE) -C bin $@
+ $(MAKE) -C pl $@
+
.PHONY: install-local installdirs-local uninstall-local
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 5dee4dda60..ab1f49332f 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -617,12 +617,22 @@ lcov.info: $(gcda_files)
%.c.gcov: %.gcda | lcov.info
$(GCOV) -b -f -p -o . $(GCOVFLAGS) $*.c >$*.c.gcov.out
+coverage: $(gcda_files:.gcda=.c.gcov) lcov.info
+ $(if $(SUBDIRS),for dir in $(SUBDIRS); do $(MAKE) -C $$dir coverage || exit; done)
+
+.PHONY: coverage-html
+coverage-html: coverage
+ rm -rf coverage
+ mkdir coverage
+ $(GENHTML) --show-details --legend --output-directory=coverage --title=PostgreSQL --num-spaces=4 --prefix=$(abs_top_srcdir) `find . -name lcov.info -print`
+
# hook for clean-up
clean distclean maintainer-clean: clean-coverage
.PHONY: clean-coverage
clean-coverage:
+ rm -rf coverage
rm -f *.gcda *.gcno lcov.info *.gcov *.gcov.out
diff --git a/src/backend/common.mk b/src/backend/common.mk
index 611a257b15..cf7ff0c583 100644
--- a/src/backend/common.mk
+++ b/src/backend/common.mk
@@ -46,9 +46,3 @@ ifdef SUBDIRS
for dir in $(SUBDIRS); do $(MAKE) -C $$dir clean || exit; done
endif
rm -f $(subsysfilename) $(OBJS)
-
-
-coverage: $(gcda_files:.gcda=.c.gcov) lcov.info
-ifdef SUBDIRS
- for dir in $(SUBDIRS); do $(MAKE) -C $$dir coverage || exit; done
-endif
diff --git a/src/backend/utils/mb/conversion_procs/Makefile b/src/backend/utils/mb/conversion_procs/Makefile
index 5cf57220df..d5ed087e9c 100644
--- a/src/backend/utils/mb/conversion_procs/Makefile
+++ b/src/backend/utils/mb/conversion_procs/Makefile
@@ -17,7 +17,7 @@ SQLSCRIPT = conversion_create.sql
# This file can be placed as src/test/regress/conversion.sql
REGRESSION_SCRIPT = conversion.sql
-DIRS = \
+SUBDIRS = \
ascii_and_mic cyrillic_and_mic euc_cn_and_mic euc_jp_and_sjis \
euc_kr_and_mic euc_tw_and_big5 latin2_and_win1250 latin_and_mic \
utf8_and_ascii utf8_and_big5 utf8_and_cyrillic utf8_and_euc_cn \
@@ -162,7 +162,7 @@ CONVERSIONS = \
shift_jis_2004_to_euc_jis_2004 SHIFT_JIS_2004 EUC_JIS_2004 shift_jis_2004_to_euc_jis_2004 euc_jis_2004_and_shift_jis_2004
all: $(SQLSCRIPT)
- @for dir in $(DIRS); do $(MAKE) -C $$dir $@ || exit; done
+ @for dir in $(SUBDIRS); do $(MAKE) -C $$dir $@ || exit; done
$(SQLSCRIPT): Makefile
ifeq ($(enable_shared), yes)
@@ -205,16 +205,16 @@ $(REGRESSION_SCRIPT): Makefile
install: $(SQLSCRIPT) installdirs
$(INSTALL_DATA) $(SQLSCRIPT) '$(DESTDIR)$(datadir)'
- @for dir in $(DIRS); do $(MAKE) -C $$dir $@ || exit; done
+ @for dir in $(SUBDIRS); do $(MAKE) -C $$dir $@ || exit; done
installdirs:
$(mkinstalldirs) '$(DESTDIR)$(datadir)' '$(DESTDIR)$(pkglibdir)'
uninstall:
rm -f '$(DESTDIR)$(datadir)/$(SQLSCRIPT)'
- @for dir in $(DIRS); do $(MAKE) -C $$dir $@ || exit; done
+ @for dir in $(SUBDIRS); do $(MAKE) -C $$dir $@ || exit; done
clean distclean maintainer-clean:
rm -f $(SQLSCRIPT)
- @for dir in $(DIRS); do $(MAKE) -C $$dir $@ || exit; done
+ @for dir in $(SUBDIRS); do $(MAKE) -C $$dir $@ || exit; done
diff --git a/src/bin/Makefile b/src/bin/Makefile
index ec82494233..a01d1f9386 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -13,11 +13,11 @@ subdir = src/bin
top_builddir = ../..
include $(top_builddir)/src/Makefile.global
-DIRS = initdb pg_ctl pg_dump \
+SUBDIRS = initdb pg_ctl pg_dump \
psql scripts pg_config pg_controldata pg_resetxlog
ifeq ($(PORTNAME), win32)
-DIRS+=pgevent
+SUBDIRS+=pgevent
endif
all install installdirs uninstall distprep clean distclean maintainer-clean:
- @for dir in $(DIRS); do $(MAKE) -C $$dir $@ || exit; done
+ @for dir in $(SUBDIRS); do $(MAKE) -C $$dir $@ || exit; done
diff --git a/src/interfaces/Makefile b/src/interfaces/Makefile
index 7a46579314..b63236c2e2 100644
--- a/src/interfaces/Makefile
+++ b/src/interfaces/Makefile
@@ -12,7 +12,7 @@ subdir = src/interfaces
top_builddir = ../..
include $(top_builddir)/src/Makefile.global
-DIRS = libpq ecpg
+SUBDIRS = libpq ecpg
all install installdirs uninstall distprep clean distclean maintainer-clean:
- @for dir in $(DIRS); do $(MAKE) -C $$dir $@ || exit; done
+ @for dir in $(SUBDIRS); do $(MAKE) -C $$dir $@ || exit; done
diff --git a/src/pl/Makefile b/src/pl/Makefile
index 34614debbd..670cf1ec0d 100644
--- a/src/pl/Makefile
+++ b/src/pl/Makefile
@@ -12,26 +12,26 @@ subdir = src/pl
top_builddir = ../..
include $(top_builddir)/src/Makefile.global
-DIRS = plpgsql
+SUBDIRS = plpgsql
ifeq ($(with_perl), yes)
-DIRS += plperl
+SUBDIRS += plperl
endif
ifeq ($(with_python), yes)
-DIRS += plpython
+SUBDIRS += plpython
endif
ifeq ($(with_tcl), yes)
-DIRS += tcl
+SUBDIRS += tcl
endif
all install installdirs uninstall distprep clean distclean maintainer-clean:
- @for dir in $(DIRS); do $(MAKE) -C $$dir $@ || exit; done
+ @for dir in $(SUBDIRS); do $(MAKE) -C $$dir $@ || exit; done
# We'd like check operations to run all the subtests before failing.
check installcheck:
- @CHECKERR=0; for dir in $(DIRS); do \
+ @CHECKERR=0; for dir in $(SUBDIRS); do \
$(MAKE) -C $$dir $@ || CHECKERR=$$?; \
done; \
exit $$CHECKERR
diff --git a/src/pl/plpgsql/Makefile b/src/pl/plpgsql/Makefile
index bb41207f98..0ac908df1c 100644
--- a/src/pl/plpgsql/Makefile
+++ b/src/pl/plpgsql/Makefile
@@ -12,5 +12,5 @@ subdir = src/pl/plpgsql
top_builddir = ../../..
include $(top_builddir)/src/Makefile.global
-all install installdirs uninstall distprep clean distclean maintainer-clean:
+all install installdirs uninstall distprep clean distclean maintainer-clean coverage:
$(MAKE) -C src $@
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index c4b9ed5462..f5a01b36fb 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -321,7 +321,7 @@ sub mkvcbuild
$mf = Project::read_file('src\backend\utils\mb\conversion_procs\Makefile');
$mf =~ s{\\s*[\r\n]+}{}mg;
- $mf =~ m{DIRS\s*=\s*(.*)$}m || die 'Could not match in conversion makefile' . "\n";
+ $mf =~ m{SUBDIRS\s*=\s*(.*)$}m || die 'Could not match in conversion makefile' . "\n";
foreach my $sub (split /\s+/,$1)
{
my $mf = Project::read_file('src\backend\utils\mb\conversion_procs\\' . $sub . '\Makefile');