blob: b1f538e3414e0f3dc9cf1e29fd29db29afe0d75a (
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
|
#!/bin/sh
fail() {
message=${1:-"fail called without message"}
echo -e " ${red}fail:${_rst} ${reason}"
exit 1
}
_assert_warn=
assert_warn() {
if ! is_true "${_assert_warn}"; then _assert_warn=y; fi
}
assert_exited() {
status=${1}
expected=${2:-0}
message=${3:-"exit status"}
assert_compare "=" "$status" "$expected" "$message"
}
assert_compare() {
expression=$1
left=$2
right=$3
message=$4
#cloyster_test_log "assert_compare 'test \"$left\" $expression \"$right\" && echo \"OK\" || echo \"$right\"'"
assert "test \"$left\" $expression \"$right\" && echo \"\$?\" || echo \"\$?\"" "0" "${message}"
}
assert() {
assertion=$1
expected=$2
message=${3:-assertion}
status=
assertion_eval="$(eval $(echo "$1"))" && status=0 || status=$?; true
cloyster_test_log "assert: assertion={$(echo "$1" | head -c 30 | sed "s:\\n: :g")} expected=${expected} evaluated=${assertion_eval} status=${status}"
if [ ! "$status" = "0" ]; then
_assert_failed "exited: ${status}"
_assert_exit
elif [ ! "$assertion_eval" = "$expected" ]; then
_assert_failed "${message}"
echo -e "${_bold}Expected:${_rst} ${expected}\n${_bold}Got :${_rst} ${assertion_eval}"
_assert_exit
fi
_test_asserts_counter=$(( ${_test_asserts_counter:-0} + 1 ))
_assert_warn=
}
_assert_count() {
echo "$_test_asserts_counter"
}
_assert_reset_count() {
_test_asserts_counter=0
}
_assert_failed() {
name=$1
reason=$2; if [ -n "${reason}" ]; then reason=" ${reason}"; fi
line=; if [ -n "${_assert_line}" ]; then line=" at line ${_bold}${_assert_line}"; fi
emoji="💥"; text=
if is_true "$_assert_warn"; then emoji="🔥"; text=" (WARNING)"; fi
echo -e "${emoji} $(tput AF 214)Assertion ${_test_asserts_counter} failed${text}${line}: ${_bold}$name${_rst}${reason}"
}
_assert_exit() {
if ! is_true "$_assert_warn"; then exit 99; fi
_assert_warn=
}
|