#!/usr/bin/env bash try() { output=$(mktemp -d) "$@" > "$output/stdout" 2> "$output/stderr" EXIT_CODE=$? STDOUT=$(<"$output/stdout") STDERR=$(<"$output/stderr") export EXIT_CODE STDOUT STDERR rm -rf "$output" } setUp() { export TMPDIR="$PWD/.generated" } tearDown() { [ "${_shunit_test_:=}" = '' ] && return 0 if [ "${__shunit_testSuccess:?}" != 0 ]; then output-outputs fi } output-outputs() { ( bold '*******Test failed********' echo "$(bold EXIT_CODE =) $EXIT_CODE" bold STDOUT : echo "$STDOUT" bold STDERR : echo "$STDERR" ) >&2 } bold() { echo -ne "\033[1m" echo -ne "$@" echo -e "\033[0m" } SHUNIT_PATH=./.generated/shunit2-2.1.8/shunit2 if [ ! -f $SHUNIT_PATH ]; then ( mkdir -p .generated cd .generated curl -LO https://github.com/kward/shunit2/archive/v2.1.8.zip unzip v2.1.8.zip ) fi source $SHUNIT_PATH