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 == "-"* ]]
66 -q) spew="head -40";; # how much to dump on build error
73 if [[ ! -f unit_test.cpp ]]
75 echo "[PASS] no unit test source exists"
80 make unit_test >/tmp/PID$$.log 2>&1
81 abort_if_error $? "unable to make"
83 spew="cat" # after we build, dump everything on error
84 ./unit_test >/tmp/PID$$.log 2>&1
85 abort_if_error $? "unit test failed"
87 gcov unit_test >/tmp/PID$$.gcov_log 2>&1 # suss out our gcov files
88 ./scrub_gcov.sh # remove cruft
91 echo "[INFO] coverage stats, discounted (raw), for the various modules:"
92 ./parse_gcov.sh $list # generate simple, short, coverage stats