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

ruby-grape / grape / 30693032897 / 6
97%
master: 97%

Build:
Build:
LAST BUILD BRANCH: fix/adversarial-sweep-2026-08
DEFAULT BRANCH: master
Ran 01 Aug 2026 09:07AM UTC
Files 166
Run time 5s
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

01 Aug 2026 09:04AM UTC coverage: 58.121%. Remained the same
30693032897.6

Pull #2841

github

ericproulx
Give point-in-time copies their own stackable arrays

InheritableSetting#point_in_time_copy copied a scope's stackable store
shallowly, so the per-key Arrays stayed shared with the source. A
registration made after an endpoint was defined therefore still reached that
endpoint -- but only when the key already held a registration at the time the
copy was taken, since otherwise #stack allocated a fresh Array on the source
alone.

That made the outcome depend on something the API never expressed:

    use Middleware1
    get('/x') { }
    use Middleware2   # applied to GET /x

    get('/x') { }
    use Middleware2   # did NOT apply to GET /x

Two APIs stating the same thing, behaving differently. Not a deliberate
"late registration" feature -- helpers defined after an endpoint already did
not leak, because they resolve down a different path.

Dup the Arrays as well as the Hash holding them. A copy is a point in time:
what the source registers afterwards must not reach it. Inheritance is
untouched -- it resolves by walking #parent, so a scope still sees values an
enclosing scope gains later, which is what the existing "decouples namespace
stackable values" spec actually exercised (its value lives on the parent, so
no Array was ever shared and it passed either way).

Boot cost is negligible: 300 endpoints under scopes carrying middleware,
helpers and filters allocate 1800 more objects (+0.4%) with no measurable
change in time, all at definition time.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Pull Request #2841: Give point-in-time copies their own stackable arrays

311 of 1283 branches covered (24.24%)

Branch coverage included in aggregate %.

2684 of 3870 relevant lines covered (69.35%)

5.27 hits per line

Source Files on job run-4.0-gemfiles/dry_validation.gemfile - 30693032897.6
  • Tree
  • List 166
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 30693032897
  • eb7cf0de on github
  • Prev Job for on fix/stackable-copy-aliasing (#30542026971.1)
  • Next Job for on fix/stackable-copy-aliasing (#30694720879.31)
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