ad572c5b

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

ical-recurrence: test that a UTC Until includes the instance that falls on it

UNTIL bounds a recurrence rule inclusively, but lessThanUntil compares
the instance's local time against the UNTIL instant read as a UTC wall
clock, without ever converting between the two.  The comparison is
therefore off by the event time zone's offset from UTC.

recurRecurrenceRuleLocalTimes cannot fix this on its own because it is
handed a bare LocalTime and knows nothing about the time zone; the
DateTimeStart is still available one level up, in
recurRecurrenceRuleDateTimeStarts.

For a zone east of UTC the last instance is dropped, as here.  West of
UTC the same comparison over-generates instead.

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 15s 1s 1s 17s 15s
Eval 3m33s 12s 12s 3m46s 3m16s
Build 1h35m53s 1m35s - - 1h32m37s
Suite 15s 1m49s - - 3h47m33s

Timeline

0s3m40s1h36m1h36m1h36m1h36m1h36m