Update bundler non-major dependencies to v1.193.0 - #980
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
renovate
Bot
force-pushed
the
renovate/bundler-minor-patch
branch
from
August 6, 2026 18:01
7f01ad1 to
08e7c5d
Compare
renovate
Bot
force-pushed
the
renovate/bundler-minor-patch
branch
from
August 8, 2026 08:43
08e7c5d to
4227dce
Compare
renovate
Bot
force-pushed
the
renovate/bundler-minor-patch
branch
from
August 10, 2026 19:48
4227dce to
5ebc624
Compare
renovate
Bot
force-pushed
the
renovate/bundler-minor-patch
branch
from
August 11, 2026 01:10
5ebc624 to
d2d7ac1
Compare
renovate
Bot
force-pushed
the
renovate/bundler-minor-patch
branch
from
August 12, 2026 03:30
d2d7ac1 to
34188f6
Compare
renovate
Bot
force-pushed
the
renovate/bundler-minor-patch
branch
from
August 13, 2026 00:43
34188f6 to
810d660
Compare
renovate
Bot
force-pushed
the
renovate/bundler-minor-patch
branch
from
August 13, 2026 17:45
810d660 to
1b95e8e
Compare
renovate
Bot
force-pushed
the
renovate/bundler-minor-patch
branch
from
August 16, 2026 06:11
1b95e8e to
9188ac0
Compare
renovate
Bot
force-pushed
the
renovate/bundler-minor-patch
branch
from
August 20, 2026 19:56
9188ac0 to
332998c
Compare
renovate
Bot
force-pushed
the
renovate/bundler-minor-patch
branch
from
August 21, 2026 18:49
332998c to
ef2c3e1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.192.0→1.193.01.24.6→1.25.02.6.7→2.6.91.88.2→1.89.02.36.0→2.37.04.46.0→4.47.06.6.2→6.7.06.6.2→6.7.01.0.3→1.1.12.9.5→2.9.63.26.2→3.26.3Release Notes
aws/aws-sdk-ruby (aws-sdk-lambda)
v1.193.0rmosolgo/graphql-ruby (graphql)
v2.6.9Compare Source
Security
v2.6.8Compare Source
New features
quirks_mode: true) #5699Bug fixes
Execution::Next: fix no-method error in mutations #5698rubocop/rubocop (rubocop)
v1.89.0Compare Source
New features
DelegatingMethodsoption toLint/DuplicateMethodsto register customdelegate-shaped methods. ([@bbatsov][])DisallowedCopsconfiguration option toStyle/DisableCopsWithinSourceCodeDirective. ([@hammadxcm][])AllowYARDCommentBlockSeparatoroption toLayout/LeadingCommentSpace. ([@koic][])Lint/DeprecatedReferencecop to detect references to methods and constants documented as@deprecated, powered by the project index. ([@bbatsov][])Lint/NameTypocop. ([@bbatsov][])Lint/UnusedPrivateMethodcop for project-wide dead-code detection via the project index (disabled by default). ([@bbatsov][])Style/DisableCopsWithinSourceCodeDirectiveimpossible to disable via directive comments when explicitly enabled withEnabled: true. ([@rafaelfranca][])textDocument/codeActionrequests in the built-in language server, so LSP clients that request code actions (Eglot, Helix, Flycheck, ...) can apply RuboCop's autocorrects, not only clients that read them off the published diagnostic. ([@bbatsov][])NewCopsin department configuration to enable pending cops per department, including cops added up to a specific version (e.g.Style: NewCops: '1.19'). ([@koic][])Layout/IndentationWidthandStyle/ClassAndModuleChildren. ([@ioquatix][], [@koic][])Bug fixes
Lint/ToEnumArgumentswhen explicit extra keyword arguments are passed (e.g.def m(x:); to_enum(:m, x: x, y: 1); end), which raisesArgumentErrorwhen the enumerator is used. ([@RedZapdos123][])Layout/HashAlignmentwhen usingEnforcedHashRocketStyle: tableand a hash key spans multiple lines. ([@dduugg][])Lint/UselessAssignmentwith modifier conditions. ([@bbatsov][])Lint/Voidwith setter methods. ([@bbatsov][])Naming/VariableNumberwhen using an empty symbol hash key. ([@koic][])Style/MutableConstantwithData.define. ([@bbatsov][])Style/MissingRespondToMissingwhenrespond_to_missing?is defined in a reopening of the class andUseProjectIndexis enabled. ([@bbatsov][])Lint/LiteralAsConditionwhen a literal condition has an empty branch. ([@koic][])Lint/UselessRuby2Keywordswhenruby2_keywordsis used with a symbol but no method definition is found. ([@koic][])Metrics/MethodLengthwhen a method contains a heredoc and__ENCODING__. ([@koic][])Style/ArrayIntersectcop when the block-based check callsmember?/include?without an explicit receiver. ([@dduugg][])Style/NegativeArrayIndexcop. ([@viralpraxis][])Style/RedundantFormatwhen a format string uses a positional argument number beyond the 64-bit range. ([@koic][])Style/RedundantFormatwhen the argument for a positional variable width is missing. ([@koic][])Lint/LiteralInInterpolation. ([@bbatsov][])Style/ArrayIntersectwhen using safe navigationnone?with a block. ([@koic][])Style/MultipleComparisonthat dropped an allowed method comparison appearing between the compared values. ([@bbatsov][])Style/RedundantFileExtensionInRequirethat produced invalid Ruby when a backslash preceded the.rbextension. ([@bbatsov][])Lint/Voidto no longer autocorrect a constant used in a void context, since removing it can change behavior through constant autoloading side effects. ([@bbatsov][])Lint/InheritExceptionwhenExceptionis inherited indirectly through a project class (UseProjectIndex). ([@bbatsov][])Lint/AmbiguousAssignmentwhen using attribute or index assignment. ([@sngsmz][])Layout/ClassStructurewhen class body elements are wrapped inbeginblocks. ([@koic][])Layout/ClassStructurewhen usingprivate_class_methodorpublic_class_methoddef modifiers. ([@koic][])Style/ArrayIntersectwhen the receiver ofinclude?in a block is not an array literal. ([@koic][])Style/MultilineIfThenwhen using the Prism parser engine and anelsifwithoutthenfollows a branch usingthenwith a body on the same line. ([@koic][])Lint/DuplicateMethodsfor anonymous classes (Class.new) passed as arguments to the same named-receiver method call (e.g.T.cast). EachClass.newblock is an independent class, so methods defined in different blocks should not be treated as duplicates. ([@rafaelfranca][])Style/RedundantConstantBaseinside namespaces when the constant provably resolves identically without::(UseProjectIndex). ([@bbatsov][])Style/LambdaandStyle/SymbolProcproducing a syntax error like->(x)(&:method)when both cops run onlambda { |x| x.method }. ([@koic][])UseProjectIndex). ([@bbatsov][])Layout/LineLengthautocorrection for endless methods with block bodies. ([@hervetatche][])Lint/ConstantReassignmentwhen a built-in constant name is assigned andUseProjectIndexis enabled. ([@bbatsov][])Style/ClassAndModuleChildrenignoringEnforcedStyleForClassesandEnforcedStyleForModules, and skip autocorrection when mixed per-type styles make the result ambiguous. ([@bbatsov][])Layout/MultilineMethodCallIndentationwhen a line has multiple chained calls before a single-line block. ([@hammadxcm][])Style/RedundantLineContinuationby verifying backslash removal against a reparse of the source instead of hand-written grammar rules. ([@bbatsov][])Naming/PredicatePrefixandNaming/AccessorMethodNamewhen the method overrides an ancestor method defined in the project (UseProjectIndex). ([@bbatsov][])Style/StaticClasswhen the class is subclassed elsewhere in the project (UseProjectIndex). ([@bbatsov][])Style/MethodCallWithArgsParenthesesomit_parenthesesstyle by verifying each omission by reparsing before registering an offense. ([@bbatsov][])Changes
Style/Documentationto accept a reopened class or module documented at another definition site whenUseProjectIndexis enabled. ([@bbatsov][])rubocop-i18nto suggested extensions. ([@tejasbubane][])executeCommandProviderand the supported code action kinds in the language server's capabilities, so clients can discover therubocop.formatAutocorrectsandrubocop.formatAutocorrectsAllcommands. ([@bbatsov][])AllCops/UseProjectIndexis enabled. ([@bbatsov][])Lint/AmbiguousBlockAssociationto detectdo...endblocks likely intended for enumerable methods in arguments. ([@hammadxcm][])Layout/LineLengthperformance on files with large collection literals. ([@koic][])Style/ConditionalAssignmentskip cases it cannot safely rewrite instead of emitting invalid code or erroring on unusual branch shapes. ([@bbatsov][])Style/IfUnlessModifieroffense message when the condition is part of a larger expression. ([@rafa-el-souza][])Style/DisableCopsWithinSourceCodeDirectiveperformance on largeAllowedCopsandDisallowedCopslists by matching directives against memoized sets instead of rebuilding an array lookup per comment. ([@corsonknowles][])Style/RedundantLineContinuationperformance on files with many adjacent string literals joined by line continuations. ([@koic][])Lint/DuplicateMethodsto detect duplicates across files whenUseProjectIndexis enabled. ([@bbatsov][])Style/IfUnlessModifier,Style/WhileUntilModifier,Style/GuardClause, and other modifier cops respectLayout/LineLengthexemptions (allowed patterns, cop directives, allowed URIs) when checking whether the modifier form fits on one line. ([@bbatsov][])Lint/SafeNavigationChainautocorrection as unsafe. ([@koic][])Lint/ConstantResolutionto report only genuinely ambiguous constants whenUseProjectIndexis enabled. ([@bbatsov][])Style/RedundantAssignmentoffenses when there are comments between assignment and reference. ([@lovro-bikic][])Style/ClassAndModuleChildrenautocorrection to consult the project index for the namespace kind and definition sites whenUseProjectIndexis enabled. ([@bbatsov][])Lint/MissingSuperto skip the constructor offense when the project index shows no ancestor definesinitialize(UseProjectIndex). ([@bbatsov][])Style/Copyrightto validateAutocorrectNoticeonly when autocorrection is requested (-a/-A), so plain inspection no longer raises a warning. ([@koic][])Layout/RedundantLineBreakto verify each correction by reparsing before registering an offense. ([@bbatsov][])Style/RedundantParenthesesto verify each correction by reparsing before registering an offense. ([@bbatsov][])Style/SoleNestedConditionalto only register an offense when its correction is verified to parse. ([@bbatsov][])rubocop/rubocop-rails (rubocop-rails)
v2.37.0Compare Source
Changes
[].freeze,{}.freeze) as:defaultvalue inRails/AttributeDefaultBlockValue. ([@kuboon][])Rails/HttpPositionalArgumentsperformance by checking forinclude Rack::Test::Methodsonce per file instead of once per HTTP call. ([@moberegger][])SeleniumHQ/selenium (selenium-webdriver)
v4.47.0=========================
getsentry/sentry-ruby (sentry-rails)
v6.7.0Compare Source
New Features ✨
log_byteandtrace_metric_byteoutcomes by @sl0thentr0py in #2997config.hub_isolation_levelwhich can be set to:fiberor:thread. Use this in case you use Fiber based servers like Falcon by @SeanLF in #3018set_attributeapi by @sl0thentr0py in #2998Bug Fixes 🐛
Rails
send_default_piiby @solnic in #3043Rails.error.set_contextis not lost by @solnic in #3024Other
hub_isolation_level = :fiberby @SeanLF in #3036Internal Changes 🔧
simplecov-ruby/simplecov (simplecov)
v1.1.1Compare Source
==================
Enhancements
schemas/directory, dropping 32 KB unpacked from every install. Nothing read it at runtime: the JSON formatter points consumers at the canonical schema URL on GitHub, and the schema specs read from the repository.Bugfixes
at_exithooks run. rspec-conductor closes each worker's pipes as soon as the worker has sent its run summary, and emitting SimpleCov's status line probesColor.enabled?, whoseIO#tty?call raisedIOErroron the closed stream. That exception aborted the remaining exit tasks, so the HTML and JSON reports were written but the minimum and maximum coverage checks silently never ran, and neither.last_run.jsonnor the.report_stampdeferral marker was written. A closed stream now counts as not a tty, and the status line and the violation report are dropped rather than cancelling the checks that follow. rspec-conductor is also named in the parallel adapter documentation and covered end to end now, since it follows theTEST_ENV_NUMBERandPARALLEL_TEST_GROUPSconvention the generic adapter already recognizes. See #1156.SimpleCov.collateno longer depends on load order forCoverage.line_stub.SimulateCoverageandResultAdapterboth call it without requiring the coverage library. A normal run loads that library while starting tracking, but a collate-only process never starts tracking, so the constant resolved only by luck through a criterion-support check that happened to run first. Any reordering of that path would have turned into aNameErrorout ofSimpleCov.collate, so each file now requires what it uses.v1.1.0Compare Source
==================
Breaking Changes
simplecov report --jsonnow emits{"total": {...}, "groups": {...}}instead of flattening the overall"All Files"entry and configured groups into one object. The old shape silently overwrote the overall totals when a user group was also namedAll Files; the text report now labels that user sectionAll Files (group)as well.Ungroupedis now reserved for the implicit group of files that match no configured group. Defining an explicit group with that name previously caused SimpleCov to overwrite it during result processing and silently discard its matched files; rename such a group toOtheror another distinct label. Group names are also normalized when configured: aSymbolname (group :Models) now means the same group as itsStringspelling (sogroup :Ungroupedis rejected like the string form, and a symbol-named group can no longer produce a duplicate JSON key next to a string-named one), and a name that is neither aStringnor aSymbolraisesSimpleCov::ConfigurationError.index.html. The viewer's JavaScript and CSS are inlined into the compiled template at build time, and the coverage data is embedded at report time (with<escaped in the payload so embedded source text cannot terminate the surrounding<script>element), socoverage/contains justindex.htmlandcoverage.json. A single file can be mailed, uploaded as a non-zipped GitHub Actions run artifact (actions/upload-artifactwitharchive: false, viewable directly from the run page), or copied anywhere without sibling files, and the report can no longer be read mid-write in a torn state whereindex.html,coverage_data.js, andapplication.jscome from different runs — the whole report updates in one atomic rename. The sibling files the formatter previously wrote (coverage_data.js,application.js,application.css, and the three favicon PNGs) are gone; anything scripted against that layout should readcoverage.json(the sanctioned data artifact, unchanged) instead ofcoverage_data.js. Formatting also deletes those six names from the output directory when an earlier version left them there, so an upgraded project'scoverage/doesn't keep a stalecoverage_data.jsaround forsimplecov serveto serve. This restores single-file reports to the 1.0 line — the pre-1.0simplecov-htmlformatter offered them via theSIMPLECOV_INLINE_ASSETSenvironment variable, which the 1.0 client-side rendering rewrite dropped — and makes them the default and only mode, with no environment variable or configuration flag. See #1241.Enhancements
aria-pressed.simplecov servenow handles each connection on its own thread with a read timeout, so a stalled connection (browsers routinely open speculative sockets that send no bytes) no longer blocks every other request. It also works on JRuby and TruffleRuby, answers malformed request lines with a 400 instead of an empty response, and prints a bracketed URL for IPv6 hosts.docs/directory (Configuration, Parallelism, Formatters, CLI, Troubleshooting) alongside the changelogs, contributing guide, and code of conduct, with the issue template tucked into.github/. This changelog now lives atdocs/Changelog.mdand the gem'schangelog_urimetadata follows it. Nothing underdocs/ships in the gem, which also stops packaging the olddoc/*link lists. The alternate formatters catalog was rebuilt against RubyGems: twenty formatters join the twelve that were listed, organized by output type..resultset.jsonis now written as compact JSON instead of pretty-printed. It is a machine-read cache that every parallel worker rewrites wholesale, and pretty printing nearly doubled the bytes written, read back, and parsed on each store-merge round trip — on a 100,000-file project the file shrinks from 89MB to 51MB and serialization halves. Any JSON parser reads the compact form; pipe it throughjqif you need to inspect it by eye.SimpleCov.collatetakes a newprocesses:argument that fans the resultset merge out across that many forked worker processes. This addresses the wall clock of a large CI matrix's collate step, where the collating process reads, parses and folds hundreds of resultsets in sequence and nearly all the time goes into that fold: merging 160 resultsets covering 1,836 files on a 14-core machine took 4.53s at the defaultprocesses: 1and 1.35s across 8 workers. The report is identical either way, not merely equivalent — each worker folds a contiguous slice of the file list and the collating process folds the slices back in order, so the resultsets are visited in the same order a single-process merge visits them. The fan-out lives in a newSimpleCov::ParallelResultMerger, whoseabsorb_resultsmirrorsResultMerger.absorb_results, splitting that fold across workers and unioning the tracked paths each one saw.processesdefaults to theSIMPLECOV_CONCURRENCYenvironment variable (1 when unset), so one rake task can serve CI runners of different sizes without being edited, and an explicit argument wins over the variable. It never forks at 1, so existingcollatecalls are unaffected; it is deliberately not clamped to the core count nor gated on a minimum number of resultsets — only the caller knows what a collate job is allowed to use — asking for more processes than there are result files just gives one file per process, and anything below 1 is taken as 1. Merging falls back to the collating process, with the same report and no error, when the runtime cannot fork (JRuby, TruffleRuby, Windows), when there is only one resultset, or when a worker dies. Abenchmarks/collate.rbharness (PROCESSES=N) measures the phases against a saved baseline.Bugfixes
Two concurrent runners sharing a command name no longer lose the later writer's coverage for files both carried. A live result serializes its criterion tables under Ruby's Symbol keys while entries parsed back from
.resultset.jsoncarry Strings, and the combiners read only Strings, so the merge that exists to prevent an empty parent process from clobbering a subprocess's data (#581) silently contributed nothing from the incoming side. Criterion keys are now stringified at serialization time so the stored and live shapes always match.Merging or collating stored resultsets with method coverage enabled no longer crashes on singleton methods defined on instances.
def obj.greetrecords its receiver as the nested inspect form#<Class:#<Object:0x...>>, and the parser that turns JSON-stringified method keys back into tuples stopped at the first closing angle bracket, raisingArgumentErrorout of the merge. The quoting now handles nested segments.That same clobber-prevention backstop now stands down for failed child runs too. It keyed its freshness check on
.last_run.json, which only fully successful runs write, so a Rakefile parent overwrote the child's report exactly when the child's tests or coverage checks had failed and the report mattered most. Formatting now touches acoverage/.report_stampmarker no matter how the run ends, and the backstop accepts either file as evidence of a fresher report.A
# simplecov:disable lineblock around a method no longer silently removes that method from method-coverage totals. The method skip fell back to asking whether all of the method's lines were skipped, so the line-only directive (the README's own example) leaked into the method criterion. Deprecated# :nocov:chunks still exclude methods, now routed explicitly like every other criterion.A directive reason that merely starts with a category name no longer narrows the directive.
# simplecov:disable linear algebra reasonsparsed as categorylinewith the rest as reason, disabling only line coverage where the documented behavior for unrecognised text is to over-disable everything. The category list now requires a word boundary.Per-group minimums configured with a Symbol group name are enforced again.
group :Modelsnormalizes the name to a String butminimum_per_group 95, only: :Models(and the deprecatedminimum_coverage_by_group) stored the Symbol untouched, so the check-time lookup missed and warned that group "Models" doesn't exist while listing that very name as available.simplecov diffmatches its documentation:--threshold Nis inclusive (a file that moved exactly N% is listed), removed files no longer trip--fail-on-drop(deleting a covered file is not a regression), and sub-epsilon float noise no longer fails the gate on a row shown only for its gains.Tracked-but-unloaded files with multi-statement parenthesized conditions no longer synthesize phantom branches. CRuby folds
if (1; 2)by its last expression when the compiler can eliminate every leading statement, and the rules differ per version (parse.y eliminates only pure literals, 3.3 also eliminates side-effect-free reads and containers of them, 3.4+ narrows containers to fully static literals). The static extractor now mirrors each compiler exactly, verified against realCoverageoutput on every supported Ruby.require "simplecov"no longer raises whenHOMEis set but empty, as some container and CI images do. The global-config loader treats an emptyHOMElike an unset one.simplecov merge,report, andcoverageprint one-line errors instead of backtraces on more bad inputs: a directory or unreadable file passed tomerge, valid JSON whosetotalorgroupshas the wrong type, and a per-file entry that is not an object.An empty or non-numeric
PARALLEL_TEST_GROUPSno longer makes the reporting worker expect zero siblings and skip the wait for their results; unusable values now mean one worker, and non-positive values are rejected too.Simulating tracked files became tolerant of unreadable paths: a
track_filesglob that sweeps up a directory named like a Ruby file or a permission-denied entry now treats it as empty instead of crashing the merge or report step. Resultset files truncated to a single byte now warn like other corruption instead of reading as quietly empty, a hand-edited.last_run.jsonwith a non-numeric percentage no longer raises out of the at_exit hook, and the missing-group notice respectsprint_errorsand survives-W0like every other enforcement message.coverage :eval, minimum: 100now explains that thresholds are unsupported for:evalinstead of claiming the criterion itself is invalid, andsimplecov clean --dry-runcounts dotfiles such as.resultset.jsonin its entry count.Source files containing invalid UTF-8 bytes no longer crash report generation. A file with no encoding magic comment is read as UTF-8, and a stray high-bit byte (a Latin-1 comment, say) previously raised
ArgumentError: invalid byte sequence in UTF-8from the first regex that touched the line — the shebang check or the lines classifier — taking the whole report down. Invalid bytes are now replaced with the Unicode replacement character at load time, so every line leaves the source loader as valid UTF-8 and the rest of the pipeline (classification, JSON embedding, the HTML viewer payload) works from sanitized text.Generated coverage artifacts now share one collision-safe atomic writer. Concurrent threads no longer reuse the same process-ID temporary name, and the JSON formatter and
simplecov mergeno longer expose partially written documents to readers; existing Unix permission bits and each artifact's historical byte format are preserved.Configuration blocks no longer install temporary
method_missinghooks on their caller or copy caller instance variables into SimpleCov. Those hooks leaked DSL commands across threads, broke overlapping and nested evaluations, rejected frozen or immediate-value owners, changedrequire_relativeand binding behavior, and could mask an original exception during cleanup. See the parameterized-block migration under Breaking Changes.Non-final parallel workers now stop after storing their own result instead of reading and caching a partial merge. A single ownership predicate selects the adapter's final process for merging, formatting, threshold checks, and
.last_run.json; explicitSimpleCov.collateremains authoritative regardless of worker identity.simplecov servenow builds a missingindex.htmlfromcoverage.jsonand fails before binding when neither artifact exists or the JSON is invalid. An existing self-contained report remains usable even if its optional sidecar JSON was later removed or damaged.Coverage JSON consumers now reject malformed syntax, invalid UTF-8, and non-object roots through one shared parser.
HTMLFormatter#format_from_jsonalso validates the viewer's required metadata, coverage flags, enabled totals, groups, and source arrays before creating or replacing its output.HTML reports now render correctly when line coverage is disabled. Branch-only and method-only runs use their configured primary criterion for tabs, color bands, sorting, tables, filters, and source summaries instead of crashing while dereferencing absent line statistics.
HTML reports now disambiguate source files whose truncated SHA-1 identifiers collide. Existing fragments stay unchanged for non-colliding files, while colliding links receive deterministic suffixes and always open the intended source.
SimpleFormatternow prints each file's configured primary coverage percentage instead of always printing line coverage. Branch-, method-, and oneshot-primary reports now match the documented primary-criterion behavior; oneshot coverage correctly reads the normalized line statistics.Frontend builds now use the esbuild binary installed from
html_frontend/bun.lockinstead of whichever global version happens to be onPATH. CI recompiles the self-contained HTML template and fails on a diff, preventing dependency updates or source changes from leaving the checked-in report asset stale.Frontend asset compilation now fails when esbuild rejects the CSS. The rake helper previously ignored the minifier subprocess's exit status and continued with empty output, allowing a successful build to replace the checked-in report template with a stylesheet-free page.
Read-only CLI commands now handle unreadable, malformed, and structurally unusable
coverage.jsoninputs consistently.coverage,report,uncovered, and both inputs todiffreturn status 1 with one command-specific diagnostic instead of raising a JSON parser backtrace;uncoveredno longer mislabels its input errors assimplecov report.Sorting one HTML report group no longer corrupts the next group's first sort. Every table previously shared the same fallback sort-state key because the tables have no ids, so clicking a column already selected in another group reversed unsorted rows while displaying an ascending indicator; sort state is now scoped to each table element.
The HTML report now gives the overall file list and configured groups distinct typed identities, so a user-defined group named
All Filesno longer shares the overall section's DOM id and tab target. Both identically labelled tabs now remain present and open their own file lists.HTML group tabs now remain distinct when one group name contains punctuation and another contains that character's hexadecimal escape spelling (for example,
By/groupandBy_2f_group). Literal underscores are now escaped because underscores delimit encoded characters; previously both names produced the same DOM id and one tab opened the wrong file list.Enabling ordinary line coverage after oneshot-line coverage no longer passes both incompatible modes to Ruby's
Coverage.start, which raisedRuntimeError: cannot enable lines and oneshot_lines simultaneously. The two modes now replace each other in either direction, with the last request winning, and replacing the active primary criterion resets it to an enabled default.Branch and method tuples are no longer synthesized for code the compiler eliminates. 1.0.2 stopped synthesizing a branch for a constant-folded condition itself (
if false,if true, a ternary on a literal), but everything nested inside the dead arm was still visited, so anif false ... endblock containing conditionals or method definitions — a common way to disable code — gave a tracked-but-unloaded file tuples Ruby'sCoveragenever emits: phantom, permanently-missed branches and phantom uncovered methods, the same unmergeable-tuple failure mode as #1226 / #1233. The extractor now descends only into the arm the compiler keeps, so a dead arm's entire subtree (nested conditionals, loops, safe navigation, anddefs alike) emits nothing, while the live arm's contents — and the survivingelsifchain of a falsyif— are tracked exactly asCoveragetracks them. The folding table also gains the three literals it was missing:__LINE__,__ENCODING__, and a stabby lambda (->) fold as conditions too, while their lookalikes__FILE__and alambdacall do not and are still tracked. And the fold's paren transparency now matches the compiler's, which is not universal:if (1)folds likeif 1, but(nil),("x"), and(-> {})keep their real branch the moment parentheses wrap them (for the string, this mismatch predates these changes).A merged report no longer shows 100% branch and method coverage for a tracked file that no process ever loaded. `Sourc
Configuration
📅 Schedule: (UTC)
* 0-4,22-23 * * 1-5)* * * * 0,6)🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.