2014-08-05 21:13:19 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
export dir=$(dirname "$0")
|
|
|
|
export fake_data_file="${dir}/fake-data.tar.gz"
|
|
|
|
|
|
|
|
prepare() {
|
2014-12-05 20:45:49 +00:00
|
|
|
export BASE="$(mktemp --tmpdir --directory restic-testsuite-XXXXXX)"
|
|
|
|
export RESTIC_REPOSITORY="${BASE}/restic-backup"
|
|
|
|
export RESTIC_PASSWORD="foobar"
|
2015-01-14 16:32:37 +00:00
|
|
|
export DATADIR="${BASE}/fake-data"
|
2014-12-05 20:45:49 +00:00
|
|
|
debug "repository is at ${RESTIC_REPOSITORY}"
|
2014-08-05 21:13:19 +00:00
|
|
|
|
|
|
|
mkdir -p "$DATADIR"
|
|
|
|
(cd "$DATADIR"; tar xz) < "$fake_data_file"
|
|
|
|
debug "extracted fake data to ${DATADIR}"
|
|
|
|
}
|
|
|
|
|
|
|
|
cleanup() {
|
|
|
|
if [ "$DEBUG" = "1" ]; then
|
|
|
|
debug "leaving dir ${BASE}"
|
|
|
|
return
|
|
|
|
fi
|
|
|
|
|
|
|
|
rm -rf "${BASE}"
|
|
|
|
debug "removed dir ${BASE}"
|
|
|
|
unset BASE
|
2014-12-05 20:45:49 +00:00
|
|
|
unset RESTIC_REPOSITORY
|
2014-08-05 21:13:19 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
msg() {
|
|
|
|
printf "%s: %s\n" "$(basename "$0" .sh)" "$*"
|
|
|
|
}
|
|
|
|
|
|
|
|
pass() {
|
|
|
|
printf "\e[32m%s: %s\e[39m\n" "$(basename "$0" .sh)" "$*"
|
|
|
|
}
|
|
|
|
|
|
|
|
err() {
|
|
|
|
printf "\e[31m%s: %s\e[39m\n" "$(basename "$0" .sh)" "$*"
|
|
|
|
}
|
|
|
|
|
|
|
|
debug() {
|
|
|
|
if [ "$DEBUG" = "1" ]; then
|
|
|
|
printf "\e[33m%s: %s\e[39m\n" "$(basename "$0" .sh)" "$*"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
fail() {
|
|
|
|
err "$@"
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
|
|
|
run() {
|
|
|
|
if [ "$DEBUG" = "1" ]; then
|
|
|
|
"$@"
|
|
|
|
else
|
|
|
|
"$@" > /dev/null
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2015-01-14 16:32:37 +00:00
|
|
|
export -f prepare cleanup msg debug pass err fail run
|
2014-08-05 21:13:19 +00:00
|
|
|
|
2015-01-14 16:32:37 +00:00
|
|
|
# first argument is restic path
|
|
|
|
export PATH="$1:$PATH"; shift
|
|
|
|
|
|
|
|
which restic || fail "restic binary not found!"
|
|
|
|
which dirdiff || fail "dirdiff binary not found!"
|
|
|
|
|
|
|
|
debug "restic path: $(which restic)"
|
|
|
|
debug "dirdiff path: $(which dirdiff)"
|
2014-08-05 21:13:19 +00:00
|
|
|
|
|
|
|
if [ "$#" -gt 0 ]; then
|
|
|
|
testfiles="$1"
|
|
|
|
else
|
|
|
|
testfiles=(${dir}/test-*.sh)
|
|
|
|
fi
|
|
|
|
|
2014-11-27 23:34:56 +00:00
|
|
|
echo "testfiles: ${testfiles[@]}"
|
2014-08-05 21:13:19 +00:00
|
|
|
|
2014-11-16 10:34:16 +00:00
|
|
|
failed=""
|
2014-11-27 23:34:56 +00:00
|
|
|
for testfile in "${testfiles[@]}"; do
|
2014-08-05 21:13:19 +00:00
|
|
|
current=$(basename "${testfile}" .sh)
|
|
|
|
|
2015-01-14 16:32:37 +00:00
|
|
|
if [ "$DEBUG" = "1" ]; then
|
|
|
|
OPTS="-v"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if bash $OPTS "${testfile}"; then
|
2014-11-16 10:34:16 +00:00
|
|
|
pass "${current} pass"
|
|
|
|
else
|
|
|
|
err "${current} failed!"
|
|
|
|
failed+=" ${current}"
|
|
|
|
fi
|
2014-08-05 21:13:19 +00:00
|
|
|
done
|
2014-11-16 10:34:16 +00:00
|
|
|
|
|
|
|
if [ -n "$failed" ]; then
|
|
|
|
err "failed tests: ${failed}"
|
2015-01-14 21:08:48 +00:00
|
|
|
msg "restic versions:"
|
|
|
|
run restic version
|
|
|
|
run restic.debug version
|
2014-11-16 10:34:16 +00:00
|
|
|
exit 1
|
|
|
|
fi
|