Re: [GENERAL] Extension coverage - Mailing list pgsql-general

From Gabriel Furstenheim Milerud
Subject Re: [GENERAL] Extension coverage
Date
Msg-id CAJN3DWqoL03NLb7=_cKcwvfr-VXKgQR3eZ_SpOhWt03psvKPyw@mail.gmail.com
Whole thread Raw
In response to Re: [GENERAL] Extension coverage  (Michael Paquier <michael.paquier@gmail.com>)
Responses Re: [GENERAL] Extension coverage  (Michael Paquier <michael.paquier@gmail.com>)
List pgsql-general
Not sure I follow. Do you have an example that I could check?
I have the impression that my problem is that no .gcda files are created. If I just run the lcov part:
    lcov -d . -c -o lcov.info

I get
   Found gcov version: 5.4.0
   Scanning . for .gcda files ...
   geninfo: WARNING: no .gcda files found in . - skipping!
   Finished .info-file creation
  
and an empty file lcov.info is created.


Just to check, I've tried running make coverage and make coverage-html on the folder of postgres instead of the extension and that works.


On 26 August 2017 at 06:40, Michael Paquier <michael.paquier@gmail.com> wrote:
On Sat, Aug 26, 2017 at 2:59 AM, Gabriel Furstenheim Milerud
<furstenheim@gmail.com> wrote:
> The I built my extension against this postgres server
>
>    $ cd $EXTENSION_SOURCE_DIR
>    $ make install && make installcheck
>
> the extension is built fine and the test run. However, I see no difference
> with a normal installation without the flag.
>
> Then I run the following target
> (https://stackoverflow.com/questions/31417900/how-to-run-coverage-report-on-a-postgres-extension)
>    coverage:
>        lcov --no-external -d .  -c -o lcov.info
>        genhtml --show-details --legend --output-directory=coverage
> --title=PostgreSQL --num-spaces=4 --prefix=./src/ `find . -name lcov.info
> -print`
>
> But it complains that there are no .gcda files
>     geninfo: WARNING: no .gcda files found in . - skipping!
> and it errors.
>    genhtml: ERROR: no valid records found in tracefile ./lcov.info
>
> Is this the way to measure coverage on an extension? Am I missing some step?

This error is a bit weird, what you are showing here has nothing
wrong. I do work with this coverage target and postgres extensions,
and the following steps allow me to generate a text report of coverage
when compiling any extension with a Postgres build having
--enable-coverage:
make install
make installcheck
make coverage
Trying to use coverage-html from an external extension leads to an error:
$ make coverage-html
rm -rf coverage
mkdir coverage
/home/ioltas/extra/bin/genhtml --show-details --legend
--output-directory=coverage --title=PostgreSQL --num-spaces=4
--prefix= `find . -name lcov.info -print`
genhtml: Option prefix requires an argument
Use genhtml --help to get usage information

But this bit is easy enough to fix by enforcing the value of
abs_top_srcdir when running the command "make coverage-html".
--
Michael

pgsql-general by date:

Previous
From: Michael Paquier
Date:
Subject: Re: [GENERAL] Extension coverage
Next
From: Tim Uckun
Date:
Subject: [GENERAL] Immutable functions and cache invalidation.