Re: Question about make coverage-html

From: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
To: Peter Smith <smithpb2250(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Question about make coverage-html
Date: 2020-10-27 09:17:19
Message-ID: 46d17b88-65e8-5a07-2e12-693f73d307ac@iki.fi
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 27/10/2020 10:09, Peter Smith wrote:
> Hi hackers.
>
> The example of test coverage in the documentation [1] works as advertised.
>
> But I wanted to generate test coverage results only of some TAP tests
> in src/test/subscription.
>
> The documentation [1] also says "The make commands also work in
> subdirectories." so I tried running them all in that folder.
>
> However, when I run "make coverage-html" in that subdirectory
> src/test/subscription it does not work:
>
> =====
> [postgres(at)CentOS7-x64 subscription]$ make coverage-html
> /usr/local/bin/lcov --gcov-tool /usr/bin/gcov -q --no-external -c -i
> -d . -d . -o lcov_base.info
> geninfo: WARNING: no .gcno files found in . - skipping!
> geninfo: WARNING: no .gcno files found in . - skipping!
> /usr/local/bin/lcov --gcov-tool /usr/bin/gcov -q --no-external -c -d .
> -d . -o lcov_test.info
> geninfo: WARNING: no .gcda files found in . - skipping!
> geninfo: WARNING: no .gcda files found in . - skipping!
> rm -rf coverage
> /usr/local/bin/genhtml -q --legend -o coverage --title='PostgreSQL
> 14devel' --num-spaces=4 --prefix='/home/postgres/oss_postgres_2PC'
> lcov_base.info lcov_test.info
> genhtml: ERROR: no valid records found in tracefile lcov_base.info
> make: *** [coverage-html-stamp] Error 255
> [postgres(at)CentOS7-x64 subscription]$
> =====
>
> OTOH, running the "make coverage-html" at the top folder after running
> my TAP tests does give the desired coverage results.
>
> ~
>
> QUESTION:
>
> Was that documentation [1] just being misleading by saying it can work
> in the subdirectories?
> e.g. Are you only supposed to run "make coverage-html" from the top folder?
>
> Or is it supposed to work but I did something wrong?

Running "make coverage-html" in src/test/subscription doesn't work,
because there is no C code in that directory.

Creating a coverage report is a two-step process. First, you run the
test you're interested in, with "make check" or similar. Then you create
a report for the source files you're interested in, with "make
coverage-html". You can run these commands in different subdirectories.

In this case, you want to do "cd src/test/subscription; make check", to
run those TAP tests, and then run "make coverage-html" from the top
folder. Or if you wanted to create coverage report that covers only
replication-related source code, for example, you could run it in the
src/backend/replication directory ("cd src/backend/replication; make
coverage-html").

- Heikki

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message tsunakawa.takay@fujitsu.com 2020-10-27 09:30:36 RE: Multiple hosts in connection string failed to failover in non-hot standby mode
Previous Message gkokolatos 2020-10-27 08:57:24 Re: Commitfest manager 2020-11