Add json support
[ric-plt/xapp-frame-cpp.git] / test / unit_test.sh
1 #!/usr/bin/env bash
2 # vim: ts=4 sw=4 noet:
3
4 #==================================================================================
5 #       Copyright (c) 2020 Nokia
6 #       Copyright (c) 2020 AT&T Intellectual Property.
7 #
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
11 #
12 #       http://www.apache.org/licenses/LICENSE-2.0
13 #
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 #==================================================================================
20
21 #
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.
25 #
26 #       Date:           23 March 2020
27 #       Author:         E. Scott Daniels
28 # -----------------------------------------------------------------------------
29
30
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.)
35 #
36 function mk_list {
37         grep -l "Source:\.\./src"  *.gcov | while read f
38         do
39                 printf "$f "            # do NOT use echo or add \n!
40         done
41 }
42
43 function abort_if_error {
44         if (( $1 == 0 ))
45         then
46                 return
47         fi
48
49         if [[ -n /tmp/PID$$.log ]]
50         then
51                 $spew /tmp/PID$$.log
52         fi
53         echo "abort: $2"
54
55         rm -f /tmp/PID$$.*
56         exit 1
57 }
58
59 # -------------------------------------------------------------------------
60
61 spew="cat"                                      # default to dumping all make output on failure (-q turns it to ~40 lines)
62
63 while [[ $1 == "-"* ]]
64 do
65         case $1 in
66                 -q) spew="head -40";;
67                 -v)     spew="cat";;
68         esac
69
70         shift
71 done
72
73 export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
74 export LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH
75
76 make nuke >/dev/null
77 make tests >/tmp/PID$$.log 2>&1
78 abort_if_error $? "unable to make"
79 echo "tests successfully built" >&2
80
81 spew="cat"
82
83 for x in unit_test jhash_test
84 do
85         ./$x >/tmp/PID$$.log 2>&1
86         abort_if_error $? "test failed: $x"
87         gcov $x.c >/dev/null 2>&1
88 done
89
90 # wrapper_test is driven by jhash_test, but must be covered explicitly
91 gcov jwrapper_test.c >/dev/null 2>&1
92
93 ./scrub_gcov.sh                                                         # remove cruft
94
95 list=$( mk_list )
96 echo ""
97 echo "[INFO] coverage stats, discounted (raw), for the various modules:"
98 ./parse_gcov.sh $list                                           # generate simple, short, coverage stats
99
100 rm -f /tmp/PID$$.*
101