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

collective / icalendar / 18758844215 / 2
98%
main: 98%

Build:
DEFAULT BRANCH: main
Ran 23 Oct 2025 07:02PM UTC
Files 128
Run time 7s
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

23 Oct 2025 06:53PM UTC coverage: 97.676% (+0.004%) from 97.672%
18758844215.2

push

github

web-flow
Fix #355: Preserve URL-encoded characters in content line parsing (#935)

* Add CHANGES.rst entry for issue #355 URL escaping fix

* Fix #355: Properly handle URL-encoded characters in content lines

The previous implementation used escape_string() and unescape_string()
as a workaround to temporarily hide backslash-escaped characters during
parsing. This corrupted already URL-encoded values like %3A (colon) by
incorrectly unescaping them.

This fix implements proper parsing that respects:
- Double-quote delimited sections (case-sensitive)
- Backslash escaping outside quotes
- Delimiter detection only when not quoted or escaped

This prevents URL-encoded characters in values (like Facebook event URLs)
from being corrupted during parsing.

Added type hints to parts() method.

Based on original work by NicoHood in PR #356.

Co-authored-by: NicoHood <NicoHood@users.noreply.github.com>

Fixes #355
Closes #356
Closes #426

* Add test events for issue #355 URL escaping

Test cases with URL-encoded characters in DESCRIPTION fields to verify
that URL-encoded values are not corrupted during parsing.

Co-authored-by: Nicco Kunzmann <niccokunzmann@rambler.ru>

* Add tests for issue #355 URL escaping

Tests verify that URL-encoded characters in DESCRIPTION fields
are not incorrectly unescaped during parsing.

Co-authored-by: Nicco Kunzmann <niccokunzmann@rambler.ru>

* Add unescape_backslash() for RFC 5545 backslash escaping

Adds a new function that only unescapes backslash sequences (\, \; \: \)
without touching URL-encoded values (%XX). This prevents corruption of
URL-encoded characters in values while still properly handling RFC 5545
backslash escaping.

The original unescape_string() conflates backslash escaping with URL
encoding, which was the root cause of issue #355.

* Fix ruff linting: use lowercase for local variable

* Fix error messages to match test expectations

When content lines have no delimiters or invalid names, the error
messages now match wha... (continued)

534 of 547 branches covered (97.62%)

Branch coverage included in aggregate %.

8083 of 8275 relevant lines covered (97.68%)

0.98 hits per line

Source Files on job run-py310 - 18758844215.2
  • Tree
  • List 128
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 18758844215
  • 6486beac on github
  • Prev Job for on main (#18754782523.2)
  • Next Job for on main (#18774263749.1)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc