With GNU coreutils, one can pass an argument to the "set" flag like:
date -s "-3 days"
With uutils coreutils, that gives an error:
error: unexpected argument '-3' found
tip: to pass '-3' as a value, use '-- -3'
That's a bug (https://github.com/uutils/coreutils/issues/9679), but both
implementations accept --set="-3 days" just fine, so use that instead.
# elapse timestamp (this goes through a slightly different codepath that actually contained the original
# issue).
: "Next elapse timestamp after time jump"
-date -s "tomorrow 00:10"
+date --set="tomorrow 00:10"
check_elapse_timestamp
: "Next elapse timestamp after daemon-reload"
set -o pipefail
# Reset host date to current time, 3 days in the past.
-date -s "-3 days"
-trap 'date -s "+3 days"' EXIT
+date --set="-3 days"
+trap 'date --set="+3 days"' EXIT
# Run a timer for every 15 minutes.
systemd-run --unit test-timer --on-calendar "*:0/15:0" true
systemctl restart "$UNIT_NAME.timer"
systemctl status "$UNIT_NAME.timer"
-date -s '+2 hours'
-trap 'date -s "-2 hours"' EXIT
+date --set='+2 hours'
+trap 'date --set="-2 hours"' EXIT
sleep 1
systemctl status "$UNIT_NAME.timer"
assert_eq "$(journalctl -q -p info --since="@$JOURNAL_TS" --unit="$UNIT_NAME" --grep="$TEST_MESSAGE" | wc -l)" "1"