1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/bin/bash
# Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
# For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
root_dir="$(realpath $(dirname $(realpath $0))/..)"
build_dir="${root_dir}/build-linux-Debug"
ALL_TESTS_FILE=all_unittests
ALL_TESTS_PATH=${build_dir}/${ALL_TESTS_FILE}
ENABLED_TESTS_PATH=${root_dir}/enabled_unittests
END=0
trim() {
local var="$*"
# remove leading whitespace characters
var="${var#"${var%%[![:space:]]*}"}"
# remove trailing whitespace characters
var="${var%"${var##*[![:space:]]}"}"
printf '%s' "$var"
}
# get all tests
${root_dir}/tools/get_unittests.sh ${ALL_TESTS_FILE} CHECK_OUT > /dev/null
TEMP_SOURCE=$(mktemp)
sed -e '/^[[:space:]]*#.*/d' ${ALL_TESTS_PATH} > $TEMP_SOURCE
source ${TEMP_SOURCE}
# get enabled tests
sed -e '/^[[:space:]]*#.*/d' ${ENABLED_TESTS_PATH} > $TEMP_SOURCE
source ${TEMP_SOURCE}
declare -a BINARY_NOT_RUN
declare -A TESTS_NOT_RUN
echo "--tests--"
for BINARY in ${!CHECK_OUT[@]}
do
#echo BINARY:$BINARY
#echo "TESTS_LIST[${BINARY}]: ${TESTS_LIST[${BINARY}]}"
if [[ -n "${TESTS_LIST[${BINARY}]}" ]]; then
#echo ""
readarray -d\; -t TESTS_FROM_ALL < <(echo ${CHECK_OUT["${BINARY}"]} | tr "\n" " ")
#declare -p TESTS_FROM_ALL
#echo "NO: ${#TESTS_FROM_ALL[@]}"
I=0
declare -a TEST_NOT_RUN
while [[ ${I} -lt ${#TESTS_FROM_ALL[@]} ]];
do
CURRENT_TEST=$(trim ${TESTS_FROM_ALL[${I}]})
if [[ -n "$CURRENT_TEST" ]]; then
#if [[ ${BINARY} == "catch2-gui-text" ]]; then
# echo "--- CURRENT_TEST: ${CURRENT_TEST}"
#fi
CHK=$(echo ${TESTS_LIST["${BINARY}"]} | grep -F "${CURRENT_TEST}")
#echo "#@#@#@# $CHK #@#@##"
if [[ -z "${CHK}" ]]; then
#echo "!!!!!!!!!!${CURRENT_TEST}!!!!!!!!!"
TEST_NOT_RUN+=("${CURRENT_TEST}")
fi
fi
I=$(( $I + 1 ))
done
if [[ "${#TEST_NOT_RUN[@]}" -gt 0 ]]; then
#echo "!@@!@!@!@!@! ${#TEST_NOT_RUN[@]} @!#!@#!@#!"
#declare -p TEST_NOT_RUN
I=0
TEST_NOT_RUN_STR=""
while [[ $I -lt ${#TEST_NOT_RUN[@]} ]]
do
#TEST_NOT_RUN_STR="${TEST_NOT_RUN[${I}]};${TEST_NOT_RUN_STR}"
TEST_NOT_RUN_STR="${TEST_NOT_RUN_STR};${TEST_NOT_RUN[${I}]}"
I=$(( I + 1 ))
done
TESTS_NOT_RUN["${BINARY}"]="${TEST_NOT_RUN_STR}"
unset TEST_NOT_RUN
fi
else
#echo "######## $BINARY ########"
BINARY_NOT_RUN+=($BINARY)
fi
done
if [[ -n "${BINARY_NOT_RUN}" ]]; then
END=1
I=0
echo "binaries not run:"
while [[ $I -lt ${#BINARY_NOT_RUN[@]} ]]
do
echo " - ${BINARY_NOT_RUN[$I]}"
I=$(( $I + 1 ))
done
fi
pushd ${build_dir} > /dev/null
BINARIES_IN_BUILD=( `ls -1 catch2*` )
popd > /dev/null
BINARIES_IN_DECLARED=( ${!TESTS_LIST[@]} )
if [[ ${#BINARIES_IN_BUILD[@]} -ne ${#BINARIES_IN_DECLARED[@]} ]]; then
END=1
echo "not all binaries were build:"
printf '\t- %s\n' ${BINARIES_IN_BUILD[@]} ${BINARIES_IN_DECLARED[@]} | sort | uniq -u
fi
#declare -p TESTS_NOT_RUN
#echo ${#TESTS_NOT_RUN[@]}
if [[ "${#TESTS_NOT_RUN[@]}" -gt 0 ]]; then
END=1
echo "Tests not run:"
for BINARY in ${!TESTS_NOT_RUN[@]}
do
echo -n " - Binary: ${BINARY}"
echo "${TESTS_NOT_RUN[${BINARY}]}" | sed 's/;/\n\t- /g'
done
fi
case $END in
"0") echo "OK";;
"*") echo "ERROR";;
esac
exit $END