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

PyCalendar / icalendar / 42679625513
98%

Build:
DEFAULT BRANCH: main
Ran 09 Nov 2026 07:04PM UTC
Jobs 7
Files 322
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

09 Nov 2026 07:03PM UTC coverage: 98.077% (+0.01%) from 98.064%
42679625513

push

github

web-flow
Fix silently dropped properties with escaped quotes in parameter values (#1871)

* Fix silently dropped properties with escaped quotes in parameter values

A quoted parameter value containing an escaped double quote
(ATTENDEE;CN="Qu\"ote":mailto:x@y.z) closed its quoted section
early in every quote-tracking scanner (raw_parts, q_split,
value_separator_index, _strip_ows_around_delimiters), the
value-separating colon then looked quoted, and the whole content line
was dropped from the parsed component without an error. An escaped
quote inside a quoted section is now content (RFC 2445-style escaping
that real-world files still carry), the line parses, and the parameter
value keeps its literal quote. Exactly the surrounding quotes are
removed from a quoted value, so a trailing escaped quote keeps its
quote; unescape pairs are excluded from QUNSAFE validation so they do
not look like raw quotes.

Closes #1870

Responsible AI use:
Author: Pushpak with GLM-5.3 (Z.ai)
Prompt: I reported the bug as issue #1870 first, then worked with the
model to trace the drop through raw_parts/q_split/value_separator_index,
design the escaped-quote handling and the unescape helper, and write the
38 tests; I reviewed and verified every change and ran the test suite.
Output: (this commit)

* Address review: parametrize cross-layer, add edge cases, document scope

- Pytest parametrization across all five parsing layers (unescape helper,
  q_split, Contentline, Parameters.from_ical, end-to-end component) so the
  same escape patterns are verified consistently
- test_multiple_escaped_quotes now has a docstring stating its intention
- \\" and \ on their own (no surrounding text) are tested
- X-PROP;X-PARAM with escaped quote AND colon is tested at both the
  Contentline and component level
- Several escapes in one line tested in Contentline and Parameters
- Answered: unquoted values cannot carry escaped quotes — the raw DQUOTE
  fails SAFE-CHAR validation before unescaping, tested ... (continued)

2121 of 2266 branches covered (93.6%)

Branch coverage included in aggregate %.

231 of 232 new or added lines in 3 files covered. (99.57%)

19145 of 19417 relevant lines covered (98.6%)

6.9 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
96.25
-0.52% src/icalendar/parser/content_line.py
Jobs
ID Job ID Ran Files Coverage
1 run-pypy3 - 42679625513.1 09 Nov 2026 07:15PM UTC 322
98.04
GitHub Action Run
2 run-3.12 - 42679625513.2 09 Nov 2026 07:06PM UTC 322
98.05
GitHub Action Run
3 run-3.13 - 42679625513.3 09 Nov 2026 07:05PM UTC 322
98.05
GitHub Action Run
4 run-3.14 - 42679625513.4 09 Nov 2026 07:04PM UTC 322
98.05
GitHub Action Run
5 run-3.10 - 42679625513.5 09 Nov 2026 07:06PM UTC 322
98.05
GitHub Action Run
6 run-3.10 (nopytz) - 42679625513.6 09 Nov 2026 07:06PM UTC 322
98.05
GitHub Action Run
7 run-3.11 - 42679625513.7 09 Nov 2026 07:05PM UTC 322
98.04
GitHub Action Run
Source Files on build 42679625513
  • Tree
  • List 322
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #42679625513
  • ed791c94 on github
  • Prev Build on main (#42677816164)
  • Next Build on main (#42680427477)
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