From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com> |
Cc: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, Stephen Frost <sfrost(at)snowman(dot)net>, Magnus Hagander <magnus(at)hagander(dot)net>, PostgreSQL WWW <pgsql-www(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Bogus reports from coverage.postgresql.org |
Date: | 2018-03-14 16:31:45 |
Message-ID: | 5744.1521045105@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-www |
I wrote:
> I also notice an interesting warning with either version:
> $ make coverage-html
> /usr/bin/lcov --gcov-tool /usr/bin/gcov -q --no-external -c -i -d . -d . -o lcov_base.info
> geninfo: Note: --initial does not generate branch coverage data
> /usr/bin/lcov --gcov-tool /usr/bin/gcov -q --no-external -c -d . -d . -o lcov_test.info
> rm -rf coverage
> /usr/bin/genhtml -q --legend -o coverage --title='PostgreSQL 11devel' --num-spaces=4 --prefix='/home/tgl/pgsql' lcov_base.info lcov_test.info
> touch coverage-html-stamp
> No idea what "--initial" refers to, but it suggests that we're
> misusing the tool somehow with this configuration.
So I went and read the lcov man page, and according to it we're doing
this entirely wrong. The correct process, saith lcov, is
-i
--initial
Capture initial zero coverage data.
Run lcov with -c and this option on the directories containing
.bb, .bbg or .gcno files before running any test case. The
result is a "baseline" coverage data file that contains zero
coverage for every instrumented line. Combine this data file
(using lcov -a) with coverage data files captured after a test
run to ensure that the percentage of total lines covered is cor-
rect even when not all source code files were loaded during the
test.
Recommended procedure when capturing data for a test case:
1. create baseline coverage data file
# lcov -c -i -d appdir -o app_base.info
2. perform test
# appdir/test
3. create test coverage data file
# lcov -c -d appdir -o app_test.info
4. combine baseline and test coverage data
# lcov -a app_base.info -a app_test.info -o
app_total.info
Our process swaps steps 1 and 2. What I now suspect is that
we accidentally get away with that for basic mode, but it
doesn't work with lcov_branch_coverage.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2018-03-14 16:46:39 | Re: Bogus reports from coverage.postgresql.org |
Previous Message | Tom Lane | 2018-03-14 16:15:17 | Re: Bogus reports from coverage.postgresql.org |