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

Generated by: LCOV version 1.14