#!/usr/bin/env bash set -e # For debug only: # export DEBUG=true # set -x # set -v export 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 -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}