###############################################################################
# test_helper.bash
#
# Test helper for Bats: Bash Automated Testing System.
#
# https://github.com/sstephenson/bats
###############################################################################

setup() {
  # `$_HOSTS`
  #
  # The location of the `hosts` script being tested.
  export _HOSTS="${BATS_TEST_DIRNAME}/../hosts"

  export HOSTS_PATH="$(mktemp /tmp/hosts_test.XXXXXX)" || exit 1
  cat "${BATS_TEST_DIRNAME}/fixtures/hosts" > "${HOSTS_PATH}"
}

teardown() {
  if [[ -n "${HOSTS_PATH}" ]] &&
     [[ -e "${HOSTS_PATH}" ]] &&
     [[ "${HOSTS_PATH}" =~ ^/tmp ]]
  then
    rm "${HOSTS_PATH}"
  fi
}

###############################################################################
# Helpers
###############################################################################

# _compare()
#
# Usage:
#   _compare <expected> <actual>
#
# Description:
#   Compare the content of a variable against an expected value. When used
#   within a `@test` block the output is only displayed when the test fails.
_compare() {
  local _expected="${1:-}"
  local _actual="${2:-}"
  printf "expected:\\n%s\\n" "${_expected}"
  printf "actual:\\n%s\\n" "${_actual}"
}

###############################################################################
# test_helper.bash
#
# Test helper for Bats: Bash Automated Testing System.
#
# https://github.com/sstephenson/bats
###############################################################################

setup() {
  # `$_HOSTS`
  #
  # The location of the `hosts` script being tested.
  export _HOSTS="${BATS_TEST_DIRNAME}/../hosts"

  export _HOSTS_TEMP_PATH
  _HOSTS_TEMP_PATH="$(mktemp /tmp/hosts_test.XXXXXX)" || exit 1
  cat "${BATS_TEST_DIRNAME}/fixtures/hosts" > "${_HOSTS_TEMP_PATH}"

  export HOSTS_PATH="${_HOSTS_TEMP_PATH}"
}

teardown() {
  if [[ -n "${_HOSTS_TEMP_PATH}" ]] &&
     [[ -e "${_HOSTS_TEMP_PATH}" ]] &&
     [[ "${_HOSTS_TEMP_PATH}" =~ ^/tmp/hosts_test ]]
  then
    rm "${_HOSTS_TEMP_PATH}"
  fi
}

###############################################################################
# Helpers
###############################################################################

# _compare()
#
# Usage:
#   _compare <expected> <actual>
#
# Description:
#   Compare the content of a variable against an expected value. When used
#   within a `@test` block the output is only displayed when the test fails.
_compare() {
  local _expected="${1:-}"
  local _actual="${2:-}"
  printf "expected:\\n%s\\n" "${_expected}"
  printf "actual:\\n%s\\n" "${_actual}"
}

Improve setup / teardown of tmp test file.
Improve setup / teardown of tmp test file.

Use a separate variable to identify tmp file during setup and teardown
operations.
