Merge upstream sabre-io/vobject 5.0.0 - #118
Merged
Merged
Conversation
And adjust the related unit test testConvertDefaultFormats so that it handles the PHP warning that is emitted by fopen. The Cli code catches InvalidDataException and exits with status 2, which is what was always expected by the unit test code. So this should preserve the real behavior. The test changes are necessary because PHPunit11 now exposes the PHP warning coming from fopen. So we catch and expect that in an error handler in the test.
ci: pin GitHub actions to SHA
Modifiers at the end of a regex should not have whitespace before them. Change "# xi" to just "#xi". Date format "t" returns a string that is the numbers of days in the month. Explicitly cast it to int when using it in a calculation. These were two minor things pointed out by my editor. Existing tests will cover the changes here. There is no actual bug being fixed.
fix: minor code fixes
Adjust DataProvider test code
Bumps [actions/cache](https://github.com/actions/cache) from 5.0.5 to 6.1.0. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](actions/cache@27d5ce7...55cc834) --- updated-dependencies: - dependency-name: actions/cache dependency-version: 6.1.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.3 to 7.0.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@df4cb1c...9c091bb) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 7.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.37.1 to 2.37.2. - [Release notes](https://github.com/shivammathur/setup-php/releases) - [Commits](shivammathur/setup-php@7c071df...f3e473d) --- updated-dependencies: - dependency-name: shivammathur/setup-php dependency-version: 2.37.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
…ns/actions/cache-6.1.0 chore(deps): bump actions/cache from 5.0.5 to 6.1.0
…ns/actions/checkout-7.0.0 chore(deps): bump actions/checkout from 6.0.3 to 7.0.0
…ns/shivammathur/setup-php-2.37.2 chore(deps): bump shivammathur/setup-php from 2.37.1 to 2.37.2
When serializing PERIOD values to JSON (for jCal format), preserve the 'Z' timezone indicator for UTC datetimes. This ensures FREEBUSY periods maintain explicit UTC designation, avoiding timezone ambiguity. Without this change: FREEBUSY:20120226T230000Z/20120226T230000Z => serializes to: ["2012-02-26T23:00:00", "2012-02-26T23:00:00"] With this change: FREEBUSY:20120226T230000Z/20120226T230000Z => serializes to: ["2012-02-26T23:00:00Z", "2012-02-26T23:00:00Z"] This behavior is consistent with RFC 5545 which requires UTC times to be designated with the 'Z' suffix. Related: sabre-io#411
feat: preserve UTC 'Z' indicator in Period JSON serialization
…-master chore: prepare release 4.6.1
chore: prepare major release 5.0.0
Upstream 5.0.0 requires PHP 8.2, declares parameter and return types across the codebase and moves the test suite to PHPUnit 11. Conflict resolution: - RRuleIterator: keeps our yearlySkipUpperLimit constructor parameter, fast-forward helpers and [day, hour, minute, second] occurrences, on top of upstream's promoted $startDate, strict comparisons and $selectedOccurrence. The occurrence comparison moves into isOccurrenceAfter() so each branch sets $selectedOccurrence once. - RRuleIteratorTest: keeps our version of the conflicting sections. Upstream's DST transition tests stay out, as before: they call parse() with upstream's signature, and the monthly/yearly ones fail on our iterator (follow-up). - TimeZoneUtilTest: keeps our tests and the Europe/Kyiv filter, with upstream's DataProvider attribute and arrow functions. - Version stays 4.35.0; the bump is left to the release PR.
…om rector Signed-off-by: Phillip Davis <phil@jankaritech.com> (cherry picked from commit 4a3e8c9)
And require ar least rector 2.6 Signed-off-by: Phillip Davis <phil@jankaritech.com> (cherry picked from commit cd2fa3b)
Brings the fork-specific code in line with the upstream 5.0.0 toolchain (PHPUnit 11, PHPStan strict rules, Rector, php-cs-fixer): - tests: static data providers, DataProvider attributes and self::assert* calls - RRuleIterator: promoted readonly $yearlySkipUpperLimit, match for the frequency coefficient, integer tuple comparison when sorting occurrences, and ruleValuesOrCurrent() instead of short ternaries - GuessFromCustomizedTimeZone: explicit checks on getTransitions(), which returns array|false No behaviour change intended; the full test suite passes.
giuseppe-arcuti
approved these changes
Sep 30, 2026
Merged
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.
What
Syncs our fork with upstream
sabre-io/vobject5.0.0 (2026-07-07). This is a breaking release:Our previous sync (#116) linked our history to upstream's, so git only had to compare changes since 4.6.0. The merge had 5 conflicts.
Commits
a6e164cfMerge upstream 5.0.0. Conflict resolution only:RRuleIterator: keeps ouryearlySkipUpperLimitconstructor parameter, the fast-forward helpers and the[day, hour, minute, second]occurrences, on top of upstream's promoted$startDate, strict comparisons and$selectedOccurrence. The occurrence comparison moves intoisOccurrenceAfter().RRuleIteratorTest: keeps our version where it conflicted (see follow-ups).TimeZoneUtilTest: keeps our tests and theEurope/Kyivfilter, in upstream's PHPUnit 11 form.Version.phpstays at 4.35.0. The bump comes in the release PR.32c942b3,3473176care cherry-picks of upstream chore: apply rector IfToNullCoalescingAssignRector rule sabre-io/vobject#787, made after 5.0.0. Upstream 5.0.0 fails the current Rector check, and chore: apply rector IfToNullCoalescingAssignRector rule sabre-io/vobject#787 is upstream's fix for it.3b084ae5Adapt Proton code to 5.x tooling. No behaviour change intended:DataProviderattributes,self::assert*RRuleIterator: readonly promoted$yearlySkipUpperLimit,matchfor the frequency coefficient, integer tuple comparison when sorting occurrences, andruleValuesOrCurrent()instead of short ternariesGuessFromCustomizedTimeZone: explicit checks ongetTransitions(), which returnsarray|falseTo see exactly how each conflict was resolved:
Testing
Run locally on PHP 8.4, the same checks as CI:
vendor/bin/phpunit --configuration tests/phpunit.xml: 3282 tests pass, 1 skippedcomposer phpstan: no errorsvendor/bin/rector process --dry-run: no changesPHPUnit reports 56 deprecations (metadata in doc comments). 53 of them are in upstream's own tests at 5.0.0, which upstream has since fixed (sabre-io#788). They only become errors with PHPUnit 12.
Follow-ups (not in this PR)
been the case since 4.31 and this PR doesn't change it. It will get its own PR, together with bringing back upstream's DST tests adapted to our
parse()test helper.failOnDeprecation, and a PHP 8.5 deprecation fix inVCard. These come with the next sync.Merging and release
release/5.0.0will bump the version and add a changelog entry calling out the breaking changes.^5.0. Until then they stay on^4.35.