diff options
Diffstat (limited to 'vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/regression/run_one.sh')
-rwxr-xr-x | vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/regression/run_one.sh | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/regression/run_one.sh b/vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/regression/run_one.sh new file mode 100755 index 000000000..b2166440c --- /dev/null +++ b/vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/regression/run_one.sh @@ -0,0 +1,66 @@ +#!/bin/sh -e -u -- + +set -e +set -u + +verbose="" +if [ "$1" = "-v" ]; then + verbose="true" + shift +fi + +if [ $# -ne 1 ]; then + printf "Usage: %s [ test script ]\n\n" "$(basename $0)" + printf "ERROR: Need a single test script to execute\n" + exit 1 +fi + +# chdir(2) to the directory where the script resides +cd "$(dirname "$0")" + +exact_name="$(basename ${1} .sh)" +test_name="$(echo ${exact_name} | sed -e s@^test_@@)" +test_script="${exact_name}.sh" +test_out="${test_name}.out" +expected_out="expected/${test_name}.out" + +if [ ! -r "${test_script}" ]; then + printf "ERROR: Test script %s does not exist\n" "${test_script}" + exit 2 +fi + +if [ -n "${verbose}" ]; then + cat "${test_script}" | tail -n 1 +fi + +set +e +"./${test_script}" > "${test_out}" 2>&1 + +if [ ! -r "${expected_out}" ]; then + printf "ERROR: Expected test output (%s) does not exist\n" "${expected_out}" + exit 2 +fi + +cmp -s "${expected_out}" "${test_out}" +result=$? +set -e + +if [ "${result}" -eq 0 ]; then + if [ -n "${verbose}" ]; then + cat "${test_out}" + fi + rm -f "${test_out}" + exit 0 +fi + +diff_out="${test_name}.diff" +set +e +diff -u "${test_out}" "${expected_out}" > "${diff_out}" +set -e + +# If run as an interactive TTY, pass along the diff to the caller +if [ -t 0 -o -n "${verbose}" ]; then + cat "${diff_out}" +fi + +exit 1 |