summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/regression/run_one.sh
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/regression/run_one.sh')
-rwxr-xr-xvendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/regression/run_one.sh66
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