Code coverage tests

This page documents the degree to which the PARI/GP source code is tested by our public test suite, distributed with the source distribution in directory src/test/. This is measured by the gcov utility; we then process gcov output using the lcov frond-end.

We test a few variants depending on Configure flags on the pari.math.u-bordeaux.fr machine (x86_64 architecture), and agregate them in the final report:

The target is to exceed 90% coverage for all mathematical modules (given that branches depending on DEBUGLEVEL or DEBUGMEM are not covered). This script is run to produce the results below.

LCOV - code coverage report
Current view: top level - language - eval.c (source / functions) Hit Total Coverage
Test: PARI/GP v2.16.1 lcov report (development 28676-df828f1c94) Lines: 1253 1795 69.8 %
Date: 2023-08-26 07:54:43 Functions: 114 148 77.0 %
Legend: Lines: hit not hit

Function Name Sort by function name Hit count Sort by hit count
_bitprecision0 648
_prec 11178
_precision0 1246
bincopy_relink 0
bitprecision0 42
bitprecision00 690
break0 70359
change_compo 9698353
changelex 161401899
changevalue 29452913
check_array_index 105855334
checkprec 11085
checkvalue 123118518
checkvalueptr 23308292
closure_callgen0prec 168
closure_callgen1 6437350
closure_callgen1prec 76779
closure_callgen2 67053
closure_callgenall 12
closure_callgenvec 3933195
closure_callgenvecdef 322
closure_callgenvecdefprec 322
closure_callgenvecprec 0
closure_callvoid1 0
closure_castgen 92625481
closure_castlong 5481
closure_context 91
closure_disassemble 0
closure_err 11922
closure_eval 309836343
closure_evalbrk 175
closure_evalgen 33595665
closure_evalnobrk 75933706
closure_evalres 924856
closure_evalvoid 153415394
closure_func_err 12559
closure_relink 0
closure_return 46870993
closure_returnupto 10514011
closure_trapgen 21
closure_unlink 0
closure_varn 1138981
copybin_unlink 12
copylex 9768738
copyupto 36721471
copyvalue 744436
disassemble_cast 0
err_var 0
evalstate_clone 0
evalstate_get_trace 598836
evalstate_reset 385
evalstate_restore 46938
evalstate_restore_err 34878
evalstate_save 1407738
evalstate_set_trace 18
freeep 33641
freelex 174027223
gen_relink 0
gen_unlink 16
get_and_reset_break 41498
get_arg_name 21
get_lex 100027962
get_localbitprec 22230738
get_localprec 21888302
get_next_label 238
getlocalbitprec 3220
getlocalprec 14
gp_call 111952
gp_call2 91
gp_callbool 871997
gp_callprec 23576
gp_callvoid 0
gp_eval 39645208
gp_evalbool 26165027
gp_evalprec 20734
gp_evalupto 1871665
gp_evalvoid 3655883
gp_evalvoid2 5971
hash_from_link 0
localbitprec 3247
localprec 7847
loop_break 146952061
lvar_make_safe 0
new_ptr 58686076
new_val_cell 17613
next0 25319
opcode_need_relink 0
pareval 6
pareval_worker 12
parfor 346
parfor0 346
parfor_init 0
parfor_next 0
parfor_stop 0
parfor_worker 7261
parforeach 7
parforeach0 7
parforeach_init 0
parforeach_next 0
parforeach_stop 0
parforiter_init 0
parforiter_next 0
parforiter_stop 0
parforprime 13
parforprime0 13
parforprime_init 0
parforprime_next 0
parforprime_stop 0
parforprimestep 20
parforprimestep0 7
parforprimestep_init 0
parforvec 39
parforvec0 39
parforvec_init 0
parforvec_next 0
parforvec_stop 0
pari_close_evaluator 310879
pari_init_evaluator 315697
pari_self 41
parsum 60
parsum_slice_worker 778
parvector 31
parvector_worker 644
pop_lex 5552810
pop_localprec 99074
pop_val 17193
pop_val_if_newer 335302
precision0 42
precision00 1288
ptr_proplock 9903257
push_lex 5717671
push_localbitprec 423904
push_localprec 99123
pushlex 63455292
pushvalue 42
reset_break 88821
restore_trace 5599748
restore_vars 309870306
return0 40730
safeel 0
safegcoeff 0
safegel 0
safelistel 0
set_lex 83103083
setreflex 385
st_alloc 2960298724
trace_push 315314694
zerovalue 14

Generated by: LCOV version 1.14