Bump the ruby-deps group across 1 directory with 2 updates
Merged
DE
3mo ago+4+4+0123456789-4-4-0123456789
Bumps the ruby-deps group with 2 updates in the /ruby directory: simplecov and yard.
Updates simplecov from 1.0.1 to 1.0.3
Release notes
Sourced from simplecov's releases.
v1.0.3
What's Changed
- Bump ruby/setup-ruby from 1.316.0 to 1.318.0 by
@dependabot[bot] in simplecov-ruby/simplecov#1238- fix: memoise key parsing in RubyDataParser to fix combiner performance regression by
@oleksii-leonovin simplecov-ruby/simplecov#1239New Contributors
@oleksii-leonovmade their first contribution in simplecov-ruby/simplecov#1239Full Changelog: https://github.com/simplecov-ruby/simplecov/compare/v1.0.2...v1.0.3
v1.0.2
What's Changed
- Bump ruby/setup-ruby from 1.315.0 to 1.316.0 by
@dependabot[bot] in simplecov-ruby/simplecov#1229- Bump step-security/harden-runner from 2.19.4 to 2.20.0 by
@dependabot[bot] in simplecov-ruby/simplecov#1230Full Changelog: https://github.com/simplecov-ruby/simplecov/compare/v1.0.1...v1.0.2
Changelog
Sourced from simplecov's changelog.
1.0.3 (2026-07-26)
Bugfixes
- Generating a report no longer crashes when the coverage universe contains a module that shadows
#inspectwith an incompatible signature. Rendering a method coverage key's receiver callsto_s, and a singleton class'sto_srenders its attached object via#inspect— Liquid'sUtilsmodule definesinspect(value, max_depth = 2)as amodule_function, so any suite whose report included Liquid's files (typically a vendored bundle under the project root, which is why this surfaced only in CI) raisedArgumentErrorfrom the at_exit hook and lost its report. The exposure predates 1.0.2's key normalization, which only moved the call. Rendering now recovers by rebuilding the name fromModule#namevia bound methods, which user code cannot shadow, falling back to an address form that the existing normalization collapses. Theexternal_at_exitworkaround is no longer needed. Reported with an exemplary diagnosis by@bkuhlmann. See #1236.- Method coverage entries are now aggregated by source location alone, completing the aggregation introduced in 1.0.2 (which keyed on name and location). Ruby records one method entry per defined method, so a builder looping
container.each_key { |key| define_method(key) { ... } }produces an entry per generated name, all at the block's location — and every name whose generated wrapper no test happened to call showed as an uncovered method on a line with full line and branch coverage. A source location is the unit a file-based report can express, and regulardefs map one location to one name, so they are unaffected. The same identity is used when merging resultsets across processes. This also covers methods copied into refinements viaimport_methods, which Ruby records once per importing refinement at the shared module's original location, so exercising the method through any refinement now marks the shared definition covered and theskipworkaround for shared refinement modules can be dropped. Reported with exemplary diagnoses by@bkuhlmann. See #1234 and #1237.SimpleCov.formatterandSimpleCov.formattersnow accept formatter instances in addition to formatter classes, so constructor options can actually be passed — most notablySimpleCov::Formatter::HTMLFormatter.new(silent: true)to suppress the "Coverage report generated" status line. Previously SimpleCov unconditionally called.newon whatever was configured, so passing an instance crashed withNoMethodErrorat report time. See #1240.Performance
- Fix 5x performance regression on report combining (introduced in
1.0.0as a result of usingRipper#parsein a hot path) by adding parsed key memoisation toRubyDataParser.call.1.0.2 (2026-07-18)
Bugfixes
- The standalone
simplecovCLI's colorizing subcommands (report,uncovered,coverage,diff) no longer crash withNoMethodError: undefined method 'color'when run in a project without a.simplecovfile. The CLI deliberately loads onlysimplecov/clirather than the full library, soSimpleCov.colorwas undefined unless a dotfile load had incidentally defined it — and--no-colorwas the only workaround, since the documentedNO_COLORenv var was checked after the line that raised.Color.enabled?now treats missing configuration the same as its:autodefault and falls through toNO_COLOR/FORCE_COLOR/ TTY detection. Reported with an exemplary diagnosis by@hasghari. See #1231.- Branch tuples synthesized for tracked-but-unloaded files now match Ruby's
Coveragefor a safe-navigation call that takes a block. Forx&.foo { ... }(and the second link of a chain likex&.foo&.bar { ... }) the extractor keyed the branch on the call node's full source range, which extends through the attached block, whileCoverageends the range at the call itself — so a simulated entry merging with a real one produced a phantom, permanently-missed branch, the same failure mode as theelsiffix in 1.0.1. Reported with an exemplary diagnosis and a suggested fix by@alexdeng-mp. See #1233.- Prompted by the two reports above, an exhaustive differential audit of
StaticCoverageExtractoragainst Ruby'sCoverage— a fuzzing harness that runs thousands of generated programs through both and diffs the branch tuples, now part of the spec suite (opt-in viaSIMPLECOV_FUZZ=1) — surfaced and fixed four more mismatches of the same phantom-branch class. Conditions that are compile-time literals (if true,if 1, a ternary on a literal) are folded away by Ruby's compiler and no longer produce synthesized branches (while truestill does — loops are not folded). On Ruby 3.3, three legacy conventions now match: the body range of a do-while (begin ... end while), the location of empty branch arms (which on 3.3 depends on whether the construct is in value or void position), and one-line pattern matching (x => pattern/x in pattern), which emits a:casebranch on 3.3 and nothing on 3.4+. The audit also caught a crash on Ruby 3.3's stdlib Prism (0.19), which still exposes the else clause ofUnlessNode/CaseNode/CaseMatchNodeunder its pre-1.3 nameconsequent: the extractor raised internally and silently dropped simulated branch and method data for any file containingunless/elseor acasewith an empty arm, unless a newer prism gem happened to be installed.- As a defensive layer against any future extractor drift, merging now treats an actually-executed file's branch and method data as authoritative: when a resultset that merely tracked a file (with simulated, statically-derived tuples) merges with one from a process that really loaded it, the synthesized tuples are dropped rather than unioned. This contains any undiscovered mismatch to denominator inflation on files no process loaded, instead of phantom misses on fully-covered ones. Line coverage still combines from both sides, so tracked-but-unloaded files keep contributing to the line denominator as before.
- Method coverage no longer reports phantom uncovered methods for
define_method/define_singleton_methodblocks defined onto more than one receiver — e.g. a module'sincludedhook defining the same block on every including class. Ruby records one method entry per receiver, all pointing at the same source location, so any receiver whose copy was never called showed as an uncovered method on a line with 100% line coverage. Entries are now aggregated by (name, source location) with hit counts summed, and cross-process merging matches methods on the same source identity rather than on the receiver class. Reported with an exemplary diagnosis by@bkuhlmann. See #1234.- Branch coverage under
enable_coverage :evalno longer inflates denominators or reports phantom missed branches for templates compiled more than once — e.g. hanami-view compiles each template once per view class, and everyERB.new(...).resultis a fresh compile. Ruby'sCoverageemits a fresh set of branch entries per compile of the same file (nondeterministically through Ruby 4.0, consistently on current ruby master — see https://bugs.ruby-lang.org/issues/22203), each counting only the renders that flowed through that compile, so a side exercised under one compile appeared as a permanently-missed branch in another compile's entry at the same location, andignore_branches :implicit_elseswung the report wildly by stripping only the synthetic-else halves of the duplicates. Duplicated conditions are now aggregated by source location with arm counts summed. Reported with an exemplary diagnosis by@bkuhlmann. See #1235.
Commits
e9fddf0Bump version to 1.0.31bc8a8cbundle update0e6eae8fix: memoise key parsing in RubyDataParser to fix combiner performance regres...1a8a9baAccept formatter instances in formatter configuration3ef1068Bump ruby/setup-ruby from 1.316.0 to 1.318.0f33a574Assert engine-independent invariants for receiver name fallbacks3492da6Aggregate method coverage by source location alone2e60550Survive user code that breaks receiver name rendering803dcbcBump version to 1.0.2177b0ccRestore a clean Steep check for the post-1.0.1 code- Additional commits viewable in compare view
Updates yard from 0.9.44 to 0.9.45
Release notes
Sourced from yard's releases.
Release v0.9.45
- Use
@paramtypes to document generatedStruct.newandData.definemembers (#1684)- Add compatibility with RDoc 8
- Fix TypesExplainer parsing of types following Hash collections (#1688)
- Fix HTML generation for RBS constants without source values (#1686)
- Fix method redefinition warnings when loading YARD with Ruby warnings enabled (#1687)
- Improve sanitization of
yard serverrequest paths
Changelog
Sourced from yard's changelog.
0.9.45 - July 14th, 2026
- Use
@paramtypes to document generatedStruct.newandData.definemembers (#1684)- Add compatibility with RDoc 8
- Fix TypesExplainer parsing of types following Hash collections (#1688)
- Fix HTML generation for RBS constants without source values (#1686)
- Fix method redefinition warnings when loading YARD with Ruby warnings enabled (#1687)
- Improve sanitization of
yard serverrequest paths
Commits
2659ecdRelease: v0.9.452b467e0Create a gh-fix skill2842ba7Update changelog00fe9b1Refactor server sanitization logicc6fd371Use@paramtypes for Struct and Data members (#1695)d2a8883Merge remote-tracking branch 'origin/main' into fix/issue-1684-struct-data-pa...674d0cfFix parser method redefinition warnings (#1694)9483cd3Use param types for Struct and Data members12ed8b7Merge main into fix/issue-1687-method-redefined-warnings9b874e2Fix HTML generation for RBS constants- Additional commits viewable in compare view