mirror of
https://github.com/GothenburgBitFactory/timewarrior.git
synced 2025-06-26 10:54:28 +02:00
66 lines
1.2 KiB
Bash
Executable file
66 lines
1.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
function current_date()
|
|
{
|
|
date --rfc-3339=date
|
|
}
|
|
|
|
function random_minute()
|
|
{
|
|
echo "0$( rand -M 60 )" | sed "s|.\+\(..\)\$|\1|g"
|
|
}
|
|
|
|
function default_hours()
|
|
{
|
|
seq -w 0 23
|
|
}
|
|
|
|
if ! command -v faketime >/dev/null 2>&1 ; then
|
|
echo "timemachine requires libfaketime to be installed!"
|
|
exit 1
|
|
fi
|
|
|
|
# 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-$( current_date )} ; do
|
|
for minute in ${minutes-$( random_minute )} ; do
|
|
for hour in ${hours-$( default_hours )} ; 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
|