Skip to content

Commit d08cb19

Browse files
committed
Check cbmc-library regressions for completeness
This will make sure that newly added library functions are also covered by tests.
1 parent 1d2db7b commit d08cb19

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

src/ansi-c/library_check.sh

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,53 @@ for f in "$@"; do
1717
rm __libcheck.s __libcheck.i __libcheck.c
1818
[ "${ec}" -eq 0 ] || exit "${ec}"
1919
done
20+
21+
# Make sure all internal library functions have tests exercising them:
22+
grep '^/\* FUNCTION:' ../*/library/* | cut -f3 -d" " | sort -u > __functions
23+
24+
# Some functions are not expected to have tests:
25+
perl -p -i -e 's/^__CPROVER_jsa_synthesise\n//' __functions
26+
perl -p -i -e 's/^java::java.io.InputStream.read:\(\)I\n//' __functions
27+
28+
# Some functions are implicitly covered by running on different operating
29+
# systems:
30+
perl -p -i -e 's/^_fopen\n//' __functions # fopen, macOS
31+
perl -p -i -e 's/^_pipe\n//' __functions # pipe, macOS
32+
perl -p -i -e 's/^_time32\n//' __functions # time, Windows
33+
perl -p -i -e 's/^_time64\n//' __functions # time, Windows
34+
35+
# Some functions are covered by existing tests:
36+
perl -p -i -e 's/^__builtin_clzl\n//' __functions # __builtin_clz-01
37+
perl -p -i -e 's/^__builtin_clzll\n//' __functions # __builtin_clz-01
38+
perl -p -i -e 's/^__builtin_ffsl\n//' __functions # __builtin_ffs-01
39+
perl -p -i -e 's/^__builtin_ffsll\n//' __functions # __builtin_ffs-01
40+
perl -p -i -e 's/^__lzcnt\n//' __functions # __builtin_clz-01
41+
perl -p -i -e 's/^__lzcnt16\n//' __functions # __builtin_clz-01
42+
perl -p -i -e 's/^__lzcnt64\n//' __functions # __builtin_clz-01
43+
perl -p -i -e 's/^fclose_cleanup\n//' __functions # fopen
44+
45+
# Some functions are covered by tests in other folders:
46+
perl -p -i -e 's/^__builtin_sadd_overflow\n//' __functions # cbmc/gcc_builtin_add_overflow
47+
perl -p -i -e 's/^__builtin_saddl_overflow\n//' __functions # cbmc/gcc_builtin_add_overflow
48+
perl -p -i -e 's/^__builtin_saddll_overflow\n//' __functions # cbmc/gcc_builtin_add_overflow
49+
perl -p -i -e 's/^__builtin_smul_overflow\n//' __functions # cbmc/gcc_builtin_mul_overflow
50+
perl -p -i -e 's/^__builtin_smull_overflow\n//' __functions # cbmc/gcc_builtin_mul_overflow
51+
perl -p -i -e 's/^__builtin_smulll_overflow\n//' __functions # cbmc/gcc_builtin_mul_overflow
52+
perl -p -i -e 's/^__builtin_ssub_overflow\n//' __functions # cbmc/gcc_builtin_sub_overflow
53+
perl -p -i -e 's/^__builtin_ssubl_overflow\n//' __functions # cbmc/gcc_builtin_sub_overflow
54+
perl -p -i -e 's/^__builtin_ssubll_overflow\n//' __functions # cbmc/gcc_builtin_sub_overflow
55+
perl -p -i -e 's/^__builtin_uadd_overflow\n//' __functions # cbmc/gcc_builtin_add_overflow
56+
perl -p -i -e 's/^__builtin_uaddl_overflow\n//' __functions # cbmc/gcc_builtin_add_overflow
57+
perl -p -i -e 's/^__builtin_uaddll_overflow\n//' __functions # cbmc/gcc_builtin_add_overflow
58+
perl -p -i -e 's/^__builtin_umul_overflow\n//' __functions # cbmc/gcc_builtin_mul_overflow
59+
perl -p -i -e 's/^__builtin_umull_overflow\n//' __functions # cbmc/gcc_builtin_mul_overflow
60+
perl -p -i -e 's/^__builtin_umulll_overflow\n//' __functions # cbmc/gcc_builtin_mul_overflow
61+
perl -p -i -e 's/^__builtin_usub_overflow\n//' __functions # cbmc/gcc_builtin_sub_overflow
62+
perl -p -i -e 's/^__builtin_usubl_overflow\n//' __functions # cbmc/gcc_builtin_sub_overflow
63+
perl -p -i -e 's/^__builtin_usubll_overflow\n//' __functions # cbmc/gcc_builtin_sub_overflow
64+
65+
ls ../../regression/cbmc-library/ | grep -- - | cut -f1 -d- | sort -u > __tests
66+
diff -u __tests __functions
67+
ec="${?}"
68+
rm __functions __tests
69+
exit "${ec}"

0 commit comments

Comments
 (0)