044138f3

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

ical-recurrence: test that the recurrence set has no two instances with the same start

recurEvents unions sets of EventOccurrence, which deduplicates on
(start, end) pairs rather than on the start alone.  A period-valued
RDATE whose start coincides with an instance the RRULE generates
therefore yields two instances at the same instant with different ends.

RFC 5545 says the period-valued form of RDATE is how the duration of a
specific recurrence is modified, so the RDATE should win here.

The same can happen without any RDATE at all: recurEvents inserts the
DTSTART occurrence with the original end while the rule separately
regenerates it through resolveEndOrDurationDate, and those two agree
only when unresolveUTCTimeR . resolveLocalTimeR round-trips, which it
does not for a DTEND whose local time falls in a daylight saving time
gap.
GitHub
Time to Start Worker time Duration Time to finish Idle
Config 21s 1s 1s 23s 21s
Eval 4m19s 11s 11s 4m31s 3m56s
Build 1h45m33s 2m44s - - 1h41m54s
Suite 21s 2m57s - - 4h27m33s

Timeline

Config Eval Build Failed Retried Compressed gap
0s4m20s4m30s1h45m1h45m1h46m1h46m1h46m1h46m1h46m1h46m