Merge pull request #13295 from Homebrew/dependabot/bundler/Library/Homebrew/rubocop-rspec-2.11.0

build(deps): bump rubocop-rspec from 2.10.0 to 2.11.0 in /Library/Homebrew
This commit is contained in:
Mike McQuaid 2022-05-18 15:58:05 -04:00 committed by GitHub
commit f56cd09c91
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
125 changed files with 151 additions and 37 deletions

View File

@ -141,7 +141,7 @@ GEM
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.7.0, < 2.0)
rubocop-rspec (2.10.0)
rubocop-rspec (2.11.0)
rubocop (~> 1.19)
rubocop-sorbet (0.6.8)
rubocop (>= 0.90.0)

View File

@ -4616,6 +4616,21 @@ class RuboCop::Cop::FormulaCop
def required_dependency_name?(param0, param1); end
end
class RuboCop::Cop::RSpec::ChangeByZero
def expect_change_with_arguments(param0=T.unsafe(nil)); end
def expect_change_with_block(param0=T.unsafe(nil)); end
def on_send(node); end
MSG = ::T.let(nil, ::T.untyped)
MSG_COMPOUND = ::T.let(nil, ::T.untyped)
RESTRICT_ON_SEND = ::T.let(nil, ::T.untyped)
end
class RuboCop::Cop::RSpec::ChangeByZero
extend ::RuboCop::Cop::AutoCorrector
end
module RuboCop::RSpec::ExpectOffense
def expect_correction(correction, loop: T.unsafe(nil), source: T.unsafe(nil)); end

View File

@ -13,7 +13,7 @@ describe Messages do
it "adds a caveat" do
expect {
messages.record_caveats(test_formula, "Zsh completions were installed")
}.to change { messages.caveats.count }.by(1)
}.to change(messages.caveats, :count).by(1)
end
end
@ -27,7 +27,7 @@ describe Messages do
it "adds to install_times" do
expect {
messages.package_installed(test_formula, elapsed_time)
}.to change { messages.install_times.count }.by(1)
}.to change(messages.install_times, :count).by(1)
end
end

View File

@ -87,7 +87,7 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/unicode-display_width
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-1.27.0/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-performance-1.13.3/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-rails-2.14.2/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-rspec-2.10.0/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-rspec-2.11.0/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-sorbet-0.6.8/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/ruby-macho-3.0.0/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/simplecov-html-0.12.3/lib"

View File

@ -110,6 +110,14 @@ RSpec:
- subject
- subject!
Metrics/BlockLength:
inherit_mode:
merge:
- Exclude
Exclude:
- "**/*_spec.rb"
- "**/spec/**/*"
RSpec/AlignLeftLetBrace:
Description: Checks that left braces for adjacent single line lets are aligned.
Enabled: false
@ -176,6 +184,12 @@ RSpec/BeforeAfterAll:
StyleGuide: https://rspec.rubystyle.guide/#avoid-hooks-with-context-scope
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/BeforeAfterAll
RSpec/ChangeByZero:
Description: Prefer negated matchers over `to change.by(0)`.
Enabled: pending
VersionAdded: 2.11.0
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ChangeByZero
RSpec/ContextMethod:
Description: "`context` should not be used for specifying methods."
Enabled: true
@ -256,7 +270,7 @@ RSpec/DescribedClassModuleWrapping:
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/DescribedClassModuleWrapping
RSpec/Dialect:
Description: This cop enforces custom RSpec dialects.
Description: Enforces custom RSpec dialects.
Enabled: false
PreferredMethods: {}
VersionAdded: '1.33'
@ -787,13 +801,13 @@ RSpec/VerifiedDoubles:
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/VerifiedDoubles
RSpec/VoidExpect:
Description: This cop checks void `expect()`.
Description: Checks void `expect()`.
Enabled: true
VersionAdded: '1.16'
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/VoidExpect
RSpec/Yield:
Description: This cop checks for calling a block within a stub.
Description: Checks for calling a block within a stub.
Enabled: true
VersionAdded: '1.32'
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Yield

View File

@ -46,7 +46,7 @@ module RuboCop
MSG = 'Use `%<replacement>s` instead of `%<method>s`.'
# https://git.io/v7Kwr
# https://github.com/teamcapybara/capybara/blob/e283c1aeaa72441f5403963577e16333bf111a81/lib/capybara/rspec/features.rb#L31-L36
MAP = {
background: :before,
scenario: :it,

View File

@ -0,0 +1,88 @@
# frozen_string_literal: true
module RuboCop
module Cop
module RSpec
# Prefer negated matchers over `to change.by(0)`.
#
# @example
# # bad
# expect { run }.to change(Foo, :bar).by(0)
# expect { run }.to change { Foo.bar }.by(0)
# expect { run }
# .to change(Foo, :bar).by(0)
# .and change(Foo, :baz).by(0)
# expect { run }
# .to change { Foo.bar }.by(0)
# .and change { Foo.baz }.by(0)
#
# # good
# expect { run }.not_to change(Foo, :bar)
# expect { run }.not_to change { Foo.bar }
# expect { run }
# .to not_change(Foo, :bar)
# .and not_change(Foo, :baz)
# expect { run }
# .to not_change { Foo.bar }
# .and not_change { Foo.baz }
#
class ChangeByZero < Base
extend AutoCorrector
MSG = 'Prefer `not_to change` over `to change.by(0)`.'
MSG_COMPOUND = 'Prefer negated matchers with compound expectations ' \
'over `change.by(0)`.'
RESTRICT_ON_SEND = %i[change].freeze
# @!method expect_change_with_arguments(node)
def_node_matcher :expect_change_with_arguments, <<-PATTERN
(send
(send nil? :change ...) :by
(int 0))
PATTERN
# @!method expect_change_with_block(node)
def_node_matcher :expect_change_with_block, <<-PATTERN
(send
(block
(send nil? :change)
(args)
(send (...) $_)) :by
(int 0))
PATTERN
def on_send(node)
expect_change_with_arguments(node.parent) do
check_offence(node.parent)
end
expect_change_with_block(node.parent.parent) do
check_offence(node.parent.parent)
end
end
private
def check_offence(node)
expression = node.loc.expression
if compound_expectations?(node)
add_offense(expression, message: MSG_COMPOUND)
else
add_offense(expression) do |corrector|
autocorrect(corrector, node)
end
end
end
def compound_expectations?(node)
%i[and or].include?(node.parent.method_name)
end
def autocorrect(corrector, node)
corrector.replace(node.parent.loc.selector, 'not_to')
range = node.loc.dot.with(end_pos: node.loc.expression.end_pos)
corrector.remove(range)
end
end
end
end
end

View File

@ -78,9 +78,8 @@ module RuboCop
PATTERN
# @!method contains_described_class?(node)
def_node_search :contains_described_class?, <<-PATTERN
(send nil? :described_class)
PATTERN
def_node_search :contains_described_class?,
'(send nil? :described_class)'
def on_block(node)
# In case the explicit style is used, we need to remember what's
@ -129,17 +128,13 @@ module RuboCop
end
def scope_change?(node)
scope_changing_syntax?(node) ||
scope_changing_syntax?(node) ||
common_instance_exec_closure?(node) ||
skippable_block?(node)
end
def skippable_block?(node)
node.block_type? && !rspec_block?(node) && skip_blocks?
end
def skip_blocks?
cop_config['SkipBlocks']
node.block_type? && !rspec_block?(node) && cop_config['SkipBlocks']
end
def offensive?(node)
@ -152,6 +147,7 @@ module RuboCop
def offensive_described_class?(node)
return unless node.const_type?
# E.g. `described_class::CONSTANT`
return if contains_described_class?(node)
@ -172,14 +168,13 @@ module RuboCop
# @return [Array<Symbol>]
# @example
# # nil represents base constant
# collapse_namespace([], :C) # => [:C]
# collapse_namespace([:A, :B], [:C) # => [:A, :B, :C]
# collapse_namespace([:A, :B], [:B, :C) # => [:A, :B, :C]
# collapse_namespace([:A, :B], [nil, :C) # => [nil, :C]
# collapse_namespace([:A, :B], [nil, :B, :C) # => [nil, :B, :C]
# collapse_namespace([], [:C]) # => [:C]
# collapse_namespace([:A, :B], [:C]) # => [:A, :B, :C]
# collapse_namespace([:A, :B], [:B, :C]) # => [:A, :B, :C]
# collapse_namespace([:A, :B], [nil, :C]) # => [nil, :C]
# collapse_namespace([:A, :B], [nil, :B, :C]) # => [nil, :B, :C]
def collapse_namespace(namespace, const)
return const if namespace.empty?
return const if const.first.nil?
return const if namespace.empty? || const.first.nil?
start = [0, (namespace.length - const.length)].max
max = namespace.length
@ -196,9 +191,7 @@ module RuboCop
# const_name(s(:const, s(:const, nil, :M), :C)) # => [:M, :C]
# const_name(s(:const, s(:cbase), :C)) # => [nil, :C]
def const_name(node)
# rubocop:disable InternalAffairs/NodeDestructuring
namespace, name = *node
# rubocop:enable InternalAffairs/NodeDestructuring
namespace, name = *node # rubocop:disable InternalAffairs/NodeDestructuring
if !namespace
[name]
elsif namespace.const_type?

View File

@ -3,7 +3,7 @@
module RuboCop
module Cop
module RSpec
# This cop enforces custom RSpec dialects.
# Enforces custom RSpec dialects.
#
# A dialect can be based on the following RSpec methods:
#

View File

@ -39,7 +39,7 @@ module RuboCop
# @!method expect_change_with_arguments(node)
def_node_matcher :expect_change_with_arguments, <<-PATTERN
(send nil? :change $_ (sym $_))
(send nil? :change $_ ({sym str} $_))
PATTERN
# @!method expect_change_with_block(node)
@ -47,7 +47,7 @@ module RuboCop
(block
(send nil? :change)
(args)
(send ({const send} nil? $_) $_)
(send $_ $_)
)
PATTERN
@ -67,9 +67,9 @@ module RuboCop
return unless style == :method_call
expect_change_with_block(node) do |receiver, message|
msg = format(MSG_BLOCK, obj: receiver, attr: message)
msg = format(MSG_BLOCK, obj: receiver.source, attr: message)
add_offense(node, message: msg) do |corrector|
replacement = "change(#{receiver}, :#{message})"
replacement = "change(#{receiver.source}, :#{message})"
corrector.replace(node, replacement)
end
end

View File

@ -24,7 +24,7 @@ module RuboCop
# rubocop:disable InternalAffairs/NodeDestructuring
variable_name, _rhs = *node
# rubocop:enable InternalAffairs/NodeDestructuring
name = variable_name[1..-1]
name = variable_name[1..]
return unless name.eql?('stdout') || name.eql?('stderr')
add_offense(node.loc.name, message: format(MSG, name: name))

Some files were not shown because too many files have changed in this diff Show More