180 lines · 3.8 KB · Shell
RawDownload
# Must be sourced into the main journey test WHITE="$(tput setaf 9 2>/dev/null || echo -n '')"YELLOW="$(tput setaf 3 2>/dev/null || echo -n '')"GREEN="$(tput setaf 2 2>/dev/null || echo -n '')"RED="$(tput setaf 1 2>/dev/null || echo -n '')"OFFSET=( )STEP="  " function on_ci () {  [ -n "${CI-}" ] || {    function expect_run () {      echo 1>&2 "${WHITE} - skipped (runs only on CI)"    }    function expect_run_sh () {      echo 1>&2 "${WHITE} - skipped (runs only on CI)"    }    function expect_run_sh_no_pipefail () {      echo 1>&2 "${WHITE} - skipped (runs only on CI)"    }  }} function not_on_ci () {  [ -z "${CI-}" ] || {    function expect_run () {      echo 1>&2 "${WHITE} - skipped (runs only locally)"    }    function expect_run_sh () {      echo 1>&2 "${WHITE} - skipped (runs only locally)"    }    function expect_run_sh_no_pipefail () {      echo 1>&2 "${WHITE} - skipped (runs only locally)"    }  }} function title () {  echo "$WHITE-----------------------------------------------------"  echo "${GREEN}$*"  echo "$WHITE-----------------------------------------------------"} function _context () {  local name="${1:?}"  shift  echo 1>&2 "${YELLOW}${OFFSET[*]:-}[$name] $*"  OFFSET+=("$STEP")} function step () {  _note step "${WHITE}" "$*"} function stepn () {  step "$*" $'\n'} function with () {  _context with "$*"} function when () {  _context when "$*"} function _note () {  local name="${1:?}"  local color="${2:-}"  shift 2  echo 1>&2 -n "${OFFSET[*]:-}${color}[$name] ${*//  /}"} function it () {  _note it "${GREEN}" "$*"} function precondition () {  _note precondition "${WHITE}" "$*"} function shortcoming () {  _note shortcoming "${RED}" "$*"} function step () {  _note step "${WHITE}" "$*"} function stepn () {  step "$*" $'\n'} function fail () {  echo 1>&2 "${RED} $*"  exit 1} function sandbox () {  sandbox_tempdir="$(mktemp -t sandbox.XXXXXX -d)"  # shellcheck disable=2064  trap "popd >/dev/null" EXIT  pushd "$sandbox_tempdir" >/dev/null \   || fail "Could not change directory into temporary directory."   local custom_init="${1:-}"  if [ -n "$custom_init" ]; then    eval "$custom_init"  fi} function expect_equals () {  expect_run 0 test "${1:?}" = "${2:?}"} function expect_exists () {  expect_run 0 test -e "${1:?}"} function expect_run_sh () {  expect_run "${1:?}" bash -c -eu -o pipefail "${2:?}"} function expect_run_sh_no_pipefail () {  expect_run "${1:?}" bash -c -eu "${2:?}"} function expect_snapshot () {  local expected=${1:?}  local actual=${2:?}  if ! [ -e "$expected" ]; then    mkdir -p "${expected%/*}"    cp -R "$actual" "$expected"  fi  expect_run 0 diff -r -N "$expected" "$actual"} function expect_run () {  local expected_exit_code=$1  shift  local output=  set +e  if [[ -n "${SNAPSHOT_FILTER-}" ]]; then    output="$("$@" 2>&1 | "$SNAPSHOT_FILTER")"  else    output="$("$@" 2>&1)"  fi   local actual_exit_code=$?  if [[ "$actual_exit_code" == "$expected_exit_code" ]]; then    if [[ -n "${WITH_SNAPSHOT-}" ]]; then      local expected="$WITH_SNAPSHOT"      if ! [ -f "$expected" ]; then        mkdir -p "${expected%/*}"        echo -n "$output" > "$expected" || exit 1      fi      if ! diff "$expected" <(echo -n "$output"); then        echo 1>&2 "${RED} - FAIL"        echo 1>&2 "${WHITE}\$ $*"        echo 1>&2 "Output snapshot did not match snapshot at '$expected'"        echo 1>&2 "$output"        if [ -n "${ON_ERROR:-}" ]; then          eval "$ON_ERROR"        fi        exit 1      fi    fi    echo 1>&2  else    echo 1>&2 "${RED} - FAIL"    echo 1>&2 "${WHITE}\$ $*"    echo 1>&2 "${RED}Expected actual status $actual_exit_code to be $expected_exit_code"    echo 1>&2 "$output"    if [ -n "${ON_ERROR:-}" ]; then      eval "$ON_ERROR"    fi    exit 1  fi  set -e}