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

RobotWebTools / rclnodejs / 35182297317
91%

Build:
DEFAULT BRANCH: develop
Ran 17 Sep 2026 04:40AM UTC
Jobs 1
Files 67
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

17 Sep 2026 04:32AM UTC coverage: 90.956% (+0.003%) from 90.953%
35182297317

push

github

web-flow
preserve native type-description responses and prevent test leaks (#1608)

## Root Cause

The type-description service rebuilt the native ROS response through deserialize() and serialize() before sending it.

During this conversion, nested strings such as type_sources[0].raw_file_contents passed through StringWrapper.copyRefObject(). Its StringRefStruct(refObject.toObject()) copy decoded data using CString, which stops at the first NUL, but retained the original size and capacity.

The locally observed mismatch was:

| Property | Native response | Reconstructed response |
|---|---|---|
| String buffer length | 264 bytes | 263 bytes |
| Recorded size | 263 | 263 |
| Recorded capacity | 264 | 264 |

The native string had an earlier NUL at offset 262 and satisfied the terminator check at offset 263. CString copying shortened the allocation without updating its metadata.

The middleware subsequently checked data[size], reading beyond the reconstructed Buffer's bounds. Depending on adjacent memory contents, that check could pass or report "string not null-terminated", explaining the intermittent behavior.

Tracing confirmed that failing requests reached the service and were processed while service availability remained true. The response-send call returned without a JavaScript exception, but no usable reply reached the client, which eventually timed out. This was not simply a slow service startup.

A separate test-cleanup defect amplified the failure: the request interval was cleared only after receiving a response. After Mocha timed out and ROS shut down, the interval continued accessing a destroyed client, contaminating subsequent tests with invalid-client and duplicate-done errors.

## Fix

- Send the native type-description response buffer directly, removing the post-handler deserialize/serialize round trip that introduced inconsistent string metadata.
- Let the native ROS handler initialize the response, then free its native allocations in finally aft... (continued)

2271 of 2663 branches covered (85.28%)

Branch coverage included in aggregate %.

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

17853 of 19462 relevant lines covered (91.73%)

223.55 hits per line

Jobs
ID Job ID Ran Files Coverage
1 35182297317.1 17 Sep 2026 04:40AM UTC 67
90.96
GitHub Action Run
Source Files on build 35182297317
  • Tree
  • List 67
  • Changed 3
  • Source Changed 1
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #35182297317
  • 58411a93 on github
  • Prev Build on develop (#35070346052)
  • Next Build on develop (#35309982863)
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