timewarrior/test/timemachine
2019-01-20 23:10:17 +01:00

46 lines
980 B
Bash
Executable file

#!/bin/bash
# parse options/arguments
until [[ -z "${1}" ]] ; do
case "${1}" in
--minute)
shift
minutes="${minutes} ${1}"
;;
--hour)
shift
hours="${hours} ${1}"
;;
--day)
shift
days="${days} ${1}"
;;
--fail-at-end)
fail_at_end=1
;;
-*)
echo "Unknown option '${1}'"
exit 1
;;
*)
tests="${tests} ${1}"
;;
esac
shift
done
for day in ${days-$(date --rfc-3339=date)} ; do
for minute in ${minutes-$(echo "0$(rand -M 60)" | sed "s|.\+\(..\)\$|\1|g")} ; do
for hour in ${hours-$(seq -w 0 23)} ; do
date="${day}T${hour}:${minute}"
for single_test in ${tests} ; do
echo "Running test ${single_test} at ${date}"
faketime "${date}" "${single_test}"
if [[ $? -ne 0 ]] ; then
echo "Test ${single_test} broke at ${date}!"
[[ ${fail_at_end-0} -ne 0 ]] || break 2
fi
done
done
done
done