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

umputun / revdiff / 32339849419
91%

Build:
DEFAULT BRANCH: master
Ran 20 Aug 2026 06:31AM UTC
Jobs 1
Files 79
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

20 Aug 2026 06:29AM UTC coverage: 90.117% (+0.003%) from 90.114%
32339849419

push

github

web-flow
fix(highlight): keep long tokens colored after the regexp2 2.7.1 bump (#330)

* fix(highlight): raise regexp2 backtracking cap so long tokens keep their color

regexp2 v2.7.1 added a default MaxBacktrackingStackSize of 100000 that did not
exist in v2.2.1. Chroma compiles every lexer rule with a bare regexp2.Compile
and its matchRules drops results whose match returned an error, so a rule that
trips the cap degrades to a non-match with nothing logged. A Go string literal
over roughly 17k characters was repainted as chroma.Error, and revdiff could
not see it because highlightFile only checks the error Tokenise itself returns.

Raise the package default from New(), which is the only route into chroma's
deferred rule compilation. The cap stays finite rather than going back to
unbounded: revdiff opens arbitrary repos and 2.7.1 added the bound for a
reason. Multi-megabyte tokens still exceed it, and the comment says so.

regexp2 moves from indirect to direct in go.mod as a result.

* docs(backlog): refresh the race timeout measurements

re-measured during the PR #327 review: the app package now runs 81.5s and 87.5s
on master against 68s before, so headroom against the 100s budget is down from
roughly 32s to roughly 13s. Still later rather than yes, but the next addition
to the launcher matrix is what flips it.

* fix(highlight): lower the backtracking cap to 1m and correct its comment

10m covered roughly 1.7M characters, far past anything revdiff needs, and the
cost was not free. growTrack doubles until it reaches the cap, so the steps
before ErrBacktrackingStackLimit scale with it, while chroma sets a separate
250ms MatchTimeout on every rule and discards that error through the same
err == nil gate. A cap that large turns a sub-millisecond abort into a stall of
up to a quarter second on the bubbletea event loop, which themeselect hits on
every keypress that changes the chroma style.

The chroma Go quoted-string rule needs 240045 slots for the 40k test inp... (continued)

4 of 4 new or added lines in 1 file covered. (100.0%)

11544 of 12810 relevant lines covered (90.12%)

3454.76 hits per line

Jobs
ID Job ID Ran Files Coverage
1 32339849419.1 20 Aug 2026 06:31AM UTC 79
90.12
GitHub Action Run
Source Files on build 32339849419
  • Tree
  • List 79
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 1b71635e on github
  • Prev Build on master (#32339322991)
  • Next Build on master (#32406720222)
  • 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