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

dangernoodle-io / breadboard / 30733352265
97%

Build:
DEFAULT BRANCH: main
Ran 02 Aug 2026 05:02AM UTC
Jobs 1
Files 214
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

02 Aug 2026 05:00AM UTC coverage: 96.854%. Remained the same
30733352265

push

github

web-flow
feat: verify binds_data= marker declarations against real bb_data_bind() calls (#1199)

Adds lint rule binds-data-mismatch (scripts/bbtool/commands/lint.py), closing
the gap left after B1-1355 PR1: check_binds_data_cap (wire.py) counts the
distinct keys a `// bbtool:init binds_data=` marker CLAIMS, but nothing
previously verified that claim against the bb_data_bind() calls actually
present in the marker's owning component -- a component under-declaring its
real binds would silently pass the cap check and overflow the runtime
BB_DATA_MAX_BINDINGS table, one level up from B1-1355's original defect.

Design:
- Homed in lint.py (not wire.py): this is a static cross-file consistency
  check over source text, the same class as init-marker-gated-srcs, not a
  codegen-time resolved-composition concern; reuses _collect_init_markers
  and discovery.build_index rather than duplicating either.
- Owning component: entry.component when set (the only place a
  --consumer-manifest marker names it, e.g. examples/*/main/bb_wire.h),
  else discovery.owner_of_path(entry.src_file) for a component/platform
  header marker -- the same discovered dirs used to locate its .c files.
- .c file scope: components/<name>/ AND every platform/{host,espidf,
  arduino}/<name>/ (recursive) -- a component's binds can live in either
  tree (e.g. bb_mdns_cache is platform-only).
- Macro-constant .key= values (BB_DISPLAY_INFO_TOPIC/BB_DIAG_BOOT_TOPIC/
  BB_OTA_CHECK_TOPIC) are RESOLVED via a #define grep over the same
  component's own tree, never a hard-coded exemption list; an unresolvable
  macro or an unlocatable binding declaration is reported as its own loud
  violation, never silently treated as "not bound".

Two BEHAVIORAL ADDITIONS (both inert until a marker actually declares binds_data=):

(a) ZERO-CALL-SITE VIOLATION: when a component carrying a binds_data=
    declaration has no bb_data_bind() call site anywhere in its own tree
    (both resolved and unresolved sets empty), the ... (continued)

8220 of 8784 branches covered (93.58%)

Branch coverage included in aggregate %.

13914 of 14069 relevant lines covered (98.9%)

2604.73 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30733352265.1 02 Aug 2026 05:02AM UTC 214
96.85
GitHub Action Run
Source Files on build 30733352265
  • Tree
  • List 214
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30733352265
  • 12623fcd on github
  • Prev Build on main (#30733066031)
  • Next Build on main (#30734322875)
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