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

collective / icalendar / 18758844215
98%

Build:
DEFAULT BRANCH: main
Ran 23 Oct 2025 06:55PM UTC
Jobs 8
Files 128
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

23 Oct 2025 06:53PM UTC coverage: 97.86% (+0.005%) from 97.855%
18758844215

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)

947 of 976 branches covered (97.03%)

Branch coverage included in aggregate %.

39 of 39 new or added lines in 2 files covered. (100.0%)

8106 of 8275 relevant lines covered (97.96%)

7.79 hits per line

Jobs
ID Job ID Ran Files Coverage
1 run-pypy3 - 18758844215.1 23 Oct 2025 07:02PM UTC 128
97.67
GitHub Action Run
2 run-py310 - 18758844215.2 23 Oct 2025 06:55PM UTC 128
97.68
GitHub Action Run
3 run-py38 - 18758844215.3 23 Oct 2025 06:55PM UTC 128
97.67
GitHub Action Run
4 run-py39 - 18758844215.4 23 Oct 2025 06:56PM UTC 128
97.67
GitHub Action Run
5 run-py311 - 18758844215.5 23 Oct 2025 06:55PM UTC 128
97.63
GitHub Action Run
6 run-py312 - 18758844215.6 23 Oct 2025 06:56PM UTC 128
97.63
GitHub Action Run
7 run-py313 - 18758844215.7 23 Oct 2025 06:55PM UTC 128
97.63
GitHub Action Run
8 run-nopytz - 18758844215.8 23 Oct 2025 06:55PM UTC 128
95.67
GitHub Action Run
Source Files on build 18758844215
  • 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 Repo
  • Github Actions Build #18758844215
  • 6486beac on github
  • Prev Build on main (#18754782523)
  • Next Build on main (#18774263749)
  • 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