Skip to main content

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)
  • 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.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for caldav-server-tester 1.3.0
File Size Uploaded
caldav_server_tester-1.3.0.tar.gz 235.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for caldav-server-tester 1.3.0
File Interpreter ABI Platform
caldav_server_tester-1.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 347.3 kB

Release files / caldav_server_tester-1.3.0.tar.gz

Download URL caldav_server_tester-1.3.0.tar.gz
Size 235.4 kB
Tags Source
SHA-256 checksum
How to use checksums
76663e356b4af81fec3275f3f424e508590a8ec7c4efe54aa22f86beee4d28f1
BLAKE2b-256 checksum
How to use checksums
cb284e5cfdf503bc15f9f5ec897fcb6f7f0a3d5c9e6865bb10afaa74e976a68e
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 Sep 16, 2026.

Transparency log

Release files / caldav_server_tester-1.3.0-py3-none-any.whl

Download URL caldav_server_tester-1.3.0-py3-none-any.whl
Size 111.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1e9f2c8d21ff8a4e791c21efc9039a9351e5d0219f0bfc00733d73ba2c31622d
BLAKE2b-256 checksum
How to use checksums
83ab3b87c0d35ec9d998ab7210616aee76898ce3c9b9e3c093bf854851d9f876
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 Sep 16, 2026.

Transparency log

Release history Release notifications | RSS feed

1.4.0

2 release files

This release

1.3.0 This release

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.2.2

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page