4 #==================================================================================
5 # Copyright (c) 2020 Nokia
6 # Copyright (c) 2020 AT&T Intellectual Property.
8 # Licensed under the Apache License, Version 2.0 (the "License");
9 # you may not use this file except in compliance with the License.
10 # You may obtain a copy of the License at
12 # http://www.apache.org/licenses/LICENSE-2.0
14 # Unless required by applicable law or agreed to in writing, software
15 # distributed under the License is distributed on an "AS IS" BASIS,
16 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 # See the License for the specific language governing permissions and
18 # limitations under the License.
19 #==================================================================================
22 # Mnemonic: unit_test.sh
23 # Abstract: This drives the unit tests and combs out the needed .gcov
24 # files which are by some magic collected for Sonar.
27 # Author: E. Scott Daniels
28 # -----------------------------------------------------------------------------
31 # Make a list of our modules under test so that we don't look at gcov
32 # files that are generated for system lib headers in /usr/*
33 # (bash makes the process of building a list of names harder than it
34 # needs to be, so use caution with the printf() call.)
37 grep -l "Source:\.\./src" *.gcov | while read f
39 printf "$f " # do NOT use echo or add \n!
43 function abort_if_error {
49 if [[ -n /tmp/PID$$.log ]]
59 # -------------------------------------------------------------------------
61 spew="cat" # default to dumping all make output on failure (-q turns it to ~40 lines)
63 while [[ $1 == "-"* ]]
73 export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
74 export LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH
77 make tests >/tmp/PID$$.log 2>&1
78 abort_if_error $? "unable to make"
79 echo "tests successfully built" >&2
83 for x in unit_test jhash_test
85 ./$x >/tmp/PID$$.log 2>&1
86 abort_if_error $? "test failed: $x"
87 gcov $x.c >/dev/null 2>&1
90 # wrapper_test is driven by jhash_test, but must be covered explicitly
91 gcov jwrapper_test.c >/dev/null 2>&1
93 ./scrub_gcov.sh # remove cruft
97 echo "[INFO] coverage stats, discounted (raw), for the various modules:"
98 ./parse_gcov.sh $list # generate simple, short, coverage stats