Repository navigation
feat: probe a %40 href in a calendar-multiget - #59
Merged
Merged
Conversation
A time-range search should find an object overlapping the range, not only one starting inside it (RFC 4791 section 9.9); Robur finds only events starting inside, Cyrus and GMX only tasks. It should also place an event with a TZID and its VTIMEZONE at its UTC time; Infomaniak only finds one when the range also reaches its local time read as UTC. The olson-tzid probe now compares the bare-TZID event with a VTIMEZONE control and a 12:00 UTC reference instead of expecting fixed answers, so those two bugs no longer hide its verdict. Its windows contain the start, and a misplaced reference (Bedework 3) means "cannot test". Prompts: > [Found in] another session: date searches over a 30-minute window on robur > and infomaniak apparently does not find the events it should find. Please > do research into this. Those servers can be probed from the [local caldav > clone holding the test-server passwords] directory. > (post-research) We need probes catching all this behaviour. Do some (more) > research ... > Go for search.time-range.*.overlap. We need equivalent test for tasks. > Journals don't count as they don't have a dtend. > (on the claim that those probes are pointless as the caldav library does not > need it) one purpose of this tool is to expose any kind of deviations from > the RFC, from that perspective it should be probed, even if the caldav library > does not need it. > The olson-tzid probe possibly depends on this. At least it needs to be > rewritten to work on infomaniak and robur. Assisted-By: Claude Opus 5.5 <noreply@anthropic.com> Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>
A new object saved under a taken name has a UID of its own, and that is what save(no_overwrite=True) guards. Bedework (3 and 5) refuses the same UID with 412 but another one with 500, so the probe graded it full while the conformance suite saw a 500 on creating under a taken name. Where the same UID got 412, the probe now tries another UID. All 21 servers were reprobed; only Bedework's grade changes. Prompt: [pick from the task list: "calendaring: remaining conformance failures on Ox, Zimbra and others"] Followup-Prompt: ... First priority is to get the conformance tests passing for all the caldav servers available ... Assisted-By: Claude Opus 5.5 <noreply@anthropic.com> Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>
save-load.todo.alarm stores a task with a VALARM (ACTION, TRIGGER:-PT15M and a DESCRIPTION) and reads it back. The same duration written another way, or with default parameters, counts as kept. Dropped is "unsupported"; kept but rewritten is "broken", the behaviour naming what changed. Ox makes the trigger absolute and replaces the description with "Open-XChange", while it keeps an event's alarm as sent. The definition lives in future_features until caldav has it. Prompt: [we probably need] another probe in the caldav-server-tester library on whether task lists accept alarms Followup-Prompt: save-load.todo.alarm is fine, and it's possible to use the behaviour or extra_keys to elaborate why it's broken. Assisted-By: Claude Opus 5.5 <noreply@anthropic.com> Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>
save-load.event.recurrences.rdate stores an event with an RDATE of two dates and reads it back; the dates may come back on one line or several. Dropped is "unsupported", other dates "broken". Zimbra drops every RDATE while it keeps an RRULE, which made calendaring's conformance round trip fail there. The definition lives in future_features until caldav has it. Prompt: [about Zimbra 10.1 dropping RDATE only inside the suite's run:] Keep digging. Followup-Prompt: [make recurrence.rdate a] new feature Assisted-By: Claude Opus 5.5 <noreply@anthropic.com> Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>
Robur serves an object at its %40 URL, but a calendar-multiget naming that href answers 404, and only the literal @ finds it. CheckMultiget now stores an object with an @ in its name and grades url.encode-at.encoded.href; run against Robur it gives unsupported. The feature definition is carried in FUTURE_FEATURES until a caldav release has it. Prompt: Continue working on getting [the calendaring] conformance tests passing. [on Robur, every object with an @ in its UID failed its read-back] Assisted-By: Claude Opus 5.5 <noreply@anthropic.com> Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>
tobixen
force-pushed
the
feat/probe-encoded-href
branch
from
November 12, 2026 21:09
14d5116 to
e423325
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Commit message:
Robur serves an object at its %40 URL, but a calendar-multiget naming
that href answers 404, and only the literal @ finds it. CheckMultiget
now stores an object with an @ in its name and grades
url.encode-at.encoded.href; run against Robur it gives unsupported.
The feature definition is carried in FUTURE_FEATURES until a caldav
release has it.
Prompt: Continue working on getting [the calendaring] conformance tests passing. [on Robur, every object with an @ in its UID failed its read-back]
Assisted-By: Claude Opus 5.5 noreply@anthropic.com
The caldav side is python-caldav/caldav#861.