Draft
Conversation
- Fix config_loader._load_config_file to preserve top-level keys like rfc6638_users when unwrapping the test-servers dict — previously they were silently dropped, so TestScheduling was always skipped. - Fix registry.load_from_config to skip non-dict entries (e.g. the rfc6638_users list) instead of raising ValueError. - Add two new tests in test_config_loader.py covering these fixes. - Add user1/testpass1, user2/testpass2, user3/testpass3 to the Baikal pre-seeded SQLite DB (create_baikal_db.py + regenerated db.sqlite), alongside the existing testuser account. - Add user1-user3 to init-sogo-users.sql for SOGo. - Add CI step that writes tests/caldav_test_servers.yaml with rfc6638_users pointing to Cyrus user1-user3 (password 'x'), which are pre-created by the ghcr.io/cyrusimap/cyrus-docker-test-server image and are expected to support calendar-auto-schedule. - Update example config files with server-specific rfc6638_users snippets for Cyrus, Baikal and SOGo. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds a new 'scheduling' feature entry to the compatibility hints, corresponding to the legacy 'no_scheduling' flag, to enable structured tracking of RFC6638 CalDAV Scheduling support. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace the old_flags no_scheduling / no_scheduling_mailbox /
no_scheduling_calendar_user_address_set with the new 'scheduling'
feature entry in the compatibility matrix, and adapt the test code to
use skip_unless_support("scheduling") / is_supported("scheduling").
Servers with no_scheduling → "scheduling": {"support": "unsupported"}:
xandikos_v0_2_12, xandikos, radicale, robur, posteo, purelymail
Servers with partial scheduling (mailbox/address-set missing) → noted
with a TODO for future sub-features: gmx
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… sub-features - Add scheduling.mailbox and scheduling.calendar-user-address-set to FeatureSet.FEATURES (RFC6638 sections 2.2-2.4.1) - Set both to unsupported in the gmx server entry (scheduling is advertised but sub-features are non-functional) - Adapt testSchedulingInfo/testSchedulingMailboxes to use the new sub-feature flags instead of the top-level scheduling flag - Refactor TestScheduling into TestSchedulingBase with a configurable _users list; legacy TestScheduling created from rfc6638_users - Generate TestSchedulingForServer* classes for servers with scheduling_users configured in their server entry - Pass scheduling_users through in TestServer.get_server_params() - Document and enable scheduling_users for Cyrus in the example config (Cyrus pre-creates user1-user5 with password 'x') Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Rename TestSchedulingBase → _TestSchedulingBase so pytest no longer
collects the base class directly (it has _users=[] → noisy skip).
The docstring already said "no Test prefix" but the code disagreed.
- Teach load_from_config to merge scheduling_users into an already-
registered server (case-insensitive name match) instead of
registering a duplicate. This allows a caldav_test_servers.yaml
entry like:
cyrus:
scheduling_users: [...]
to augment the auto-discovered CyrusTestServer without doubling up.
- If a config entry contains only test-metadata keys (scheduling_users,
type, enabled) and no matching server is already registered, skip it
silently — it is intended to augment a running server, not create a
new one (avoids spurious test runs when e.g. Cyrus isn't started
locally but the CI-oriented config file is present).
- Update CI step to write per-server scheduling_users for both Cyrus
and Baikal (instead of the previous global rfc6638_users approach).
- Update caldav_test_servers.yaml.example with Baikal and SOGo
scheduling_users examples and explain when to use the legacy
rfc6638_users fallback.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Rather than requiring a caldav_test_servers.yaml file to be written
by CI (or manually by the user), bake the scheduling_users directly
into CyrusTestServer and BaikalTestServer.__init__.
- Cyrus: user1-user3 / password 'x' (pre-created by the docker image)
- Baikal: user1-user3 / testpass1-3 (pre-seeded in the committed db.sqlite)
The per-server TestSchedulingForServer{Cyrus,Baikal} classes are now
generated automatically whenever those servers are running, with no
additional configuration required.
Also drop the now-unnecessary CI step that wrote caldav_test_servers.yaml.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.
Now that we have lots of docker containers supporting the scheduling RFC, we should get the test framework doing some real testing on it