blob: 35837fa8b2308f3b58049615ee80dedac2cc8e96 (
plain) (
blame)
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
#!/bin/bash
BIN=$(realpath @CMAKE_BINARY_DIR@) # solve symlink problems
TEST_LOCATION=$(realpath @PROJECT_TESTING_GROUNDS@)
V=3
FILTER=""
REG=1
UNIT=1
# used in regression tests
function running {
# open devnul in fd 3
exec 3<> /dev/null
echo "[$COUNT/$TOTAL] testing $1"
((++COUNT))
}
# used in regression tests
function init {
running $1
mkdir -p $TEST_LOCATION/vc
mkdir $TEST_LOCATION/sec
exec $BIN/ck -c $BIN init $TEST_LOCATION/vc $TEST_LOCATION/sec > /dev/null &
wait $!
}
function add_config {
echo -e "test $2\n$3" > $2
exec $BIN/ck -c $BIN -a $1 $2 > /dev/null &
wait $!
if [ $? -ne 0 ]; then
err "ck crashed."
fi
}
function set_verbose {
V=1;
}
function clear_tests {
# close fd
exec 3>&-
rm $BIN/ckrc
rm $BIN/ckdb
rm $BIN/test*.conf
rm -rf $TEST_LOCATION
}
function unit_tests {
echo -e "Unit Tests:"
echo -e "~~~~~~~~~~~"
./ck-test
}
function regression_tests {
FL=""
if [ "$FILTER" != "" ]; then
FL=" (Using filter: *$FILTER*)"
fi
echo -e "Regression Tests:$FL"
echo -e "~~~~~~~~~~~~~~~~~"
DIR=@BIN_TEST_DIR@
COUNT=1
TOTAL=$(ls $DIR/*$FILTER* | wc -l)
for i in $(ls $DIR/*$FILTER*); do
ERROR="TEST "`basename $i`" FAILED:"
PASS="=> `basename $i` passed\n"
source $i
wait $!
done
}
function err {
echo -e "$ERROR $1"
clear_tests
exit 1
}
function run {
if [ $UNIT -eq 1 ]; then
unit_tests
fi
if [ $REG -eq 1 ]; then
regression_tests
elif [ $REG -eq $UNIT ]; then
unit_tests
regression_tests
fi
}
function print_help {
echo -e "ck test suite"
echo -e "use without flags to run all tests"
echo -e "\nflags:"
echo -e " -u, --unit\t\trun only the unit tests"
echo -e " -r, --regression\trun only the regression tests"
echo -e " -f, --filter\trun regression test matching the argument"
echo -e " -c, --clear\t\tremove test files"
echo -e " \t\t use if the tests crush unexpectedly"
echo -e " -v, --verbose\t\tverbose test output"
echo -e " -h, --help, *\t\tprint this"
exit
}
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
-c | --clear)
clear_tests
exit
;;
-u | --unit)
REG=0;
shift
;;
-f | --filter)
FILTER=$2;
shift
shift
;;
-r | --regression)
UNIT=0;
shift
;;
-v | --verbose)
set_verbose
shift
;;
-h | --help | *)
print_help
;;
esac
done
run
|