Skip to content

Scheduling testing#646

Draft
tobixen wants to merge 7 commits intomasterfrom
scheduling-testing
Draft

Scheduling testing#646
tobixen wants to merge 7 commits intomasterfrom
scheduling-testing

Conversation

@tobixen
Copy link
Member

@tobixen tobixen commented Mar 21, 2026

Now that we have lots of docker containers supporting the scheduling RFC, we should get the test framework doing some real testing on it

tobixen and others added 7 commits March 20, 2026 20:38
- 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant