81 lines
1.8 KiB
Bash
Executable file
81 lines
1.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
# For debug only:
|
|
# export DEBUG=true
|
|
# set -x
|
|
# set -v
|
|
|
|
BASEDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
|
|
# Prevent execution outside of Travis CI builds
|
|
if [[ "${TRAVIS}" != true || "${CI}" != true ]]; then
|
|
echo "Error: `basename "$0"` should only be used on Travis"
|
|
exit 2
|
|
fi
|
|
|
|
# Travis runs do not rely on Vagrant
|
|
export USE_VAGRANT=false
|
|
export DOTBOT_EXEC="${BASEDIR}/bin/dotbot"
|
|
|
|
cd "${BASEDIR}"
|
|
. "test/driver-lib.bash"
|
|
|
|
travis_initialize() {
|
|
echo "initializing."
|
|
tests_run=0
|
|
tests_passed=0
|
|
tests_failed=0
|
|
tests_total="${1}"
|
|
local plural="" && [ "${tests_total}" -gt 1 ] && plural="s"
|
|
printf -- "running %d test%s...\n\n" "${tests_total}" "${plural}"
|
|
}
|
|
|
|
travis_cleanup() {
|
|
# Remove all dotfiles installed since the start, ignoring the main
|
|
# dotfiles directory, and the dotbot source directory
|
|
find ~ -mindepth 1 -readable -newermt "${date_stamp}" \
|
|
-not \( -path ~ -o -path "${BASEDIR}/*" \
|
|
-o -path ~/dotfiles \) \
|
|
-exec rm -rf {} +
|
|
}
|
|
|
|
travis_run_test() {
|
|
tests_run=$((tests_run + 1))
|
|
printf '[%d/%d] (%s)\n' "${tests_run}" "${tests_total}" "${1}"
|
|
cd ${BASEDIR}/test/tests
|
|
if bash ${1} ; then
|
|
pass
|
|
else
|
|
fail
|
|
fi
|
|
travis_cleanup || die "unable to clean up system."
|
|
}
|
|
|
|
date_stamp="$(date --rfc-3339=ns)"
|
|
start="$(date +%s)"
|
|
|
|
declare -a tests=()
|
|
|
|
if [ $# -eq 0 ]; then
|
|
while read file; do
|
|
tests+=("${file}")
|
|
done < <(find ${BASEDIR}/test/tests -type f -name '*.bash')
|
|
else
|
|
tests=("$@")
|
|
fi
|
|
|
|
travis_initialize "${#tests[@]}"
|
|
|
|
for file in "${tests[@]}"; do
|
|
travis_run_test "$(basename "${file}")"
|
|
done
|
|
|
|
if report; then
|
|
ret=0
|
|
else
|
|
ret=1
|
|
fi
|
|
|
|
echo "(tests run in $(($(date +%s) - start)) seconds)"
|
|
exit ${ret}
|