Conversation
… debug mode Add a new compatibility feature to detect servers that return events/todos outside the requested time range. Some servers (like SOGo) incorrectly return recurring events whose recurrences fall after the search interval ends, or events with no recurrences in the requested range at all. Changes to compatibility_hints.py: - Add "search.time-range.accurate" feature definition with RFC reference - Add SOGo-specific compatibility hints based on observed behavior - Document various SOGo limitations (search, sync-token, principal-search, etc.) - Remove obsolete "inaccurate_datesearch" and "no_search" flags Changes to test_caldav.py: - Make testCheckCompatibility debug mode conditional on --pdb flag - Use "logging" mode by default, "pdb" mode only when pytest --pdb is used - This prevents tests from hanging on breakpoints during normal CI runs - Remove unused "no_search" compatibility flag check 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Remove old sync-related compatibility flags and migrate tests to use
the new feature system with is_supported() instead of check_compatibility_flag().
Changes:
- Remove obsolete flags from incompatibility_description:
- no_sync_token → use sync-token feature
- time_based_sync_tokens → check sync-token behaviour
- fragile_sync_tokens → check sync-token support level
- sync_breaks_on_delete → use sync-token.delete feature
- Update testObjectBySyncToken() and testSync():
- Replace skip_on_compatibility_flag("no_sync_token") with skip_unless_support("sync-token")
- Replace check_compatibility_flag("time_based_sync_tokens") with behaviour check
- Replace check_compatibility_flag("fragile_sync_tokens") with support level check
- Replace skip_on_compatibility_flag("sync_breaks_on_delete") with skip_unless_support("sync-token.delete")
- Cache sync_info at start of test to avoid redundant feature lookups
- Fix bug in testSync line 1505: was checking "not is_supported" instead of "is_supported"
The new approach uses the feature system which is checked by caldav-server-tester
and provides better granularity and documentation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add sogo-db service (MariaDB 11) with health check - Add sogo service (japoch/sogo:latest) with health check - Add configuration step to copy config files and initialize database - Add CalDAV access verification - Add SOGO_URL environment variable for tox 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
SOGo was failing with "Unknown server host 'db'" because GitHub Actions service containers don't support docker-compose style hostnames. The fix dynamically replaces the 'db' hostname with the actual database container IP address before copying the configuration to the SOGo container. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
The SOGo service was failing health checks because it needs database configuration before it can start properly. GitHub Actions runs health checks before workflow steps, so we couldn't configure it in time. Solution: Remove the health check from the SOGo service definition and handle readiness checking in the configuration step after we've set up the database connection with the correct hostname. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
The MariaDB 11 container doesn't have 'mysql' in its default PATH, only 'mariadb'. Changed the database initialization command to use 'mariadb' instead of 'mysql'. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Replace old compatibility flag with new feature system for better
maintainability and automated detection. Feature name includes RFC
number to distinguish from RFC6638 scheduling-based freebusy.
Feature definition:
- Add 'freebusy-query.rfc4791' feature for RFC4791 section 7.10 support
- Default to 'supported' as most servers implement this
- Include RFC reference link and note about RFC6638 difference
Server compatibility updates:
- xandikos v0.2.12: ungraceful (500 internal server error)
- xandikos v0.3: ungraceful (500 internal server error)
- radicale: unsupported (on long-term roadmap)
- robur: unsupported
- gmx: unsupported
Test updates:
- Replace skip_on_compatibility_flag("no_freebusy_rfc4791")
with skip_unless_support("freebusy-query.rfc4791")
Cleanup:
- Remove 'no_freebusy_rfc4791' from incompatibility_description
- Remove flag from all server old_flags lists
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <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.
I thought I wouldn't be adding more docker containers ... it was a big pain. Indeed, SOGo was also a big pain. I went through lots of docker images before finding one that would work without too much adaptions.