• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tito10047 / php-calendar / 29684814725
87%
main: 87%

Build:
Build:
LAST BUILD BRANCH: feature-caldav-server
DEFAULT BRANCH: main
Ran 19 Jul 2026 11:16AM UTC
Jobs 1
Files 35
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

19 Jul 2026 11:10AM UTC coverage: 87.251% (+2.7%) from 84.598%
29684814725

Pull #4

github

tito10047
feat: implement P2 (v1.2) and P3 (v2.0) — full RFC 5545 + CalDAV

P2 — RFC 5545 completeness:
- RECURRENCE-ID: parser attaches overrides to master event via
  withModifiedOccurrence(); expandOccurrences() returns full ICalEvent
  objects with overrides substituted; JsonSerializer uses expandOccurrences
- X-* extension properties: parser collects all X-* lines into
  extensionProperties map; exporter outputs them; getExtendedProperty() accessor
- WKST in RRULE: RecurrenceRule::weekStart(), parsed from RRULE, serialised
  back with WKST= only when non-Monday
- TRANSP, CLASS, PRIORITY: EventTransp and EventClass enums; parsed and
  exported; default values (OPAQUE/0) suppressed in output
- DST-aware expansion: expandOccurrences() preserves original DateTimeZone
  so local clock time stays correct across DST transitions
- DTSTAMP, CREATED, LAST-MODIFIED, SEQUENCE: parsed, stored, exported;
  zero/null defaults suppressed

P3 — v2.0 extensions:
- CalDAVClient: fluent HTTP client (PROPFIND + REPORT) with Basic auth;
  parses multi-status XML, extracts calendar-data blocks via DOMDocument,
  delegates to ICalParser; src/ICal/CalDAVClient.php
- Streaming export: ICalExporter::exportToStream(resource $stream) writes
  folded RFC 5545 lines one-by-one; export() refactored to share
  buildEventLines() private method — zero code duplication

Tests: 25 new tests (14 P2 + 11 P3), total 212 tests / 826 assertions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Pull Request #4: Feature 2

697 of 782 new or added lines in 16 files covered. (89.13%)

12 existing lines in 3 files now uncovered.

1403 of 1608 relevant lines covered (87.25%)

9.25 hits per line

Uncovered Changes

Lines Coverage ∆ File
41
54.44
src/ICal/CalDAVClient.php
32
82.45
1.82% src/Recurrence/RecurrenceRule.php
4
80.43
13.28% src/ICal/ICalParser.php
2
96.55
src/View/DayView.php
1
88.89
src/ICal/Attendee.php
1
99.03
3.57% src/ICal/ICalEvent.php
1
97.78
8.17% src/ICal/ICalExporter.php
1
95.65
src/ICal/VAlarm.php
1
97.3
src/Serializer/JsonSerializer.php
1
50.0
src/View/TimeSlot.php

Coverage Regressions

Lines Coverage ∆ File
6
80.43
13.28% src/ICal/ICalParser.php
5
82.45
1.82% src/Recurrence/RecurrenceRule.php
1
97.78
8.17% src/ICal/ICalExporter.php
Jobs
ID Job ID Ran Files Coverage
1 29684814725.1 19 Jul 2026 11:16AM UTC 35
87.25
GitHub Action Run
Source Files on build 29684814725
  • Tree
  • List 35
  • Changed 5
  • Source Changed 0
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Pull Request #4
  • PR Base - main (#29634963944)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc