| #!/usr/bin/env bash |
| |
| # Licensed under the Apache License, Version 2.0 (the "License"); you may |
| # not use this file except in compliance with the License. You may obtain |
| # a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| # License for the specific language governing permissions and limitations |
| # under the License. |
| |
| # we always start with no errors |
| ERROR=0 |
| PASS=0 |
| FAILED_FUNCS="" |
| |
| export PYTHON=$(which python3 2>/dev/null) |
| |
| # pass a test, printing out MSG |
| # usage: passed message |
| function passed { |
| local lineno |
| lineno=$(caller 0 | awk '{print $1}') |
| local function |
| function=$(caller 0 | awk '{print $2}') |
| local msg="$1" |
| if [ -z "$msg" ]; then |
| msg="OK" |
| fi |
| PASS=$((PASS+1)) |
| echo "PASS: $function:L$lineno - $msg" |
| } |
| |
| # fail a test, printing out MSG |
| # usage: failed message |
| function failed { |
| local lineno |
| lineno=$(caller 0 | awk '{print $1}') |
| local function |
| function=$(caller 0 | awk '{print $2}') |
| local msg="$1" |
| FAILED_FUNCS+="$function:L$lineno\n" |
| echo "ERROR: $function:L$lineno!" |
| echo " $msg" |
| ERROR=$((ERROR+1)) |
| } |
| |
| # assert string comparison of val1 equal val2, printing out msg |
| # usage: assert_equal val1 val2 msg |
| function assert_equal { |
| local lineno |
| lineno=`caller 0 | awk '{print $1}'` |
| local function |
| function=`caller 0 | awk '{print $2}'` |
| local msg=$3 |
| |
| if [ -z "$msg" ]; then |
| msg="OK" |
| fi |
| if [[ "$1" != "$2" ]]; then |
| FAILED_FUNCS+="$function:L$lineno\n" |
| echo "ERROR: $1 != $2 in $function:L$lineno!" |
| echo " $msg" |
| ERROR=$((ERROR+1)) |
| else |
| PASS=$((PASS+1)) |
| echo "PASS: $function:L$lineno - $msg" |
| fi |
| } |
| |
| # assert variable is empty/blank, printing out msg |
| # usage: assert_empty VAR msg |
| function assert_empty { |
| local lineno |
| lineno=`caller 0 | awk '{print $1}'` |
| local function |
| function=`caller 0 | awk '{print $2}'` |
| local msg=$2 |
| |
| if [ -z "$msg" ]; then |
| msg="OK" |
| fi |
| if [[ ! -z ${!1} ]]; then |
| FAILED_FUNCS+="$function:L$lineno\n" |
| echo "ERROR: $1 not empty in $function:L$lineno!" |
| echo " $msg" |
| ERROR=$((ERROR+1)) |
| else |
| PASS=$((PASS+1)) |
| echo "PASS: $function:L$lineno - $msg" |
| fi |
| } |
| |
| # assert the arguments evaluate to true |
| # assert_true "message" arg1 arg2 |
| function assert_true { |
| local lineno |
| lineno=`caller 0 | awk '{print $1}'` |
| local function |
| function=`caller 0 | awk '{print $2}'` |
| local msg=$1 |
| shift |
| |
| $@ |
| if [ $? -eq 0 ]; then |
| PASS=$((PASS+1)) |
| echo "PASS: $function:L$lineno - $msg" |
| else |
| FAILED_FUNCS+="$function:L$lineno\n" |
| echo "ERROR: test failed in $function:L$lineno!" |
| echo " $msg" |
| ERROR=$((ERROR+1)) |
| fi |
| } |
| |
| # assert the arguments evaluate to false |
| # assert_false "message" arg1 arg2 |
| function assert_false { |
| local lineno |
| lineno=`caller 0 | awk '{print $1}'` |
| local function |
| function=`caller 0 | awk '{print $2}'` |
| local msg=$1 |
| shift |
| |
| $@ |
| if [ $? -eq 0 ]; then |
| FAILED_FUNCS+="$function:L$lineno\n" |
| echo "ERROR: test failed in $function:L$lineno!" |
| echo " $msg" |
| ERROR=$((ERROR+1)) |
| else |
| PASS=$((PASS+1)) |
| echo "PASS: $function:L$lineno - $msg" |
| fi |
| } |
| |
| |
| # Print a summary of passing and failing tests and exit |
| # (with an error if we have failed tests) |
| # usage: report_results |
| function report_results { |
| echo "$PASS Tests PASSED" |
| if [[ $ERROR -gt 0 ]]; then |
| echo |
| echo "The following $ERROR tests FAILED" |
| echo -e "$FAILED_FUNCS" |
| echo "---" |
| exit 1 |
| fi |
| exit 0 |
| } |