blob: 4fea682319fb12a39d56432dafb40efb45b15d3b [file] [log] [blame]
#!/bin/bash
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Test framework.
# Common functions for script tests
# Any failing assert/expect should set this to 1.
FAILED=0
function EXPECT_EQ {
local v1="$1"
shift
local v2="$1"
shift
if [[ "${v1}" != "${v2}" ]]; then
local msg="$@"
if [[ -n "${msg}" ]]; then
msg=": ${msg}"
fi
echo "TEST FAILURE: '${v1}' != '${v2}'${msg}"
FAILED=1
return 1
fi
}
# Prints the names of all functions with a test:: prefix.
function print_test_functions {
# "declare -F" prints all declared function names, with lines like
# "declare -f funcname".
declare -F \
| grep -E '^declare -f test::' \
| sed -e 's/^declare -f //'
}
function test_main {
local num_tests=0
local num_failures=0
for t in $(print_test_functions); do
num_tests=$(( num_tests + 1 ))
FAILED=0
echo "RUNNING: ${t}"
"${t}" || FAILED=1
if (( FAILED )); then
num_failures=$(( num_failures + 1 ))
echo "FAILED: ${t}"
else
echo "PASSED: ${t}"
fi
done
if (( num_failures == 0 )); then
echo "All ${num_tests} tests passed!"
echo "PASS"
return 0
else
echo "${num_failures}/${num_tests} tests failed"
echo "FAIL"
return 1
fi
}