caldav-server-tester
A command-line tool that probes a CalDAV server and reports which features and RFC requirements it supports, which ones it handles quirky, and which ones it gets wrong.
It is a companion to the CalDAV
Python client library and produces output that is compatible with that
library's compatibility_hints.py feature-flag system. See https://caldav.readthedocs.io/latest/configfile.html#testing-server-compatibility on how to use it for configuring your server compatibility in a formt that the libary can read.
What it checks
The full list is currently maintained in the CalDAV library, https://github.com/python-caldav/caldav/blob/master/caldav/compatibility_hints.py - the checks includes:
- Calendar creation and deletion (
MKCALENDAR) - Saving and loading events, tasks, and journals
- Time-range, text, alarm, and recurrence searches (RFC 4791)
- Case sensitivity and substring matching in text searches
- Sync-collection reports (RFC 6578)
- Free-busy queries
- Principal discovery (RFC 5397)
- A
WWW-Authenticateheader on a 401, naming a usable scheme (RFC 7235) - Scheduling identity: whether
calendar-user-address-setholds an address (RFC 6638) - Duplicate UID handling across calendars
- Timezone support in events
For full usage information, including all CLI options and output formats, see USAGE.md.
Installation
make install
(This auto-detects uv, pipx, or pip and does the right thing. Hopefully.)
Quick example
caldav-server-tester --caldav-url https://example.com/dav \
--caldav-username alice \
--caldav-password secret
See USAGE.md for details on output formats (--format json/yaml/hints), the --diff flag, running individual checks, and safety
considerations.
Roadmap
docs/ROADMAP.md describes what the tool covers today, what
is funded for the next period, and what is wanted but not funded.
Background
The caldav client library accumulated a large set of compatibility flags to work around differences between CalDAV server implementations. Every server deviates from the RFC in at least some way — some silently ignore unsupported features, some return errors, some return wrong data.
This tool was created to make it easy to discover and document those deviations without having to run the full caldav test suite and interpret failures manually. It can also alert you when a previously flagged problem has been fixed in a newer server version.
Vocabulary
The project is called caldav-server-tester, but internally the word
test is reserved for code under the tests/ directory. Code that probes
server capability is called a check.
License
AGPL-3.0-or-later
Metadata
Release files for caldav-server-tester 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| caldav_server_tester-1.4.0.tar.gz | 251.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| caldav_server_tester-1.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 368.4 kB
Release files / caldav_server_tester-1.4.0.tar.gz
| Download URL | caldav_server_tester-1.4.0.tar.gz |
|---|---|
| Size | 251.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3b0d6623e6165978ea9b76ccdf33ddb1a3ca162c5d403d73121e61110e0439d9
|
|
BLAKE2b-256 checksum How to use checksums |
cbf100e0051e9c4b49fb1acb6c53bff99a4e360a59b915ab9c3b50edcb47b8d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency logRelease files / caldav_server_tester-1.4.0-py3-none-any.whl
| Download URL | caldav_server_tester-1.4.0-py3-none-any.whl |
|---|---|
| Size | 116.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dbcca9b10977ceec63996d49767581f8c25734af5a0f02ea1c95b3bb7c6b8b92
|
|
BLAKE2b-256 checksum How to use checksums |
7ca179f726c5d20c111b972eaab25f68bd7746f5b46f8987c3312544b362d313
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency log