mirror of
https://github.com/GothenburgBitFactory/timewarrior.git
synced 2025-06-26 10:54:28 +02:00
88 lines
1.6 KiB
Bash
Executable file
88 lines
1.6 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
function default_dates()
|
|
{
|
|
case "${OSTYPE}" in
|
|
darwin*)
|
|
date "+%Y-%m-%d"
|
|
;;
|
|
*)
|
|
date --rfc-3339=date
|
|
;;
|
|
esac
|
|
}
|
|
|
|
function default_minutes()
|
|
{
|
|
case "${OSTYPE}" in
|
|
darwin*)
|
|
echo "0$( jot -r 1 0 59 )" | sed -E "s|.+(..)|\1|g"
|
|
;;
|
|
*)
|
|
echo "0$( rand -M 60 )" | sed "s|.\+\(..\)\$|\1|g"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
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}"
|
|
;;
|
|
--minutes)
|
|
shift
|
|
minutes="${1}"
|
|
;;
|
|
--hour)
|
|
shift
|
|
hours="${hours} ${1}"
|
|
;;
|
|
--hours)
|
|
shift
|
|
hours="${1}"
|
|
;;
|
|
--date)
|
|
shift
|
|
dates="${dates} ${1}"
|
|
;;
|
|
--fail-at-end)
|
|
fail_at_end=1
|
|
;;
|
|
-*)
|
|
echo "Unknown option '${1}'"
|
|
exit 1
|
|
;;
|
|
*)
|
|
tests="${tests} ${1}"
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
for date in ${dates-$( default_dates )} ; do
|
|
for hour in ${hours-$( default_hours )} ; do
|
|
for minute in ${minutes-$( default_minutes )} ; do
|
|
date_time="${date}T${hour}:${minute}"
|
|
for single_test in ${tests} ; do
|
|
echo "Running test ${single_test} at ${date_time}"
|
|
|
|
if ! faketime "${date_time}" "${single_test}" ; then
|
|
echo "Test ${single_test} broke at ${date_time}!"
|
|
[[ ${fail_at_end-0} -ne 0 ]] || break 2
|
|
fi
|
|
done
|
|
done
|
|
done
|
|
done
|