105 lines
2.8 KiB
Bash
105 lines
2.8 KiB
Bash
unset BASH_IT_THEME
|
|
unset GIT_HOSTING
|
|
unset NGINX_PATH
|
|
unset IRC_CLIENT
|
|
unset TODO
|
|
unset SCM_CHECK
|
|
unset BASH_IT_AUTOMATIC_RELOAD_AFTER_CONFIG_CHANGE
|
|
|
|
BASH_IT_TEST_DIR="${BATS_TMPDIR}/.bash_it"
|
|
|
|
# guard against executing this block twice due to bats internals
|
|
if [ "$BASH_IT_ROOT" != "${BASH_IT_TEST_DIR}/root" ]; then
|
|
export BASH_IT_ROOT="${BASH_IT_TEST_DIR}/root"
|
|
export BASH_IT=$BASH_IT_TEST_DIR
|
|
fi
|
|
|
|
export TEST_MAIN_DIR="${BATS_TEST_DIRNAME}/.."
|
|
export TEST_DEPS_DIR="${TEST_DEPS_DIR-${TEST_MAIN_DIR}/../test_lib}"
|
|
|
|
# be independent of git's system configuration
|
|
export GIT_CONFIG_NOSYSTEM
|
|
|
|
# Some tools, e.g. `git` use configuration files from the $HOME directory,
|
|
# which interferes with our tests. The only way to keep `git` from doing this
|
|
# seems to set HOME explicitly to a separate location.
|
|
# Refer to https://git-scm.com/docs/git-config#FILES.
|
|
unset XDG_CONFIG_HOME
|
|
export HOME="${BATS_TMPDIR}/home"
|
|
mkdir -p "${HOME}"
|
|
|
|
# For `git` tests to run well, user name and email need to be set.
|
|
# Refer to https://git-scm.com/docs/git-commit#_commit_information.
|
|
# This goes to the test-specific config, due to the $HOME overridden above.
|
|
git config --global user.name "John Doe"
|
|
git config --global user.email "johndoe@example.com"
|
|
|
|
load "${TEST_DEPS_DIR}/bats-support/load.bash"
|
|
load "${TEST_DEPS_DIR}/bats-assert/load.bash"
|
|
load "${TEST_DEPS_DIR}/bats-file/load.bash"
|
|
|
|
local_setup() {
|
|
true
|
|
}
|
|
|
|
local_teardown() {
|
|
true
|
|
}
|
|
|
|
setup() {
|
|
mkdir -p -- "${BASH_IT_ROOT}"
|
|
|
|
local_setup
|
|
}
|
|
|
|
teardown() {
|
|
local_teardown
|
|
|
|
rm -rf "${BASH_IT_TEST_DIR}"
|
|
}
|
|
|
|
# Fail and display path of the link if it does not exist. Also fails
|
|
# if the path exists, but is not a link.
|
|
# This function is the logical complement of `assert_file_not_exist'.
|
|
# There is no dedicated function for checking that a link does not exist.
|
|
#
|
|
# Globals:
|
|
# BATSLIB_FILE_PATH_REM
|
|
# BATSLIB_FILE_PATH_ADD
|
|
# Arguments:
|
|
# $1 - path
|
|
# Returns:
|
|
# 0 - link exists and is a link
|
|
# 1 - otherwise
|
|
# Outputs:
|
|
# STDERR - details, on failure
|
|
assert_link_exist() {
|
|
local -r file="$1"
|
|
local -r target="$2"
|
|
if [[ ! -L "$file" ]]; then
|
|
local -r rem="$BATSLIB_FILE_PATH_REM"
|
|
local -r add="$BATSLIB_FILE_PATH_ADD"
|
|
if [[ -e "$file" ]]; then
|
|
batslib_print_kv_single 4 'path' "${file/$rem/$add}" \
|
|
| batslib_decorate 'exists, but is not a link' \
|
|
| fail
|
|
else
|
|
batslib_print_kv_single 4 'path' "${file/$rem/$add}" \
|
|
| batslib_decorate 'link does not exist' \
|
|
| fail
|
|
fi
|
|
else
|
|
if [ -n "$target" ]; then
|
|
local link_target=''
|
|
link_target=$(readlink "$file")
|
|
if [[ "$link_target" != "$target" ]]; then
|
|
batslib_print_kv_single_or_multi 8 'path' "${file/$rem/$add}" \
|
|
'expected' "$target" \
|
|
'actual' "$link_target" \
|
|
| batslib_decorate 'link exists, but does not point to target file' \
|
|
| fail
|
|
fi
|
|
fi
|
|
fi
|
|
}
|