mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-11-21 03:13:05 +08:00
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.
This commit is contained in:
parent
e605fbcccd
commit
7798147a76
@ -1,7 +1,7 @@
|
||||
#
|
||||
# PostgreSQL top level makefile
|
||||
#
|
||||
# $PostgreSQL: pgsql/GNUmakefile.in,v 1.50 2009/01/15 01:53:49 momjian Exp $
|
||||
# $PostgreSQL: pgsql/GNUmakefile.in,v 1.51 2009/08/07 20:50:21 petere Exp $
|
||||
#
|
||||
|
||||
subdir =
|
||||
@ -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 $@
|
||||
@ -61,25 +61,6 @@ GNUmakefile: GNUmakefile.in $(top_builddir)/config.status
|
||||
./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)
|
||||
|
@ -1,10 +1,10 @@
|
||||
# $PostgreSQL: pgsql/contrib/Makefile,v 1.87 2009/03/25 23:20:01 tgl Exp $
|
||||
# $PostgreSQL: pgsql/contrib/Makefile,v 1.88 2009/08/07 20:50:21 petere Exp $
|
||||
|
||||
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
|
||||
|
@ -1,4 +1,4 @@
|
||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/regress.sgml,v 1.63 2009/04/27 16:27:36 momjian Exp $ -->
|
||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/regress.sgml,v 1.64 2009/08/07 20:50:21 petere Exp $ -->
|
||||
|
||||
<chapter id="regress">
|
||||
<title id="regress-title">Regression Tests</title>
|
||||
@ -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>
|
||||
|
11
src/Makefile
11
src/Makefile
@ -4,7 +4,7 @@
|
||||
#
|
||||
# Copyright (c) 1994, Regents of the University of California
|
||||
#
|
||||
# $PostgreSQL: pgsql/src/Makefile,v 1.45 2009/02/24 10:06:32 petere Exp $
|
||||
# $PostgreSQL: pgsql/src/Makefile,v 1.46 2009/08/07 20:50:22 petere Exp $
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
@ -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
|
||||
|
@ -1,5 +1,5 @@
|
||||
# -*-makefile-*-
|
||||
# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.255 2009/08/04 22:04:37 petere Exp $
|
||||
# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.256 2009/08/07 20:50:22 petere Exp $
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# All PostgreSQL makefiles include this file and use the variables it sets,
|
||||
@ -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
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Common make rules for backend
|
||||
#
|
||||
# $PostgreSQL: pgsql/src/backend/common.mk,v 1.8 2008/09/05 12:11:18 petere Exp $
|
||||
# $PostgreSQL: pgsql/src/backend/common.mk,v 1.9 2009/08/07 20:50:22 petere Exp $
|
||||
#
|
||||
|
||||
# When including this file, set OBJS to the object files created in
|
||||
@ -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
|
||||
|
@ -4,7 +4,7 @@
|
||||
# Makefile for utils/mb/conversion_procs
|
||||
#
|
||||
# IDENTIFICATION
|
||||
# $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/Makefile,v 1.21 2009/02/10 19:29:39 petere Exp $
|
||||
# $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/Makefile,v 1.22 2009/08/07 20:50:22 petere Exp $
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
@ -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
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
# Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
|
||||
# Portions Copyright (c) 1994, Regents of the University of California
|
||||
#
|
||||
# $PostgreSQL: pgsql/src/bin/Makefile,v 1.54 2009/01/01 17:23:53 momjian Exp $
|
||||
# $PostgreSQL: pgsql/src/bin/Makefile,v 1.55 2009/08/07 20:50:22 petere Exp $
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
@ -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
|
||||
|
@ -4,7 +4,7 @@
|
||||
#
|
||||
# Copyright (c) 1994, Regents of the University of California
|
||||
#
|
||||
# $PostgreSQL: pgsql/src/interfaces/Makefile,v 1.56 2008/03/18 16:24:50 petere Exp $
|
||||
# $PostgreSQL: pgsql/src/interfaces/Makefile,v 1.57 2009/08/07 20:50:22 petere Exp $
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
@ -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
|
||||
|
@ -4,7 +4,7 @@
|
||||
#
|
||||
# Copyright (c) 1994, Regents of the University of California
|
||||
#
|
||||
# $PostgreSQL: pgsql/src/pl/Makefile,v 1.27 2008/03/18 16:24:50 petere Exp $
|
||||
# $PostgreSQL: pgsql/src/pl/Makefile,v 1.28 2009/08/07 20:50:22 petere Exp $
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
@ -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
|
||||
|
@ -4,7 +4,7 @@
|
||||
#
|
||||
# Copyright (c) 1994, Regents of the University of California
|
||||
#
|
||||
# $PostgreSQL: pgsql/src/pl/plpgsql/Makefile,v 1.9 2008/03/18 16:24:50 petere Exp $
|
||||
# $PostgreSQL: pgsql/src/pl/plpgsql/Makefile,v 1.10 2009/08/07 20:50:22 petere Exp $
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
@ -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 $@
|
||||
|
@ -3,7 +3,7 @@ package Mkvcbuild;
|
||||
#
|
||||
# Package that generates build files for msvc build
|
||||
#
|
||||
# $PostgreSQL: pgsql/src/tools/msvc/Mkvcbuild.pm,v 1.41 2009/07/16 17:43:52 tgl Exp $
|
||||
# $PostgreSQL: pgsql/src/tools/msvc/Mkvcbuild.pm,v 1.42 2009/08/07 20:50:22 petere Exp $
|
||||
#
|
||||
use Carp;
|
||||
use Win32;
|
||||
@ -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');
|
||||
|
Loading…
Reference in New Issue
Block a user