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

penguinolog / urwid / 42221274414
94%

Build:
DEFAULT BRANCH: master
Ran 06 Nov 2026 12:56PM UTC
Jobs 17
Files 81
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

06 Nov 2026 12:34PM UTC coverage: 93.518% (+0.4%) from 93.121%
42221274414

push

github

web-flow
Harden the displays against hostile input and failed start or stop (#1599)

* Keep control characters of a Terminal child off the host terminal

The raw display writes charset "U" runs to the host terminal unchanged.
vterm stored a child's control characters in such cells under the IBM PC
mapping (SGR 11 or ESC ( U), so a child could run OSC 52, OSC 2 or CSI
commands on the host terminal through a UTF-8 encoded C1 control.

- With the UTF-8 encoding, TermCharset.apply_mapping now stores C0, DEL
  and C1 controls bound for a "U" cell as "?".
- Narrow encodings keep their bytes: there 0x80-0x9f are IBM PC glyphs.

* Stop buffering an over-long DECRPM reply

read_private_mode_report had no length limit, unlike the other CSI
parsers. An unterminated "ESC [ ? 111..." from the terminal input was kept
in the partial input and parsed again from the start on every read, so
memory grew without limit and the parse time was quadratic.

The reply is now read within _CSI_PARAMETERS_MAX_LEN parameter bytes, as
read_cursor_position does; a longer run is not a report.

* Stop the curses input spinning once the terminal is gone

_getch_nodelay retried curses.cbreak() without limit and ignored every
curses.error. Once the terminal is gone (an ssh hang-up, or output that
is not a terminal) cbreak() fails on every call, so get_input() never
returned and used a whole CPU.

cbreak() is now retried once, and a second failure is raised as
curses.error, as the blocking path of _getch already does.

* Apply a DECRPM reply only as the answer to a pending query

The raw display applied every private mode report to its modes, whether
or not it had asked. Pasted text shaped like a reply could switch on
bracketed paste while the mode was still being detected, and a later one
could turn the field off without sending the disable sequence.

- _detect_terminal_modes records the modes it queries.
- A report counts once, for a mode still waiting for its answer.
- Any other report is dropp... (continued)

6761 of 7416 branches covered (91.17%)

Branch coverage included in aggregate %.

115 of 125 new or added lines in 6 files covered. (92.0%)

124 existing lines in 10 files now uncovered.

17406 of 18426 relevant lines covered (94.46%)

14.96 hits per line

Uncovered Changes

Lines Coverage ∆ File
8
46.95
14.03% urwid/display/curses.py
2
86.67
5.1% urwid/display/_win32_raw_display.py

Coverage Regressions

Lines Coverage ∆ File
72
63.5
-2.93% urwid/display/web.py
17
96.28
0.06% urwid/widget/columns.py
11
58.11
0.0% urwid/__init__.py
9
83.4
-1.09% urwid/widget/widget.py
6
98.49
0.17% urwid/widget/tabs.py
3
81.25
0.0% urwid/display/__init__.py
3
95.12
-0.23% urwid/widget/pile.py
1
91.67
0.0% urwid/event_loop/__init__.py
1
98.19
0.29% urwid/widget/bar_graph.py
1
99.43
0.0% urwid/canvas.py
Jobs
ID Job ID Ran Files Coverage
1 run-pypy3.11-windows-latest - 42221274414.1 06 Nov 2026 01:03PM UTC 81
81.41
GitHub Action Run
2 run-3.15t-windows-latest - 42221274414.2 06 Nov 2026 12:59PM UTC 81
81.49
GitHub Action Run
3 run-3.13t-ubuntu-latest - 42221274414.3 06 Nov 2026 01:01PM UTC 81
91.6
GitHub Action Run
4 run-3.15t-ubuntu-latest - 42221274414.4 06 Nov 2026 12:56PM UTC 81
91.6
GitHub Action Run
5 run-pypy3.11-ubuntu-latest - 42221274414.5 06 Nov 2026 01:00PM UTC 81
91.2
GitHub Action Run
6 run-3.13-windows-latest - 42221274414.6 06 Nov 2026 12:58PM UTC 81
82.04
GitHub Action Run
7 run-3.15-ubuntu-latest - 42221274414.7 06 Nov 2026 12:56PM UTC 81
92.22
GitHub Action Run
8 run-3.13-ubuntu-latest - 42221274414.8 06 Nov 2026 12:56PM UTC 81
92.21
GitHub Action Run
9 run-3.11-ubuntu-latest - 42221274414.9 06 Nov 2026 12:56PM UTC 81
92.24
GitHub Action Run
10 run-3.12-ubuntu-latest - 42221274414.10 06 Nov 2026 12:56PM UTC 81
92.21
GitHub Action Run
11 run-3.15-windows-latest - 42221274414.11 06 Nov 2026 12:58PM UTC 81
81.51
GitHub Action Run
12 run-3.14t-windows-latest - 42221274414.12 06 Nov 2026 12:59PM UTC 81
81.49
GitHub Action Run
13 run-3.14-ubuntu-latest - 42221274414.13 06 Nov 2026 12:55PM UTC 81
92.22
GitHub Action Run
14 run-3.14-windows-latest - 42221274414.14 06 Nov 2026 12:57PM UTC 81
82.05
GitHub Action Run
15 run-3.11-windows-latest - 42221274414.15 06 Nov 2026 12:57PM UTC 81
82.07
GitHub Action Run
16 run-3.12-windows-latest - 42221274414.16 06 Nov 2026 12:58PM UTC 81
82.03
GitHub Action Run
17 run-3.14t-ubuntu-latest - 42221274414.17 06 Nov 2026 12:56PM UTC 81
91.6
GitHub Action Run
Source Files on build 42221274414
  • Tree
  • List 81
  • Changed 20
  • Source Changed 18
  • Coverage Changed 20
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #42221274414
  • 69b1c0a3 on github
  • Prev Build on master (#42179752857)
  • 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