f7a71b0e

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.

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 1m54s 0s 0s 1m55s 1m54s
Eval 2m17s 14s 14s 2m31s 22s
Build 2m30s 55s - - 7m51s
Suite 1m54s 1m10s - - 2h25m10s

Timeline

0s2m20s2m30s8m40s8m50s9m10m30s10m40s