Skip to content

Migrate the test suite to minitest 6, fix the Volume version fallback, and regenerate the RuboCop baseline - #556

Open
tas50 wants to merge 3 commits into
fog:masterfrom
tas50:fix-minitest-6-global-expectations
Open

Migrate the test suite to minitest 6, fix the Volume version fallback, and regenerate the RuboCop baseline#556
tas50 wants to merge 3 commits into
fog:masterfrom
tas50:fix-minitest-6-global-expectations

Conversation

@tas50

@tas50 tas50 commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Both workflows have been red since CI was added (run 33117772179): rake tests:mock reported 645 errors, rake tests:unit another 4, and Linting 108 offenses. This gets everything green on 3.3, 3.4, 4.0 and head.

Why the tests broke

minitest 6 removed both of the class Object monkeypatches that minitest 5 installed, and the suite leaned on each:

  • minitest/spec no longer does class Object; include Minitest::Expectations; end, so a bare foo.must_equal bar raises NoMethodError. _(foo).must_equal bar goes through Minitest::Expectation instead.
  • minitest/mock was extracted into the standalone minitest-mock gem, taking Object#stub with it.

Every one of the 649 failures was a NoMethodError raised before the assertion ran — which is also why the run reported only 31 assertions. Nothing was actually being verified.

Commit 1 — migrate the test suite

  • Wrap all 1295 expectation receivers in _(...) across test/, spec/ and unit/. This is compatible with minitest 5.11+ as well, so it needs no version pin. fog-core's custom must_match_schema (registered via infect_an_assertion) keeps working unchanged in this form.
  • Add the minitest-mock development dependency and require it from unit/test_helper.rb.
  • Replace must_equal nil with must_be_nil; minitest rejects the former, which the NoMethodErrors had been hiding.
  • Fix a latent bug in spec/volume_spec.rb: must_raise(Excon::Errors::BadRequest, /message/) was never valid, since minitest splats those arguments straight into a rescue clause and a Regexp there is a TypeError. That error escaped the begin, ran the ensure early, and left the ensure's own failure reported in place of the real one.
  • Add rubocop-minitest and enable Minitest/GlobalExpectations so the explicit form does not regress. The rest of the Minitest department stays off, as it is not part of the baseline.

The mechanical rewrite was done with a Prism-based script rather than by hand or by regex, because the receiver has to be wrapped as a whole (@instance.reload.state.must_equal, multi-line proc do ... end.must_raise). Worth noting that RuboCop's own Minitest/GlobalExpectations autocorrect is not safe here: it rewrites proc do ... end.must_raise X to _ { proc do ... end }.must_raise X, which passes the outer block to must_raise. Evaluating it just constructs a proc, nothing raises, and the assertion silently stops testing anything.

Commit 2 — fix the Volume version fallback

Fog::OpenStack::Volume.new documents that it returns a V3, V2 or V1 service, and implemented that as:

Fog::OpenStack::Volume::V3.new(args) \
|| Fog::OpenStack::Volume::V2.new(args) \
|| Fog::OpenStack::Volume::V1.new(args)

Fog::Service.new never returns nil or false, so the || arms were dead code. On a cloud that does not advertise a volumev3 endpoint, V3.new raises ServiceTypeError and the fallback meant to handle exactly that case never runs — the caller gets an exception instead of the V2 or V1 service the cloud does offer.

This rescues ServiceTypeError and tries each version in turn, re-raising the last error when no volume service is advertised at all. unit/volume_test.rb covers the four outcomes with the versioned classes stubbed, so negotiation is exercised without a token endpoint; both fallback cases fail against the previous implementation.

spec/volume_spec.rb no longer runs the shared examples against the version-negotiating entry point. Negotiation authenticates once per version it tries, and those cassettes (recorded in 2016, advertising only "type": "volume") contain a single token request each, so they cannot represent it. V1 and V2 stay covered there.

Commit 3 — regenerate the RuboCop baseline

The 108 Linting offenses were not new code. Gemfile.lock is not committed and the rubocop development dependency is unconstrained, so every CI run resolves the newest RuboCop; when a release adds cops, offenses appear in code that has not changed and the baseline stops matching. All 108 fall into four cops that postdate the last baseline: Style/CollectionCompact, Style/HashSlice, Style/NumericPredicate and Style/SafeNavigation.

Regenerated with the same flags recorded in the file header:

rubocop --auto-gen-config --no-exclude-limit --no-auto-gen-timestamp

This also drops the obsolete Lint/UriEscapeUnescape entry, which stopped being needed when URI.encode was replaced in e51026e. Minitest/GlobalExpectations is not suppressed, so it still guards the explicit expectation form.

Note this will recur on future RuboCop releases. Constraining the rubocop dependency (or committing a lockfile for CI) would make the Linting job reproducible; happy to add that here or separately if you'd like.

Verification

$ bundle exec rake
759 runs, 733 assertions, 0 failures, 0 errors, 7 skips   # tests:mock
101 runs, 601 assertions, 0 failures, 0 errors, 10 skips  # tests:spec
 57 runs,  60 assertions, 0 failures, 0 errors, 0 skips   # tests:unit

$ bundle exec rubocop
1370 files inspected, no offenses detected

tas50 added 2 commits August 28, 2026 08:46
minitest 6 removed both of the `class Object` monkeypatches that minitest 5
installed, and the suite depended on each of them:

  * `minitest/spec` no longer includes `Minitest::Expectations` into Object,
    so a bare `foo.must_equal bar` raises NoMethodError. The explicit
    `_(foo).must_equal bar` form resolves through `Minitest::Expectation`
    instead, and works on minitest 5.11+ and 6.x alike.
  * `minitest/mock` was extracted into the standalone minitest-mock gem,
    taking `Object#stub` with it.

Together these left `rake tests:mock` with 645 errors and `rake tests:unit`
with 4, every one of them a NoMethodError rather than a real assertion.

  * Wrap all 1295 expectation receivers in `_(...)` across test/, spec/ and
    unit/. `must_match_schema`, which fog-core registers via
    `infect_an_assertion`, keeps working unchanged in this form.
  * Add the minitest-mock development dependency and require it from
    unit/test_helper.rb for `Object#stub`.
  * Replace `must_equal nil` with `must_be_nil`. minitest rejects the former,
    which the NoMethodErrors had been masking.
  * Split the `must_raise(Excon::Errors::BadRequest, /message/)` call in
    spec/volume_spec.rb into an exception assertion and a message assertion.
    minitest splats those arguments into a `rescue` clause, so the Regexp
    raised a TypeError; that escaped the `begin`, ran the `ensure` early and
    left its failure reported in place of the real one.
  * Add rubocop-minitest and enable Minitest/GlobalExpectations so the
    explicit form does not regress. The rest of the Minitest department stays
    off, as it is not part of the current baseline.
  * Fix the .gitignore entry for the generated test/lorem.txt fixture.

`rake tests:mock` and `rake tests:unit` now pass, and RuboCop reports no new
offenses against the existing baseline.

Signed-off-by: Tim Smith <tsmith84@proton.me>
Fog::OpenStack::Volume.new documents that it returns a V3, V2 or V1 service,
"choosing the V3 by default", and implemented that as:

    Fog::OpenStack::Volume::V3.new(args) \
    || Fog::OpenStack::Volume::V2.new(args) \
    || Fog::OpenStack::Volume::V1.new(args)

Fog::Service.new never returns nil or false, so the `||` arms were dead code.
When the catalog does not advertise a "volumev3" endpoint, V3.new raises
Fog::OpenStack::Auth::Catalog::ServiceTypeError and the fallback meant to
handle exactly that case never runs, leaving the caller with an exception
rather than the V2 or V1 service the cloud does offer.

Rescue ServiceTypeError and try each version in turn, re-raising the last
error when the catalog advertises no volume service at all.

unit/volume_test.rb covers the four outcomes, stubbing the versioned classes
so the negotiation is exercised without a token endpoint. Both fallback cases
fail against the previous implementation.

spec/volume_spec.rb no longer runs the shared examples against the
version-negotiating entry point. Negotiation authenticates once per version it
tries, and those cassettes recorded a single token request each, so they
cannot represent it. V1 and V2 stay covered there.

Signed-off-by: Tim Smith <tsmith84@proton.me>

@houndci-bot houndci-bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some files could not be reviewed due to errors:

.rubocop.yml: Layout/EmptyLineAfterGuardClause has the wrong namespace - shou...
.rubocop.yml: Layout/EmptyLineAfterGuardClause has the wrong namespace - should be Style
.rubocop.yml: Layout/LineLength has the wrong namespace - should be Metrics
Warning: unrecognized cop Gemspec/DevelopmentDependencies found in .rubocop.yml
Warning: unrecognized cop Gemspec/RequireMFA found in .rubocop.yml
Warning: unrecognized cop Layout/ArgumentAlignment found in .rubocop.yml
Warning: unrecognized cop Layout/EmptyLinesAfterModuleInclusion found in .rubocop.yml
Warning: unrecognized cop Layout/FirstArgumentIndentation found in .rubocop.yml
Warning: unrecognized cop Layout/FirstArrayElementIndentation found in .rubocop.yml
Warning: unrecognized cop Layout/FirstHashElementIndentation found in .rubocop.yml
Warning: unrecognized cop Layout/HashAlignment found in .rubocop.yml
Warning: unrecognized cop Layout/LeadingEmptyLines found in .rubocop.yml
Warning: unrecognized cop Layout/LineContinuationLeadingSpace found in .rubocop.yml
Warning: unrecognized cop Layout/LineContinuationSpacing found in .rubocop.yml
Warning: unrecognized cop Layout/LineEndStringConcatenationIndentation found in .rubocop.yml
Warning: unrecognized cop Lint/AmbiguousOperatorPrecedence found in .rubocop.yml
Warning: unrecognized cop Lint/ConstantDefinitionInBlock found in .rubocop.yml
Warning: unrecognized cop Lint/DuplicateBranch found in .rubocop.yml
Warning: unrecognized cop Lint/EmptyBlock found in .rubocop.yml
Warning: unrecognized cop Lint/EmptyClass found in .rubocop.yml
Warning: unrecognized cop Lint/EmptyFile found in .rubocop.yml
Warning: unrecognized cop Lint/RedundantCopDisableDirective found in .rubocop.yml
Warning: unrecognized cop Lint/SuppressedException found in .rubocop.yml
Warning: unrecognized cop Lint/SymbolConversion found in .rubocop.yml
Warning: unrecognized cop Lint/UselessMethodDefinition found in .rubocop.yml
Warning: unrecognized cop Naming/MethodParameterName found in .rubocop.yml
Warning: unrecognized cop Naming/PredicateMethod found in .rubocop.yml
Warning: unrecognized cop Naming/RescuedExceptionsVariableName found in .rubocop.yml
Warning: unrecognized cop Style/AccessorGrouping found in .rubocop.yml
Warning: unrecognized cop Style/BisectedAttrAccessor found in .rubocop.yml
Warning: unrecognized cop Style/ClassEqualityComparison found in .rubocop.yml
Warning: unrecognized cop Style/DirectiveScope found in .rubocop.yml
Warning: unrecognized cop Style/DocumentDynamicEvalDefinition found in .rubocop.yml
Warning: unrecognized cop Style/EnvHome found in .rubocop.yml
Warning: unrecognized cop Style/ExplicitBlockArgument found in .rubocop.yml
Warning: unrecognized cop Style/FetchEnvVar found in .rubocop.yml
Warning: unrecognized cop Style/FileOpen found in .rubocop.yml
Warning: unrecognized cop Style/FileWrite found in .rubocop.yml
Warning: unrecognized cop Style/HashAsLastArrayItem found in .rubocop.yml
Warning: unrecognized cop Style/HashConversion found in .rubocop.yml
Warning: unrecognized cop Style/HashEachMethods found in .rubocop.yml
Warning: unrecognized cop Style/MapIntoArray found in .rubocop.yml
Warning: unrecognized cop Style/MissingRespondToMissing found in .rubocop.yml
Warning: unrecognized cop Style/NegatedIfElseCondition found in .rubocop.yml
Warning: unrecognized cop Style/OptionalBooleanParameter found in .rubocop.yml
Warning: unrecognized cop Style/RedundantConstantBase found in .rubocop.yml
Warning: unrecognized cop Style/RedundantCurrentDirectoryInPath found in .rubocop.yml
Warning: unrecognized cop Style/RedundantFileExtensionInRequire found in .rubocop.yml
Warning: unrecognized cop Style/RedundantPercentQ found in .rubocop.yml
Warning: unrecognized cop Style/RedundantRegexpArgument found in .rubocop.yml
Warning: unrecognized cop Style/RedundantRegexpEscape found in .rubocop.yml
Warning: unrecognized cop Style/SoleNestedConditional found in .rubocop.yml
Warning: unrecognized cop Style/StringConcatenation found in .rubocop.yml
Warning: unrecognized cop Style/SuperArguments found in .rubocop.yml
Warning: unrecognized cop Style/SuperWithArgsParentheses found in .rubocop.yml
Warning: unrecognized cop Style/YAMLFileRead found in .rubocop.yml
Warning: unrecognized cop plugins found in .rubocop.yml
Warning: unrecognized cop Minitest found in .rubocop.yml
Warning: unrecognized cop Minitest/GlobalExpectations found in .rubocop.yml
Warning: unrecognized parameter AllCops:NewCops found in .rubocop.yml
Warning: unrecognized parameter Metrics/BlockLength:IgnoredMethods found in .rubocop.yml
no implicit conversion of String into Integer
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/config.rb:294:in `block in make_excludes_absolute'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/config.rb:268:in `each_key'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/config.rb:292:in `make_excludes_absolute'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/config.rb:239:in `check'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/config.rb:231:in `create'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/config_loader.rb:54:in `load_file'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/config_loader.rb:83:in `configuration_from_file'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/config_store.rb:44:in `for'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/cli.rb:181:in `apply_default_formatter'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/cli.rb:40:in `run'
/home/linters/.bundle/gems/rubocop-0.54.0/bin/rubocop:13:in `block in '
/usr/local/lib/ruby/2.6.0/benchmark.rb:308:in `realtime'
/home/linters/.bundle/gems/rubocop-0.54.0/bin/rubocop:12:in `'
/home/linters/.bundle/bin/rubocop:23:in `load'
/home/linters/.bundle/bin/rubocop:23:in `'
/usr/local/lib/ruby/2.6.0/bundler/cli/exec.rb:74:in `load'
/usr/local/lib/ruby/2.6.0/bundler/cli/exec.rb:74:in `kernel_load'
/usr/local/lib/ruby/2.6.0/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/ruby/2.6.0/bundler/cli.rb:463:in `exec'
/usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor.rb:387:in `dispatch'
/usr/local/lib/ruby/2.6.0/bundler/cli.rb:27:in `dispatch'
/usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor/base.rb:466:in `start'
/usr/local/lib/ruby/2.6.0/bundler/cli.rb:18:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-1.17.2/exe/bundle:30:in `block in '
/usr/local/lib/ruby/2.6.0/bundler/friendly_errors.rb:124:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-1.17.2/exe/bundle:22:in `'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `'

The Linting workflow has been failing on master with 108 offenses, none of
which are new code. Gemfile.lock is not committed and the rubocop development
dependency is unconstrained, so every CI run resolves the newest RuboCop. When
a release adds cops, offenses appear in code that has not changed and the
baseline no longer matches.

The 108 fall entirely into four cops that postdate the last baseline:
Style/CollectionCompact, Style/HashSlice, Style/NumericPredicate and
Style/SafeNavigation.

Regenerated with the same flags recorded in the file header:

    rubocop --auto-gen-config --no-exclude-limit --no-auto-gen-timestamp

This also drops the now-obsolete Lint/UriEscapeUnescape entry, which became
unnecessary when URI.encode was replaced in e51026e.

`bundle exec rubocop` now reports no offenses. Minitest/GlobalExpectations is
not suppressed, so it still guards the explicit expectation form.

Signed-off-by: Tim Smith <tsmith84@proton.me>

@houndci-bot houndci-bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some files could not be reviewed due to errors:

.rubocop.yml: Layout/EmptyLineAfterGuardClause has the wrong namespace - shou...
.rubocop.yml: Layout/EmptyLineAfterGuardClause has the wrong namespace - should be Style
.rubocop.yml: Layout/LineLength has the wrong namespace - should be Metrics
Warning: unrecognized cop Gemspec/DevelopmentDependencies found in .rubocop.yml
Warning: unrecognized cop Gemspec/RequireMFA found in .rubocop.yml
Warning: unrecognized cop Layout/ArgumentAlignment found in .rubocop.yml
Warning: unrecognized cop Layout/EmptyLinesAfterModuleInclusion found in .rubocop.yml
Warning: unrecognized cop Layout/FirstArgumentIndentation found in .rubocop.yml
Warning: unrecognized cop Layout/FirstArrayElementIndentation found in .rubocop.yml
Warning: unrecognized cop Layout/FirstHashElementIndentation found in .rubocop.yml
Warning: unrecognized cop Layout/HashAlignment found in .rubocop.yml
Warning: unrecognized cop Layout/LeadingEmptyLines found in .rubocop.yml
Warning: unrecognized cop Layout/LineContinuationLeadingSpace found in .rubocop.yml
Warning: unrecognized cop Layout/LineContinuationSpacing found in .rubocop.yml
Warning: unrecognized cop Layout/LineEndStringConcatenationIndentation found in .rubocop.yml
Warning: unrecognized cop Lint/AmbiguousOperatorPrecedence found in .rubocop.yml
Warning: unrecognized cop Lint/ConstantDefinitionInBlock found in .rubocop.yml
Warning: unrecognized cop Lint/DuplicateBranch found in .rubocop.yml
Warning: unrecognized cop Lint/EmptyBlock found in .rubocop.yml
Warning: unrecognized cop Lint/EmptyClass found in .rubocop.yml
Warning: unrecognized cop Lint/EmptyFile found in .rubocop.yml
Warning: unrecognized cop Lint/RedundantCopDisableDirective found in .rubocop.yml
Warning: unrecognized cop Lint/SuppressedException found in .rubocop.yml
Warning: unrecognized cop Lint/SymbolConversion found in .rubocop.yml
Warning: unrecognized cop Lint/UselessMethodDefinition found in .rubocop.yml
Warning: unrecognized cop Naming/MethodParameterName found in .rubocop.yml
Warning: unrecognized cop Naming/PredicateMethod found in .rubocop.yml
Warning: unrecognized cop Naming/RescuedExceptionsVariableName found in .rubocop.yml
Warning: unrecognized cop Style/AccessorGrouping found in .rubocop.yml
Warning: unrecognized cop Style/BisectedAttrAccessor found in .rubocop.yml
Warning: unrecognized cop Style/ClassEqualityComparison found in .rubocop.yml
Warning: unrecognized cop Style/CollectionCompact found in .rubocop.yml
Warning: unrecognized cop Style/DirectiveScope found in .rubocop.yml
Warning: unrecognized cop Style/DocumentDynamicEvalDefinition found in .rubocop.yml
Warning: unrecognized cop Style/EnvHome found in .rubocop.yml
Warning: unrecognized cop Style/ExplicitBlockArgument found in .rubocop.yml
Warning: unrecognized cop Style/FetchEnvVar found in .rubocop.yml
Warning: unrecognized cop Style/FileOpen found in .rubocop.yml
Warning: unrecognized cop Style/FileWrite found in .rubocop.yml
Warning: unrecognized cop Style/HashAsLastArrayItem found in .rubocop.yml
Warning: unrecognized cop Style/HashConversion found in .rubocop.yml
Warning: unrecognized cop Style/HashEachMethods found in .rubocop.yml
Warning: unrecognized cop Style/HashSlice found in .rubocop.yml
Warning: unrecognized cop Style/MapIntoArray found in .rubocop.yml
Warning: unrecognized cop Style/MissingRespondToMissing found in .rubocop.yml
Warning: unrecognized cop Style/NegatedIfElseCondition found in .rubocop.yml
Warning: unrecognized cop Style/OptionalBooleanParameter found in .rubocop.yml
Warning: unrecognized cop Style/RedundantConstantBase found in .rubocop.yml
Warning: unrecognized cop Style/RedundantCurrentDirectoryInPath found in .rubocop.yml
Warning: unrecognized cop Style/RedundantFileExtensionInRequire found in .rubocop.yml
Warning: unrecognized cop Style/RedundantPercentQ found in .rubocop.yml
Warning: unrecognized cop Style/RedundantRegexpArgument found in .rubocop.yml
Warning: unrecognized cop Style/RedundantRegexpEscape found in .rubocop.yml
Warning: unrecognized cop Style/SoleNestedConditional found in .rubocop.yml
Warning: unrecognized cop Style/StringConcatenation found in .rubocop.yml
Warning: unrecognized cop Style/SuperArguments found in .rubocop.yml
Warning: unrecognized cop Style/SuperWithArgsParentheses found in .rubocop.yml
Warning: unrecognized cop Style/YAMLFileRead found in .rubocop.yml
Warning: unrecognized cop plugins found in .rubocop.yml
Warning: unrecognized cop Minitest found in .rubocop.yml
Warning: unrecognized cop Minitest/GlobalExpectations found in .rubocop.yml
Warning: unrecognized parameter AllCops:NewCops found in .rubocop.yml
Warning: unrecognized parameter Metrics/BlockLength:IgnoredMethods found in .rubocop.yml
no implicit conversion of String into Integer
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/config.rb:294:in `block in make_excludes_absolute'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/config.rb:268:in `each_key'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/config.rb:292:in `make_excludes_absolute'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/config.rb:239:in `check'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/config.rb:231:in `create'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/config_loader.rb:54:in `load_file'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/config_loader.rb:83:in `configuration_from_file'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/config_store.rb:44:in `for'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/cli.rb:181:in `apply_default_formatter'
/home/linters/.bundle/gems/rubocop-0.54.0/lib/rubocop/cli.rb:40:in `run'
/home/linters/.bundle/gems/rubocop-0.54.0/bin/rubocop:13:in `block in '
/usr/local/lib/ruby/2.6.0/benchmark.rb:308:in `realtime'
/home/linters/.bundle/gems/rubocop-0.54.0/bin/rubocop:12:in `'
/home/linters/.bundle/bin/rubocop:23:in `load'
/home/linters/.bundle/bin/rubocop:23:in `'
/usr/local/lib/ruby/2.6.0/bundler/cli/exec.rb:74:in `load'
/usr/local/lib/ruby/2.6.0/bundler/cli/exec.rb:74:in `kernel_load'
/usr/local/lib/ruby/2.6.0/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/ruby/2.6.0/bundler/cli.rb:463:in `exec'
/usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor.rb:387:in `dispatch'
/usr/local/lib/ruby/2.6.0/bundler/cli.rb:27:in `dispatch'
/usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor/base.rb:466:in `start'
/usr/local/lib/ruby/2.6.0/bundler/cli.rb:18:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-1.17.2/exe/bundle:30:in `block in '
/usr/local/lib/ruby/2.6.0/bundler/friendly_errors.rb:124:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-1.17.2/exe/bundle:22:in `'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `'

@tas50 tas50 changed the title Migrate the test suite to minitest 6 and fix the Volume version fallback Migrate the test suite to minitest 6, fix the Volume version fallback, and regenerate the RuboCop baseline Aug 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants