diff options
author | Peter Eisentraut | 2009-08-07 20:50:22 +0000 |
---|---|---|
committer | Peter Eisentraut | 2009-08-07 20:50:22 +0000 |
commit | cfca5cc38c94417f6a25b4881440f587856d1794 (patch) | |
tree | 1fca6be0ee02adb7a5d930beefae7a9668089f8b | |
parent | 46cd3b380943e3db817802e757434a26b42e5091 (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.in | 21 | ||||
-rw-r--r-- | contrib/Makefile | 12 | ||||
-rw-r--r-- | doc/src/sgml/regress.sgml | 1 | ||||
-rw-r--r-- | src/Makefile | 9 | ||||
-rw-r--r-- | src/Makefile.global.in | 10 | ||||
-rw-r--r-- | src/backend/common.mk | 6 | ||||
-rw-r--r-- | src/backend/utils/mb/conversion_procs/Makefile | 10 | ||||
-rw-r--r-- | src/bin/Makefile | 6 | ||||
-rw-r--r-- | src/interfaces/Makefile | 4 | ||||
-rw-r--r-- | src/pl/Makefile | 12 | ||||
-rw-r--r-- | src/pl/plpgsql/Makefile | 2 | ||||
-rw-r--r-- | src/tools/msvc/Mkvcbuild.pm | 2 |
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'); |