agora inbox for pgsql-hackers@postgresql.org  
help / color / mirror / Atom feed
How to run test coverage on Debian 13 ?
4+ messages / 3 participants
[nested] [flat]

* How to run test coverage on Debian 13 ?
@ 2026-10-03 16:08  Pierre Forstmann <pierre.forstmann@gmail.com>
  0 siblings, 2 replies; 4+ messages in thread

From: Pierre Forstmann @ 2026-10-03 16:08 UTC (permalink / raw)
  To: pgsql-hackers@lists.postgresql.org

Hello,

I'm trying to test run test coverage using master branch on Debian 13 with:

postgres@alma:~$ lcov --version
lcov: LCOV version 2.0-1
postgres@alma:~$ gcov --version
gcov (Debian 14.2.0-19) 14.2.0
JSON format version: 2
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

If I build  PG with make using:

./configure --prefix=$TARGET --enable-cassert --enable-debug 
--with-uuid=e2fs --with-openssl --enable-tap-tests 
--enable-injection-points --with-liburing --enable-coverage


I get:

postgres@alma:~/postgresql$ make check
make -C ./src/backend generated-headers
make[1] : on entre dans le répertoire « 
/var/lib/postgresql/postgresql/src/backend »
make -C ../include/catalog generated-headers
make[2] : on entre dans le répertoire « 
/var/lib/postgresql/postgresql/src/include/catalog »
make[2]: Rien à faire pour « generated-headers ».
make[2] : on quitte le répertoire « 
/var/lib/postgresql/postgresql/src/include/catalog »
make -C nodes generated-header-symlinks
make[2] : on entre dans le répertoire « 
/var/lib/postgresql/postgresql/src/backend/nodes »
make[2]: Rien à faire pour « generated-header-symlinks ».
make[2] : on quitte le répertoire « 
/var/lib/postgresql/postgresql/src/backend/nodes »
make -C utils generated-header-symlinks
make[2] : on entre dans le répertoire « 
/var/lib/postgresql/postgresql/src/backend/utils »
make -C adt jsonpath_gram.h
make[3] : on entre dans le répertoire « 
/var/lib/postgresql/postgresql/src/backend/utils/adt »
make[3]: « jsonpath_gram.h » est à jour.
make[3] : on quitte le répertoire « 
/var/lib/postgresql/postgresql/src/backend/utils/adt »
make[2] : on quitte le répertoire « 
/var/lib/postgresql/postgresql/src/backend/utils »
make[1] : on quitte le répertoire « 
/var/lib/postgresql/postgresql/src/backend »
rm -rf '/var/lib/postgresql/postgresql'/tmp_install
/usr/bin/mkdir -p '/var/lib/postgresql/postgresql'/tmp_install/log
make -C '.' DESTDIR='/var/lib/postgresql/postgresql'/tmp_install install 
 >'/var/lib/postgresql/postgresql'/tmp_install/log/install.log 2>&1
make -j1 -C src/test/regress checkprep 
 >>'/var/lib/postgresql/postgresql'/tmp_install/log/install.log 2>&1
PATH="/var/lib/postgresql/postgresql/tmp_install/var/lib/pgsql/local/bin:/var/lib/postgresql/postgresql:$PATH" 
LD_LIBRARY_PATH="/var/lib/postgresql/postgresql/tmp_install/var/lib/pgsql/local/lib" 
INITDB_TEMPLATE='/var/lib/postgresql/postgresql'/tmp_install/initdb-template 
initdb --auth trust --no-sync --no-instructions --lc-messages=C 
--no-clean '/var/lib/postgresql/postgresql'/tmp_install/initdb-template 
 >>'/var/lib/postgresql/postgresql'/tmp_install/log/initdb-template.log 2>&1
make -C src/test/regress check
make[1] : on entre dans le répertoire « 
/var/lib/postgresql/postgresql/src/test/regress »
make -C ../../../src/port all
make[2] : on entre dans le répertoire « 
/var/lib/postgresql/postgresql/src/port »
make[2]: Rien à faire pour « all ».
make[2] : on quitte le répertoire « 
/var/lib/postgresql/postgresql/src/port »
make -C ../../../src/common all
make[2] : on entre dans le répertoire « 
/var/lib/postgresql/postgresql/src/common »
make[2]: Rien à faire pour « all ».
make[2] : on quitte le répertoire « 
/var/lib/postgresql/postgresql/src/common »
echo "# +++ regress check in src/test/regress +++" && 
PATH="/var/lib/postgresql/postgresql/tmp_install/var/lib/pgsql/local/bin:/var/lib/postgresql/postgresql/src/test/regress:$PATH" 
LD_LIBRARY_PATH="/var/lib/postgresql/postgresql/tmp_install/var/lib/pgsql/local/lib" 
INITDB_TEMPLATE='/var/lib/postgresql/postgresql'/tmp_install/initdb-template 
../../../src/test/regress/pg_regress --temp-instance=./tmp_check 
--inputdir=. --bindir=     --dlpath=. --max-concurrent-tests=20 
--schedule=./parallel_schedule
# +++ regress check in src/test/regress +++
# initializing database system by copying initdb template
# using temp instance on port 52544 with PID 101875
ok 1         - test_setup                                379 ms
# parallel group (20 tests):  char name oid pg_lsn text varchar money 
txid regproc int4 float4 int2 boolean int8 float8 bit enum uuid numeric 
rangetypes
ok 2         + boolean                                   124 ms
ok 3         + char                                       38 ms
ok 4         + name                                       42 ms
ok 5         + varchar                                    68 ms
ok 6         + text                                       65 ms
ok 7         + int2                                       95 ms
ok 8         + int4                                       94 ms
ok 9         + int8                                      133 ms
ok 10        + oid                                        64 ms
ok 11        + float4                                     94 ms
ok 12        + float8                                    145 ms
ok 13        + bit                                       151 ms
ok 14        + numeric                                   546 ms
ok 15        + txid                                       72 ms
ok 16        + uuid                                      194 ms
ok 17        + enum                                      153 ms
ok 18        + money                                      67 ms
ok 19        + rangetypes                                719 ms
ok 20        + pg_lsn                                     62 ms
ok 21        + regproc                                    76 ms
# parallel group (20 tests):  md5 lseg time line circle point numerology 
date path macaddr8 timetz macaddr interval inet strings timestamp 
polygon box timestamptz multirangetypes
ok 22        + strings                                   332 ms
ok 23        + md5                                        26 ms
ok 24        + numerology                                 75 ms
ok 25        + point                                      56 ms
ok 26        + lseg                                       42 ms
ok 27        + line                                       51 ms
ok 28        + box                                       418 ms
ok 29        + path                                       80 ms
ok 30        + polygon                                   397 ms
ok 31        + circle                                     53 ms
ok 32        + date                                       74 ms
ok 33        + time                                       40 ms
ok 34        + timetz                                    106 ms
ok 35        + timestamp                                 376 ms
ok 36        + timestamptz                               429 ms
ok 37        + interval                                  132 ms
ok 38        + inet                                      134 ms
ok 39        + macaddr                                   104 ms
ok 40        + macaddr8                                   79 ms
ok 41        + multirangetypes                           453 ms
# parallel group (19 tests):  comments euc_kr misc_sanity unicode 
pg_ndistinct pg_dependencies tstypes oid8 xid encoding geometry horology 
expressions mvcc type_sanity database regex stats_import opr_sanity
ok 42        + geometry                                  153 ms
ok 43        + horology                                  156 ms
ok 44        + tstypes                                    78 ms
ok 45        + regex                                     406 ms
ok 46        + type_sanity                               265 ms
ok 47        + opr_sanity                                672 ms
ok 48        + misc_sanity                                41 ms
ok 49        + comments                                   23 ms
ok 50        + expressions                               156 ms
ok 51        + unicode                                    43 ms
ok 52        + xid                                       139 ms
ok 53        + mvcc                                      216 ms
ok 54        + database                                  393 ms
ok 55        + stats_import                              578 ms
ok 56        + pg_ndistinct                               63 ms
ok 57        + pg_dependencies                            67 ms
ok 58        + oid8                                      101 ms
ok 59        + encoding                                  133 ms
ok 60        + euc_kr                                     28 ms
# parallel group (6 tests):  copyencoding copyselect copydml copy 
insert_conflict insert
ok 61        + copy                                      189 ms
ok 62        + copyselect                                 41 ms
ok 63        + copydml                                    43 ms
ok 64        + copyencoding                               25 ms
ok 65        + insert                                    508 ms
ok 66        + insert_conflict                           235 ms
# parallel group (7 tests):  create_function_c create_operator 
create_type create_misc create_procedure create_schema create_table
ok 67        + create_function_c                          17 ms
ok 68        + create_misc                                73 ms
ok 69        + create_operator                            34 ms
ok 70        + create_procedure                           80 ms
ok 71        + create_table                              566 ms
ok 72        + create_type                                61 ms
ok 73        + create_schema                             105 ms
# parallel group (5 tests):  index_including create_view 
index_including_gist create_index_spgist create_index
ok 74        + create_index                             1265 ms
ok 75        + create_index_spgist                       742 ms
ok 76        + create_view                               393 ms
ok 77        + index_including                           266 ms
ok 78        + index_including_gist                      514 ms
# parallel group (16 tests):  create_aggregate errors create_cast 
roleattributes infinite_recurse hash_func select drop_if_exists 
typed_table create_function_sql create_am vacuum constraints 
updatable_views inherit triggers
ok 79        + create_aggregate                           61 ms
ok 80        + create_function_sql                       232 ms
ok 81        + create_cast                                62 ms
ok 82        + constraints                               978 ms
ok 83        + triggers                                 2120 ms
ok 84        + select                                    123 ms
ok 85        + inherit                                  1614 ms
ok 86        + typed_table                               177 ms
ok 87        + vacuum                                    769 ms
ok 88        + drop_if_exists                            137 ms
ok 89        + updatable_views                          1007 ms
ok 90        + roleattributes                             85 ms
ok 91        + create_am                                 312 ms
ok 92        + hash_func                                  99 ms
ok 93        + errors                                     59 ms
ok 94        + infinite_recurse                           84 ms
ok 95        - sanity_check                              146 ms
# parallel group (20 tests):  select_having case select_implicit delete 
select_distinct_on prepared_xacts namespace select_into random 
transactions portals select_distinct union arrays update subselect 
hash_index aggregates join btree_index
ok 96        + select_into                               232 ms
ok 97        + select_distinct                           417 ms
ok 98        + select_distinct_on                        125 ms
ok 99        + select_implicit                            98 ms
ok 100       + select_having                              54 ms
ok 101       + subselect                                 676 ms
ok 102       + union                                     432 ms
ok 103       + case                                       83 ms
ok 104       + join                                     1351 ms
ok 105       + aggregates                               1326 ms
ok 106       + transactions                              267 ms
ok 107       + random                                    242 ms
ok 108       + portals                                   276 ms
ok 109       + arrays                                    473 ms
ok 110       + btree_index                              2589 ms
ok 111       + hash_index                               1052 ms
ok 112       + update                                    667 ms
ok 113       + delete                                    107 ms
ok 114       + namespace                                 194 ms
ok 115       + prepared_xacts                            184 ms
# parallel group (20 tests):  init_privs drop_operator security_label 
password tablesample lock collate object_address replica_identity 
groupingsets matview identity rowsecurity spgist generated_stored gin 
gist join_hash brin privileges
ok 116       + brin                                     3466 ms
ok 117       + gin                                      1677 ms
ok 118       + gist                                     1964 ms
ok 119       + spgist                                   1334 ms
ok 120       + privileges                               4056 ms
ok 121       + init_privs                                 27 ms
ok 122       + security_label                            130 ms
ok 123       + collate                                   326 ms
ok 124       + matview                                   755 ms
ok 125       + lock                                      217 ms
ok 126       + replica_identity                          447 ms
ok 127       + rowsecurity                              1234 ms
ok 128       + object_address                            350 ms
ok 129       + tablesample                               210 ms
ok 130       + groupingsets                              685 ms
ok 131       + drop_operator                              87 ms
ok 132       + password                                  154 ms
ok 133       + identity                                  836 ms
ok 134       + generated_stored                         1380 ms
ok 135       + join_hash                                3427 ms
# parallel group (2 tests):  brin_bloom brin_multi
ok 136       + brin_bloom                                139 ms
ok 137       + brin_multi                                955 ms
# parallel group (20 tests):  nls async dbsize sysviews tid collate.utf8 
tidscan tsrf alter_operator create_role misc_functions alter_generic 
misc incremental_sort tidrangescan merge create_table_like 
collate.icu.utf8 generated_virtual without_overlaps
ok 138       + create_table_like                         794 ms
ok 139       + alter_generic                             270 ms
ok 140       + alter_operator                            158 ms
ok 141       + misc                                      301 ms
ok 142       + async                                      37 ms
ok 143       + dbsize                                     43 ms
ok 144       + merge                                     684 ms
ok 145       + misc_functions                            243 ms
ok 146       + nls                                        32 ms
ok 147       + sysviews                                   94 ms
ok 148       + tsrf                                      149 ms
ok 149       + tid                                       110 ms
ok 150       + tidscan                                   126 ms
ok 151       + tidrangescan                              466 ms
ok 152       + collate.utf8                              120 ms
ok 153       + collate.icu.utf8                          846 ms
ok 154       + incremental_sort                          403 ms
ok 155       + create_role                               181 ms
ok 156       + without_overlaps                         1133 ms
ok 157       + generated_virtual                         977 ms
# parallel group (8 tests):  collate.windows.win1252 amutils 
psql_crosstab psql_pipeline collate.linux.utf8 rules psql stats_ext
ok 158       + rules                                     669 ms
ok 159       + psql                                      681 ms
ok 160       + psql_crosstab                              46 ms
ok 161       + psql_pipeline                              58 ms
ok 162       + amutils                                    31 ms
ok 163       + stats_ext                                3211 ms
ok 164       + collate.linux.utf8                        176 ms
ok 165       + collate.windows.win1252                    15 ms
ok 166       - select_parallel                          2655 ms
ok 167       - write_parallel                            298 ms
ok 168       - vacuum_parallel                           268 ms
ok 169       - maintain_every                             32 ms
# parallel group (2 tests):  subscription publication
ok 170       + publication                               849 ms
ok 171       + subscription                              151 ms
# parallel group (17 tests):  portals_p2 combocid xmlmap tsdicts 
advisory_lock functional_deps dependency equivclass guc stats_rewrite 
select_views indirect_toast window tsearch bitmapops foreign_data 
foreign_key
ok 172       + select_views                              325 ms
ok 173       + portals_p2                                 57 ms
ok 174       + foreign_key                              2430 ms
ok 175       + dependency                                163 ms
ok 176       + guc                                       195 ms
ok 177       + bitmapops                                 608 ms
ok 178       + combocid                                   69 ms
ok 179       + tsearch                                   570 ms
ok 180       + tsdicts                                    97 ms
ok 181       + foreign_data                              971 ms
ok 182       + window                                    509 ms
ok 183       + xmlmap                                     85 ms
ok 184       + functional_deps                           119 ms
ok 185       + advisory_lock                              91 ms
ok 186       + indirect_toast                            341 ms
ok 187       + equivclass                                167 ms
ok 188       + stats_rewrite                             218 ms
# parallel group (9 tests):  jsonpath_encoding json_encoding jsonpath 
sqljson_jsontable json sqljson_queryfuncs jsonb_jsonpath sqljson jsonb
ok 189       + json                                      166 ms
ok 190       + jsonb                                     572 ms
ok 191       + json_encoding                              23 ms
ok 192       + jsonpath                                   52 ms
ok 193       + jsonpath_encoding                          20 ms
ok 194       + jsonb_jsonpath                            175 ms
ok 195       + sqljson                                   177 ms
ok 196       + sqljson_queryfuncs                        171 ms
ok 197       + sqljson_jsontable                         134 ms
# parallel group (18 tests):  xml prepare limit conversion plancache 
returning largeobject polymorphism rowtypes copy2 with sequence truncate 
temp rangefuncs domain plpgsql alter_table
ok 198       + plancache                                 254 ms
ok 199       + limit                                     213 ms
ok 200       + plpgsql                                  1478 ms
ok 201       + copy2                                     407 ms
ok 202       + temp                                      552 ms
ok 203       + domain                                    601 ms
ok 204       + rangefuncs                                560 ms
ok 205       + prepare                                    76 ms
ok 206       + conversion                                229 ms
ok 207       + truncate                                  491 ms
ok 208       + alter_table                              2484 ms
ok 209       + sequence                                  456 ms
ok 210       + polymorphism                              350 ms
ok 211       + rowtypes                                  385 ms
ok 212       + returning                                 270 ms
ok 213       + largeobject                               334 ms
ok 214       + with                                      451 ms
ok 215       + xml                                        44 ms
# parallel group (15 tests):  numa hash_part planner_est reloptions 
predicate partition_info explain memoize eager_aggregate stats 
partition_join partition_aggregate tuplesort indexing partition_prune
ok 216       + partition_join                           1454 ms
ok 217       + partition_prune                          1944 ms
ok 218       + reloptions                                155 ms
ok 219       + hash_part                                  75 ms
ok 220       + indexing                                 1824 ms
ok 221       + partition_aggregate                      1542 ms
ok 222       + partition_info                            178 ms
ok 223       + tuplesort                                1601 ms
ok 224       + explain                                   219 ms
ok 225       + memoize                                   439 ms
ok 226       + stats                                    1413 ms
ok 227       + predicate                                 168 ms
ok 228       + numa                                       30 ms
ok 229       + eager_aggregate                           674 ms
ok 230       + planner_est                                90 ms
# parallel group (4 tests):  compression_lz4 compression_pglz 
compression cluster
ok 231       + compression                               158 ms
ok 232       + compression_lz4                            17 ms
ok 233       + compression_pglz                           17 ms
ok 234       + cluster                                   455 ms
# parallel group (2 tests):  oidjoins event_trigger
ok 235       + oidjoins                                  429 ms
ok 236       + event_trigger                             478 ms
ok 237       - event_trigger_login                        45 ms
ok 238       - fast_default                              270 ms
ok 239       - tablespace                                515 ms
1..239
# All 239 tests passed.
make[1] : on quitte le répertoire « 
/var/lib/postgresql/postgresql/src/test/regress »

postgres@alma:~/postgresql$ make coverage-html
/usr/bin/lcov --gcov-tool /usr/bin/gcov -q --no-external -c -i -d . -d . 
-o lcov_base.info
lcov: ERROR: (usage) duplicate file ./src/backend/parser/scan.gcno in 
both . and .
     (use "lcov --ignore-errors usage ..." to bypass this error)
Message summary:
   1 error message:
     usage: 1
make: *** [src/Makefile.global:1065: lcov_base.info] Error 1

If I build PG with meson using:

meson setup build --prefix=$TARGET --buildtype=debug -Dcassert=true 
-Duuid=e2fs -Dssl=openssl -Dtap_tests=enabled  -Dliburing=enabled 
-Db_coverage=true

I get:

postgres@alma:~/postgresql$ meson test -C build --print-errorlogs 
--suite setup --suite regress
ninja: Entering directory `/var/lib/postgresql/postgresql/build'
ninja: no work to do.
1/4 postgresql:setup / tmp_install               OK   0.24s
2/4 postgresql:setup / install_test_files        OK   0.05s
3/4 postgresql:setup / initdb_cache              OK   1.95s
4/4 postgresql:regress / regress/regress         OK  44.24s   239 
subtests passed

Ok:                 4
Expected Fail:      0
Fail:               0
Unexpected Pass:    0
Skipped:            0
Timeout:            0

Full log written to 
/var/lib/postgresql/postgresql/build/meson-logs/testlog.txt

postgres@alma:~/postgresql$ cd build/
postgres@alma:~/postgresql/build$ ninja coverage-html
[1/1] Generating HTML coverage report
FAILED: meson-internal__coverage-html
/usr/bin/meson --internal coverage --html /var/lib/postgresql/postgresql 
/var/lib/postgresql/postgresql/subprojects 
/var/lib/postgresql/postgresql/build 
/var/lib/postgresql/postgresql/build/meson-logs
Capturing coverage data from /var/lib/postgresql/postgresql/build
geninfo cmd: '/usr/bin/geninfo /var/lib/postgresql/postgresql/build 
--toolname lcov --output-filename 
/var/lib/postgresql/postgresql/build/meson-logs/coverage.info.initial 
--initial'
Found gcov version: 14.2.0
Using intermediate gcov format
Recording 'internal' directories:
     /var/lib/postgresql/postgresql/build
Writing temporary data to /tmp/geninfo_datMOLt
Scanning /var/lib/postgresql/postgresql/build for .gcno files ...
Found 1688 graph files in /var/lib/postgresql/postgresql/build
using: chunkSize: 1, nchunks:1688, intervalLength:84
lcov: WARNING: (gcov) GCOV did not produce any data for 
/var/lib/postgresql/postgresql/build/src/interfaces/ecpg/preproc/ecpg.p/keywords.c.gcno
     (use "lcov --ignore-errors gcov,gcov ..." to suppress this warning)
lcov: WARNING: (gcov) GCOV did not produce any data for 
/var/lib/postgresql/postgresql/build/src/port/libpgport_srv.a.p/pg_popcount_aarch64.c.gcno
lcov: WARNING: (gcov) GCOV did not produce any data for 
/var/lib/postgresql/postgresql/build/src/port/libpgport.a.p/pg_popcount_aarch64.c.gcno
lcov: WARNING: (gcov) GCOV did not produce any data for 
/var/lib/postgresql/postgresql/build/src/port/libpgport_shlib.a.p/pg_popcount_aarch64.c.gcno
lcov: WARNING: (gcov) GCOV did not produce any data for 
/var/lib/postgresql/postgresql/build/src/backend/postgres_lib.a.p/optimizer_geqo_geqo_mutation.c.gcno
lcov: WARNING: (gcov) GCOV did not produce any data for 
/var/lib/postgresql/postgresql/build/src/backend/postgres_lib.a.p/meson-generated_.._.._include_utils_fmgrtab.c.gcno
lcov: WARNING: (gcov) GCOV did not produce any data for 
/var/lib/postgresql/postgresql/build/src/backend/postgres_lib.a.p/access_transam_twophase_rmgr.c.gcno
lcov: WARNING: (gcov) GCOV did not produce any data for 
/var/lib/postgresql/postgresql/build/src/backend/postgres_lib.a.p/utils_init_globals.c.gcno
lcov: WARNING: (gcov) GCOV did not produce any data for 
/var/lib/postgresql/postgresql/build/src/backend/postgres_lib.a.p/optimizer_geqo_geqo_misc.c.gcno
lcov: WARNING: (gcov) GCOV did not produce any data for 
/var/lib/postgresql/postgresql/build/src/backend/postgres_lib.a.p/optimizer_geqo_geqo_ox2.c.gcno
lcov: WARNING: (gcov) GCOV did not produce any data for 
/var/lib/postgresql/postgresql/build/src/backend/postgres_lib.a.p/optimizer_geqo_geqo_pmx.c.gcno
lcov: WARNING: (gcov) GCOV did not produce any data for 
/var/lib/postgresql/postgresql/build/src/backend/postgres_lib.a.p/utils_mmgr_memdebug.c.gcno
lcov: WARNING: (gcov) GCOV did not produce any data for 
/var/lib/postgresql/postgresql/build/src/backend/postgres_lib.a.p/optimizer_geqo_geqo_ox1.c.gcno
lcov: WARNING: (gcov) GCOV did not produce any data for 
/var/lib/postgresql/postgresql/build/src/backend/postgres_lib.a.p/optimizer_geqo_geqo_px.c.gcno
lcov: WARNING: (gcov) GCOV did not produce any data for 
/var/lib/postgresql/postgresql/build/src/backend/postgres_lib.a.p/port_atomics.c.gcno
lcov: WARNING: (gcov) GCOV did not produce any data for 
/var/lib/postgresql/postgresql/build/src/backend/postgres_lib.a.p/optimizer_geqo_geqo_cx.c.gcno
Finished processing 1688 GCNO files
Apply filtering..
Finished filter file processing
Finished .info-file creation
Summary coverage rate:
   source files: 1657
   lines.......: 0.0% (0 of 550468 lines)
   functions...: 0.0% (0 of 30038 functions)
Filter suppressions:
   region:
     6499 instances
     5964 coverpoints
Message summary:
   16 warning messages:
     gcov: 16
Capturing coverage data from /var/lib/postgresql/postgresql/build
geninfo cmd: '/usr/bin/geninfo /var/lib/postgresql/postgresql/build 
--toolname lcov --output-filename 
/var/lib/postgresql/postgresql/build/meson-logs/coverage.info.run 
--no-checksum --branch-coverage --rc branch_coverage=1'
Found gcov version: 14.2.0
Using intermediate gcov format
Recording 'internal' directories:
     /var/lib/postgresql/postgresql/build
Writing temporary data to /tmp/geninfo_dat5fWu
Scanning /var/lib/postgresql/postgresql/build for .gcda files ...
Found 1366 data files in /var/lib/postgresql/postgresql/build
using: chunkSize: 1, nchunks:1366, intervalLength:68
lcov: WARNING: (inconsistent) /usr/include/python3.13/object.h:950: 
unexecuted block on non-branch line with non-zero hit count.  Use 
"geninfo --rc geninfo_unexecuted_blocks=1 to set count to zero.
     (use "lcov --ignore-errors inconsistent,inconsistent ..." to 
suppress this warning)
Message summary:
   1 error message:
     negative: 1
   1 warning message:
     inconsistent: 1
lcov: ERROR: (negative) Unexpected negative hit count '-5' for line 
/var/lib/postgresql/postgresql/src/port/snprintf.c:528" while capturing 
from 
/var/lib/postgresql/postgresql/build/src/port/libpgport_shlib.a.p/snprintf.c.gcda.
     (use "lcov --ignore-errors negative ..." to bypass this error)
Traceback (most recent call last):
   File "/usr/bin/meson", line 27, in <module>
     sys.exit(mesonmain.main())
              ~~~~~~~~~~~~~~^^
   File "/usr/lib/python3/dist-packages/mesonbuild/mesonmain.py", line 
293, in main
     return run(sys.argv[1:], launcher)
   File "/usr/lib/python3/dist-packages/mesonbuild/mesonmain.py", line 
281, in run
     return run_script_command(args[1], args[2:])
   File "/usr/lib/python3/dist-packages/mesonbuild/mesonmain.py", line 
222, in run_script_command
     return module.run(script_args)
            ~~~~~~~~~~^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/mesonbuild/scripts/coverage.py", 
line 213, in run
     return coverage(options.outputs, options.source_root,
                     options.subproject_root, options.build_root,
                     options.log_dir, options.use_llvm_cov,
                     options.gcovr, options.llvm_cov)
   File "/usr/lib/python3/dist-packages/mesonbuild/scripts/coverage.py", 
line 121, in coverage
     subprocess.check_call([lcov_exe,
     ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
                            '--directory', build_root,
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^
     ...<4 lines>...
                           lcov_config +
                           ^^^^^^^^^^^^^
                           gcov_tool_args)
                           ^^^^^^^^^^^^^^^
   File "/usr/lib/python3.13/subprocess.py", line 419, in check_call
     raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['lcov', '--directory', 
'/var/lib/postgresql/postgresql/build', '--capture', '--output-file', 
'/var/lib/postgresql/postgresql/build/meson-logs/coverage.info.run', 
'--no-checksum', '--rc', 'branch_coverage=1']' returned non-zero exit 
status 1.
ninja: build stopped: subcommand failed.
postgres@alma:~/postgresql/build$

What should I do ?







^ permalink  raw  reply  [nested|flat] 4+ messages in thread

* Re: How to run test coverage on Debian 13 ?
@ 2026-10-03 16:21  Tom Lane <tgl@sss.pgh.pa.us>
  parent: Pierre Forstmann <pierre.forstmann@gmail.com>
  1 sibling, 0 replies; 4+ messages in thread

From: Tom Lane @ 2026-10-03 16:21 UTC (permalink / raw)
  To: Pierre Forstmann <pierre.forstmann@gmail.com>; +Cc: pgsql-hackers@lists.postgresql.org

Pierre Forstmann <pierre.forstmann@gmail.com> writes:
> I'm trying to test run test coverage using master branch on Debian 13 with:
> ...
> postgres@alma:~/postgresql$ make coverage-html
> /usr/bin/lcov --gcov-tool /usr/bin/gcov -q --no-external -c -i -d . -d . 
> -o lcov_base.info
> lcov: ERROR: (usage) duplicate file ./src/backend/parser/scan.gcno in 
> both . and .
>      (use "lcov --ignore-errors usage ..." to bypass this error)
> Message summary:
>    1 error message:
>      usage: 1
> make: *** [src/Makefile.global:1065: lcov_base.info] Error 1

Yeah, recent versions of lcov are rather broken :-(.
Best bet is to apply "--ignore-errors" liberally,
and even then you'll get a bunch of useless warnings.
The output seems correct despite all that.

My coverage-running script currently does this so that
I don't see any complaints:

-----
# In RHEL 10.1 (LCOV version 2.0-1), we need a bunch of options
# to silence useless-and-probably-bogus warnings.
make -s coverage-html \
    LCOVFLAGS="-q --ignore-errors gcov,gcov" \
    GENHTML_FLAGS="-q --legend --ignore-errors unmapped,unmapped" \
    2>&1 | grep -v -e 'gcno:no functions found$' -e '^stderr:$' \
    -e 'WARNING: Duplicate specification "base-directory' \
    -e 'WARNING: Duplicate specification "build-directory'
-----

You might want to leave out the "grep -v" part until you've
satisfied yourself that no interesting messages are produced
on your installation.

			regards, tom lane





^ permalink  raw  reply  [nested|flat] 4+ messages in thread

* Re: How to run test coverage on Debian 13 ?
@ 2026-10-03 16:22  Álvaro Herrera <alvherre@kurilemu.de>
  parent: Pierre Forstmann <pierre.forstmann@gmail.com>
  1 sibling, 1 reply; 4+ messages in thread

From: Álvaro Herrera @ 2026-10-03 16:22 UTC (permalink / raw)
  To: Pierre Forstmann <pierre.forstmann@gmail.com>; +Cc: pgsql-hackers@lists.postgresql.org

Hello Pierre,

On 2026-Oct-03, Pierre Forstmann wrote:

> Hello,
> 
> I'm trying to test run test coverage using master branch on Debian 13 with:

> What should I do ?

Yeah, lcov is apparently broken at the moment and requires some flags to
turn some of its errors into warnings.  This thread has some recipes
that may be helpful:

https://postgr.es/m/akgWI8Cixc9b_7uB@alvherre.pgsql

I haven't tried with Meson, but maybe simply setting the same
environment variables is enough.

Some patches were offered, but I haven't tried them (yet):
https://postgr.es/m/CAHsn6_xCDQWe8_vVFhtFk27_xTdyVV+Dr0yWzaooBZ6+-VH-5w@mail.gmail.com

BTW the reports generated for branch master are at
https://coverage.postgresql.org/  (normal report)
and
https://coverage.postgresql.org/diff/  (differential coverage)

-- 
Álvaro Herrera        Breisgau, Deutschland  —  https://www.EnterpriseDB.com/





^ permalink  raw  reply  [nested|flat] 4+ messages in thread

* Re: How to run test coverage on Debian 13 ?
@ 2026-10-03 16:58  Pierre Forstmann <pierre.forstmann@gmail.com>
  parent: Álvaro Herrera <alvherre@kurilemu.de>
  0 siblings, 0 replies; 4+ messages in thread

From: Pierre Forstmann @ 2026-10-03 16:58 UTC (permalink / raw)
  To: Álvaro Herrera <alvherre@kurilemu.de>; +Cc: pgsql-hackers@lists.postgresql.org

I did not know  master branch test coverage reports.

Thanks.

Le 03/10/2026 à 18:22, Álvaro Herrera a écrit :
> Hello Pierre,
>
> On 2026-Oct-03, Pierre Forstmann wrote:
>
>> Hello,
>>
>> I'm trying to test run test coverage using master branch on Debian 13 with:
>> What should I do ?
> Yeah, lcov is apparently broken at the moment and requires some flags to
> turn some of its errors into warnings.  This thread has some recipes
> that may be helpful:
>
> https://postgr.es/m/akgWI8Cixc9b_7uB@alvherre.pgsql
>
> I haven't tried with Meson, but maybe simply setting the same
> environment variables is enough.
>
> Some patches were offered, but I haven't tried them (yet):
> https://postgr.es/m/CAHsn6_xCDQWe8_vVFhtFk27_xTdyVV+Dr0yWzaooBZ6+-VH-5w@mail.gmail.com
>
> BTW the reports generated for branch master are at
> https://coverage.postgresql.org/  (normal report)
> and
> https://coverage.postgresql.org/diff/  (differential coverage)
>






^ permalink  raw  reply  [nested|flat] 4+ messages in thread


end of thread, other threads:[~2026-10-03 16:58 UTC | newest]

Thread overview: 4+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2026-10-03 16:08 How to run test coverage on Debian 13 ? Pierre Forstmann <pierre.forstmann@gmail.com>
2026-10-03 16:21 ` Tom Lane <tgl@sss.pgh.pa.us>
2026-10-03 16:22 ` Álvaro Herrera <alvherre@kurilemu.de>
2026-10-03 16:58   ` Pierre Forstmann <pierre.forstmann@gmail.com>

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox