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 == "-"* ]]
74 make unit_test >/tmp/PID$$.log 2>&1
75 abort_if_error $? "unable to make"
78 ./unit_test >/tmp/PID$$.log 2>&1
79 abort_if_error $? "unit test failed"
81 gcov unit_test >/tmp/PID$$.gcov_log 2>&1 # suss out our gcov files
82 ./scrub_gcov.sh # remove cruft
85 echo "[INFO] coverage stats, discounted (raw), for the various modules:"
86 ./parse_gcov.sh $list # generate simple, short, coverage stats