summaryrefslogtreecommitdiff
path: root/test/test_travis
blob: 79439e1987d9d504b293c3b32beab3fef91e42a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/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}