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)
73 while [[ $1 == "-"* ]]
83 while [[ $1 == *"="* ]]
87 export build_dir=${1##*=}
95 echo "build dir=$build_dir"
96 find $build_dir -name "libricxfcpp.*"
99 export LD_LIBRARY_PATH=$build_dir:/usr/local/lib:$LD_LIBRARY_PATH
100 export LIBRARY_PATH=$build_dir:/usr/local/lib:$LIBRARY_PATH
103 make tests >/tmp/PID$$.log 2>&1
104 abort_if_error $? "unable to make"
105 echo "tests successfully built" >&2
109 for x in unit_test jhash_test metrics_test
111 ./$x >/tmp/PID$$.log 2>&1
112 abort_if_error $? "test failed: $x"
113 gcov $x.c >/dev/null 2>&1
116 # wrapper_test is driven by jhash_test, but must be covered explicitly
117 gcov jwrapper_test.c >/dev/null 2>&1
119 ./scrub_gcov.sh # remove cruft
123 echo "[INFO] coverage stats, discounted (raw), for the various modules:"
124 ./parse_gcov.sh $list # generate simple, short, coverage stats