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

stillwater-sc / universal / 26013934103
84%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 18 May 2026 05:10AM UTC
Jobs 1
Files 652
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

18 May 2026 04:41AM UTC coverage: 84.209% (-0.02%) from 84.224%
26013934103

push

github

web-flow
fix(ereal): reject trailing garbage in parse + comprehensive test coverage (#868)

Items 1 (nan/inf token routing) and 2 (operator>> failbit + extraction
guard) of #857 shipped via #858 (Phase E).  Two latent parse bugs
surfaced while writing the comprehensive test the issue's acceptance
criteria requires:

- "1e" was accepted as 1.  The "Parse optional exponent" block guarded
  on `pos < str.length() && str[pos - 1] == 'e'`, which is false at
  end-of-string, so the missing-exponent-digits check never ran.

- "1e3.5" was accepted as 1000.  The exponent parser consumed "3" and
  then never verified pos == str.length(), letting trailing garbage
  ride through silently.

Fix: track saw_exponent_marker explicitly when the mantissa loop stops
on 'e'/'E', and require pos == str.length() at end of parse.

Test extended from 3 groups (parse-returned-true checks) to 8 groups
that assert parsed values (within 1e-12 relative tolerance via the
double-extraction path) and pin every malformed-rejection case in the
issue's acceptance criteria:

- canonical decimals (8 cases, value-asserted)
- scientific notation (9 cases, ranging 1e-100..1e+100)
- nan/inf/infinity tokens (case-insensitive, signed inf)
- malformed reject (empty, alpha, 1.2.3, ., 42x, 0xFF, "1 2",
                    "1e", "1e3.5", "nann", "innf", "infi")
- operator>> failbit on bad / scientific success / empty stream
- nlimbs parity across ereal<1>/<2>/<4>

Item 3 of the issue (replace digit-accumulate + pown with the distill
algorithm from PR #851) is explicitly out of scope per the issue body
("may warrant its own follow-up issue") and not addressed here.

Resolves #857

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

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

10 existing lines in 1 file now uncovered.

46821 of 55601 relevant lines covered (84.21%)

6416418.46 hits per line

Coverage Regressions

Lines Coverage ∆ File
10
31.43
-3.57% include/sw/universal/verification/test_suite_randoms.hpp
Jobs
ID Job ID Ran Files Coverage
1 26013934103.1 18 May 2026 05:10AM UTC 652
84.21
GitHub Action Run
Source Files on build 26013934103
  • Tree
  • List 652
  • Changed 2
  • Source Changed 1
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26013934103
  • 00d6edb7 on github
  • Prev Build on main (#26012810689)
  • Next Build on main (#26070452949)
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

© 2026 Coveralls, Inc