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 # this code is based on the unit test code in the o-ran-sc RMR repositiory which
23 # is covered by the original license above, and thus that license governs this
25 # ---------------------------------------------------------------------------------
28 # Mnemonic: unit_test.sh
29 # Abstract: This drives the unit tests and combs out the needed .gcov
30 # files which are by some magic collected for Sonar.
33 # Author: E. Scott Daniels
34 # -----------------------------------------------------------------------------
37 # Make a list of our modules under test so that we don't look at gcov
38 # files that are generated for system lib headers in /usr/*
39 # (bash makes the process of building a list of names harder than it
40 # needs to be, so use caution with the printf() call.)
43 grep -l "Source:\.\./src" *.gcov | while read f
45 printf "$f " # do NOT use echo or add \n!
49 function abort_if_error {
55 if [[ -n /tmp/PID$$.log ]]
65 # -------------------------------------------------------------------------
67 spew="cat" # default to dumping all make output on failure (-q turns it to ~40 lines)
69 while [[ $1 == "-"* ]]
72 -q) spew="head -40";; # how much to dump on build error
79 if [[ ! -f unit_test.cpp ]]
81 echo "[PASS] no unit test source exists"
86 make unit_test >/tmp/PID$$.log 2>&1
87 abort_if_error $? "unable to make"
89 spew="cat" # after we build, dump everything on error
90 ./unit_test >/tmp/PID$$.log 2>&1
91 abort_if_error $? "unit test failed"
93 gcov unit_test >/tmp/PID$$.gcov_log 2>&1 # suss out our gcov files
94 ./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