diff --git a/Library/Homebrew/sorbet/rbi/gems/rubocop-rspec@3.0.5.rbi b/Library/Homebrew/sorbet/rbi/gems/rubocop-rspec@3.0.5.rbi new file mode 100644 index 0000000000..a2fadae7fd --- /dev/null +++ b/Library/Homebrew/sorbet/rbi/gems/rubocop-rspec@3.0.5.rbi @@ -0,0 +1,7550 @@ +# typed: true + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for types exported from the `rubocop-rspec` gem. +# Please instead update this file by running `bin/tapioca gem rubocop-rspec`. + + +# source://rubocop-rspec//lib/rubocop/rspec.rb#3 +module RuboCop; end + +class RuboCop::AST::Node < ::Parser::AST::Node + include ::RuboCop::RSpec::Node +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/file_help.rb#4 +module RuboCop::Cop; end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/file_help.rb#5 +module RuboCop::Cop::RSpec; end + +# Checks that left braces for adjacent single line lets are aligned. +# +# @example +# # bad +# let(:foobar) { blahblah } +# let(:baz) { bar } +# let(:a) { b } +# +# # good +# let(:foobar) { blahblah } +# let(:baz) { bar } +# let(:a) { b } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/align_left_let_brace.rb#19 +class RuboCop::Cop::RSpec::AlignLeftLetBrace < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/align_left_let_brace.rb#28 + def on_new_investigation; end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/align_left_let_brace.rb#43 + def token_aligner; end + + class << self + # source://rubocop-rspec//lib/rubocop/cop/rspec/align_left_let_brace.rb#24 + def autocorrect_incompatible_with; end + end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/align_left_let_brace.rb#22 +RuboCop::Cop::RSpec::AlignLeftLetBrace::MSG = T.let(T.unsafe(nil), String) + +# Checks that right braces for adjacent single line lets are aligned. +# +# @example +# # bad +# let(:foobar) { blahblah } +# let(:baz) { bar } +# let(:a) { b } +# +# # good +# let(:foobar) { blahblah } +# let(:baz) { bar } +# let(:a) { b } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/align_right_let_brace.rb#19 +class RuboCop::Cop::RSpec::AlignRightLetBrace < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/align_right_let_brace.rb#28 + def on_new_investigation; end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/align_right_let_brace.rb#43 + def token_aligner; end + + class << self + # source://rubocop-rspec//lib/rubocop/cop/rspec/align_right_let_brace.rb#24 + def autocorrect_incompatible_with; end + end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/align_right_let_brace.rb#22 +RuboCop::Cop::RSpec::AlignRightLetBrace::MSG = T.let(T.unsafe(nil), String) + +# Check that instances are not being stubbed globally. +# +# Prefer instance doubles over stubbing any instance of a class +# +# @example +# # bad +# describe MyClass do +# before { allow_any_instance_of(MyClass).to receive(:foo) } +# end +# +# # good +# describe MyClass do +# let(:my_instance) { instance_double(MyClass) } +# +# before do +# allow(MyClass).to receive(:new).and_return(my_instance) +# allow(my_instance).to receive(:foo) +# end +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/any_instance.rb#26 +class RuboCop::Cop::RSpec::AnyInstance < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/any_instance.rb#34 + def on_send(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/any_instance.rb#27 +RuboCop::Cop::RSpec::AnyInstance::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/any_instance.rb#28 +RuboCop::Cop::RSpec::AnyInstance::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Checks that around blocks actually run the test. +# +# @example +# # bad +# around do +# some_method +# end +# +# around do |test| +# some_method +# end +# +# # good +# around do |test| +# some_method +# test.call +# end +# +# around do |test| +# some_method +# test.run +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/around_block.rb#29 +class RuboCop::Cop::RSpec::AroundBlock < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/around_block.rb#45 + def find_arg_usage(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/around_block.rb#35 + def hook_block(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/around_block.rb#40 + def hook_numblock(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/around_block.rb#49 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/around_block.rb#59 + def on_numblock(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/around_block.rb#67 + def add_no_arg_offense(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/around_block.rb#84 + def check_for_numblock(block); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/around_block.rb#71 + def check_for_unused_proxy(block, proxy); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/around_block.rb#30 +RuboCop::Cop::RSpec::AroundBlock::MSG_NO_ARG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/around_block.rb#31 +RuboCop::Cop::RSpec::AroundBlock::MSG_UNUSED_ARG = T.let(T.unsafe(nil), String) + +# @abstract parent class to RSpec cops +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/base.rb#7 +class RuboCop::Cop::RSpec::Base < ::RuboCop::Cop::Base + include ::RuboCop::RSpec::Language + + # Set the config for dynamic DSL configuration-aware helpers + # that have no other means of accessing the configuration. + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/base.rb#19 + def on_new_investigation; end + + class << self + # Invoke the original inherited hook so our cops are recognized + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/base.rb#13 + def inherited(subclass); end + end +end + +# Check for expectations where `be` is used without argument. +# +# The `be` matcher is too generic, as it pass on everything that is not +# nil or false. If that is the exact intend, use `be_truthy`. In all other +# cases it's better to specify what exactly is the expected value. +# +# @example +# # bad +# expect(foo).to be +# +# # good +# expect(foo).to be_truthy +# expect(foo).to be 1.0 +# expect(foo).to be(true) +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/be.rb#21 +class RuboCop::Cop::RSpec::Be < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/be.rb#27 + def be_without_args(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/be.rb#31 + def on_send(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/be.rb#22 +RuboCop::Cop::RSpec::Be::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/be.rb#24 +RuboCop::Cop::RSpec::Be::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Prefer using `be_empty` when checking for an empty array. +# +# @example +# # bad +# expect(array).to contain_exactly +# expect(array).to match_array([]) +# +# # good +# expect(array).to be_empty +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/be_empty.rb#16 +class RuboCop::Cop::RSpec::BeEmpty < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/be_empty.rb#23 + def expect_array_matcher?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/be_empty.rb#35 + def on_send(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/be_empty.rb#19 +RuboCop::Cop::RSpec::BeEmpty::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/be_empty.rb#20 +RuboCop::Cop::RSpec::BeEmpty::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Check for expectations where `be(...)` can replace `eq(...)`. +# +# The `be` matcher compares by identity while the `eq` matcher compares +# using `==`. Booleans and nil can be compared by identity and therefore +# the `be` matcher is preferable as it is a more strict test. +# +# @example +# # bad +# expect(foo).to eq(true) +# expect(foo).to eq(false) +# expect(foo).to eq(nil) +# +# # good +# expect(foo).to be(true) +# expect(foo).to be(false) +# expect(foo).to be(nil) +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/be_eq.rb#26 +class RuboCop::Cop::RSpec::BeEq < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/be_eq.rb#33 + def eq_type_with_identity?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/be_eq.rb#37 + def on_send(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/be_eq.rb#29 +RuboCop::Cop::RSpec::BeEq::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/be_eq.rb#30 +RuboCop::Cop::RSpec::BeEq::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Check for expectations where `be(...)` can replace `eql(...)`. +# +# The `be` matcher compares by identity while the `eql` matcher +# compares using `eql?`. Integers, floats, booleans, symbols, and nil +# can be compared by identity and therefore the `be` matcher is +# preferable as it is a more strict test. +# +# This cop only looks for instances of `expect(...).to eql(...)`. We +# do not check `to_not` or `not_to` since `!eql?` is more strict +# than `!equal?`. We also do not try to flag `eq` because if +# `a == b`, and `b` is comparable by identity, `a` is still not +# necessarily the same type as `b` since the `#==` operator can +# coerce objects for comparison. +# +# @example +# # bad +# expect(foo).to eql(1) +# expect(foo).to eql(1.0) +# expect(foo).to eql(true) +# expect(foo).to eql(false) +# expect(foo).to eql(:bar) +# expect(foo).to eql(nil) +# +# # good +# expect(foo).to be(1) +# expect(foo).to be(1.0) +# expect(foo).to be(true) +# expect(foo).to be(false) +# expect(foo).to be(:bar) +# expect(foo).to be(nil) +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/be_eql.rb#40 +class RuboCop::Cop::RSpec::BeEql < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/be_eql.rb#47 + def eql_type_with_identity(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/be_eql.rb#51 + def on_send(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/be_eql.rb#43 +RuboCop::Cop::RSpec::BeEql::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/be_eql.rb#44 +RuboCop::Cop::RSpec::BeEql::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Ensures a consistent style is used when matching `nil`. +# +# You can either use the more specific `be_nil` matcher, or the more +# generic `be` matcher with a `nil` argument. +# +# This cop can be configured using the `EnforcedStyle` option +# +# @example `EnforcedStyle: be_nil` (default) +# # bad +# expect(foo).to be(nil) +# +# # good +# expect(foo).to be_nil +# @example `EnforcedStyle: be` +# # bad +# expect(foo).to be_nil +# +# # good +# expect(foo).to be(nil) +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/be_nil.rb#27 +class RuboCop::Cop::RSpec::BeNil < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/be_nil.rb#36 + def be_nil_matcher?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/be_nil.rb#41 + def nil_value_expectation?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/be_nil.rb#45 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/be_nil.rb#64 + def check_be_nil_style(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/be_nil.rb#56 + def check_be_style(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/be_nil.rb#31 +RuboCop::Cop::RSpec::BeNil::BE_MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/be_nil.rb#32 +RuboCop::Cop::RSpec::BeNil::BE_NIL_MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/be_nil.rb#33 +RuboCop::Cop::RSpec::BeNil::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Check that before/after(:all/:context) isn't being used. +# +# @example +# # bad - Faster but risk of state leaking between examples +# describe MyClass do +# before(:all) { Widget.create } +# after(:context) { Widget.delete_all } +# end +# +# # good - Slower but examples are properly isolated +# describe MyClass do +# before(:each) { Widget.create } +# after(:each) { Widget.delete_all } +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/before_after_all.rb#21 +class RuboCop::Cop::RSpec::BeforeAfterAll < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/before_after_all.rb#30 + def before_or_after_all(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/before_after_all.rb#34 + def on_send(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/before_after_all.rb#22 +RuboCop::Cop::RSpec::BeforeAfterAll::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/before_after_all.rb#27 +RuboCop::Cop::RSpec::BeforeAfterAll::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Set) + +# Prefer negated matchers over `to change.by(0)`. +# +# In the case of composite expectations, cop suggest using the +# negation matchers of `RSpec::Matchers#change`. +# +# By default the cop does not support autocorrect of +# compound expectations, but if you set the +# negated matcher for `change`, e.g. `not_change` with +# the `NegatedMatcher` option, the cop will perform the autocorrection. +# +# @example NegatedMatcher: ~ (default) +# # bad +# expect { run }.to change(Foo, :bar).by(0) +# expect { run }.to change { Foo.bar }.by(0) +# +# # bad - compound expectations (does not support autocorrection) +# 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 } +# +# # good - compound expectations +# define_negated_matcher :not_change, :change +# expect { run } +# .to not_change(Foo, :bar) +# .and not_change(Foo, :baz) +# expect { run } +# .to not_change { Foo.bar } +# .and not_change { Foo.baz } +# @example NegatedMatcher: not_change +# # bad (support autocorrection to good case) +# 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 +# define_negated_matcher :not_change, :change +# expect { run } +# .to not_change(Foo, :bar) +# .and not_change(Foo, :baz) +# expect { run } +# .to not_change { Foo.bar } +# .and not_change { Foo.baz } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#60 +class RuboCop::Cop::RSpec::ChangeByZero < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#88 + def change_nodes(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#71 + def expect_change_with_arguments(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#78 + def expect_change_with_block(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#92 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#133 + def autocorrect(corrector, node, change_node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#140 + def autocorrect_compound(corrector, node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#120 + def compound_expectations?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#150 + def insert_operator(corrector, node, change_node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#124 + def message(change_node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#128 + def message_compound(change_node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#174 + def negated_matcher; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#178 + def preferred_method; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#105 + def register_offense(node, change_node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#163 + def remove_by_zero(corrector, node, change_node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#159 + def replace_node(node, change_node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#67 +RuboCop::Cop::RSpec::ChangeByZero::CHANGE_METHODS = T.let(T.unsafe(nil), Set) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#64 +RuboCop::Cop::RSpec::ChangeByZero::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#65 +RuboCop::Cop::RSpec::ChangeByZero::MSG_COMPOUND = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/change_by_zero.rb#68 +RuboCop::Cop::RSpec::ChangeByZero::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Set) + +# Enforces consistent use of `be_a` or `be_kind_of`. +# +# @example EnforcedStyle: be_a (default) +# # bad +# expect(object).to be_kind_of(String) +# expect(object).to be_a_kind_of(String) +# +# # good +# expect(object).to be_a(String) +# expect(object).to be_an(String) +# @example EnforcedStyle: be_kind_of +# # bad +# expect(object).to be_a(String) +# expect(object).to be_an(String) +# +# # good +# expect(object).to be_kind_of(String) +# expect(object).to be_a_kind_of(String) +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/class_check.rb#26 +class RuboCop::Cop::RSpec::ClassCheck < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/class_check.rb#54 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/class_check.rb#67 + def autocorrect(corrector, node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/class_check.rb#71 + def format_message(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/class_check.rb#79 + def offending?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/class_check.rb#87 + def preferred_method_name; end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/class_check.rb#83 + def preferred_method_name?(method_name); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/class_check.rb#91 + def preferred_method_names; end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/class_check.rb#32 +RuboCop::Cop::RSpec::ClassCheck::METHOD_NAMES_FOR_BE_A = T.let(T.unsafe(nil), Set) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/class_check.rb#37 +RuboCop::Cop::RSpec::ClassCheck::METHOD_NAMES_FOR_KIND_OF = T.let(T.unsafe(nil), Set) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/class_check.rb#30 +RuboCop::Cop::RSpec::ClassCheck::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/class_check.rb#42 +RuboCop::Cop::RSpec::ClassCheck::PREFERRED_METHOD_NAME_BY_STYLE = T.let(T.unsafe(nil), Hash) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/class_check.rb#47 +RuboCop::Cop::RSpec::ClassCheck::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Help methods for working with nodes containing comments. +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/comments_help.rb#7 +module RuboCop::Cop::RSpec::CommentsHelp + include ::RuboCop::Cop::RSpec::FinalEndLocation + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/comments_help.rb#17 + def begin_pos_with_comment(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/comments_help.rb#32 + def buffer; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/comments_help.rb#27 + def end_line_position(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/comments_help.rb#10 + def source_range_with_comment(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/comments_help.rb#23 + def start_line_position(node); end +end + +# Checks where `contain_exactly` is used. +# +# This cop checks for the following: +# - Prefer `match_array` when matching array values. +# - Prefer `be_empty` when using `contain_exactly` with no arguments. +# +# @example +# # bad +# it { is_expected.to contain_exactly(*array1, *array2) } +# +# # good +# it { is_expected.to match_array(array1 + array2) } +# +# # good +# it { is_expected.to contain_exactly(content, *array) } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/contain_exactly.rb#22 +class RuboCop::Cop::RSpec::ContainExactly < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/contain_exactly.rb#28 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/contain_exactly.rb#44 + def autocorrect_for_populated_array(node, corrector); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/contain_exactly.rb#36 + def check_populated_collection(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/contain_exactly.rb#25 +RuboCop::Cop::RSpec::ContainExactly::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/contain_exactly.rb#26 +RuboCop::Cop::RSpec::ContainExactly::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# `context` should not be used for specifying methods. +# +# @example +# # bad +# context '#foo_bar' do +# # ... +# end +# +# context '.foo_bar' do +# # ... +# end +# +# # good +# describe '#foo_bar' do +# # ... +# end +# +# describe '.foo_bar' do +# # ... +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/context_method.rb#27 +class RuboCop::Cop::RSpec::ContextMethod < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/context_method.rb#33 + def context_method(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/context_method.rb#41 + def on_block(node); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/context_method.rb#51 + def method_name?(description); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/context_method.rb#30 +RuboCop::Cop::RSpec::ContextMethod::MSG = T.let(T.unsafe(nil), String) + +# Checks that `context` docstring starts with an allowed prefix. +# +# The default list of prefixes is minimal. Users are encouraged to tailor +# the configuration to meet project needs. Other acceptable prefixes may +# include `if`, `unless`, `for`, `before`, `after`, or `during`. +# They may consist of multiple words if desired. +# +# This cop can be customized allowed context description pattern +# with `AllowedPatterns`. By default, there are no checking by pattern. +# +# @example `Prefixes` configuration +# # .rubocop.yml +# # RSpec/ContextWording: +# # Prefixes: +# # - when +# # - with +# # - without +# # - if +# # - unless +# # - for +# @example +# # bad +# context 'the display name not present' do +# # ... +# end +# +# # good +# context 'when the display name is not present' do +# # ... +# end +# @example `AllowedPatterns` configuration +# +# # .rubocop.yml +# # RSpec/ContextWording: +# # AllowedPatterns: +# # - とき$ +# @example +# # bad +# context '条件を満たす' do +# # ... +# end +# +# # good +# context '条件を満たすとき' do +# # ... +# end +# @see http://www.betterspecs.org/#contexts +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/context_wording.rb#58 +class RuboCop::Cop::RSpec::ContextWording < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::AllowedPattern + + # source://rubocop-rspec//lib/rubocop/cop/rspec/context_wording.rb#64 + def context_wording(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/context_wording.rb#68 + def on_block(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/context_wording.rb#79 + def allowed_patterns; end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/context_wording.rb#87 + def bad_pattern?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/context_wording.rb#93 + def description(context); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/context_wording.rb#101 + def expect_patterns; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/context_wording.rb#83 + def prefix_regexes; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/context_wording.rb#111 + def prefixes; end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/context_wording.rb#61 +RuboCop::Cop::RSpec::ContextWording::MSG = T.let(T.unsafe(nil), String) + +# Check that the first argument to the top-level describe is a constant. +# +# It can be configured to ignore strings when certain metadata is passed. +# +# Ignores Rails and Aruba `type` metadata by default. +# +# @example `IgnoredMetadata` configuration +# # .rubocop.yml +# # RSpec/DescribeClass: +# # IgnoredMetadata: +# # type: +# # - request +# # - controller +# @example +# # bad +# describe 'Do something' do +# end +# +# # good +# describe TestedClass do +# subject { described_class } +# end +# +# describe 'TestedClass::VERSION' do +# subject { Object.const_get(self.class.description) } +# end +# +# describe "A feature example", type: :feature do +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/describe_class.rb#37 +class RuboCop::Cop::RSpec::DescribeClass < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::TopLevelGroup + + # source://rubocop-rspec//lib/rubocop/cop/rspec/describe_class.rb#44 + def example_group_with_ignored_metadata?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/describe_class.rb#49 + def not_a_const_described(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/describe_class.rb#58 + def on_top_level_group(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/describe_class.rb#54 + def sym_pair(param0 = T.unsafe(nil)); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/describe_class.rb#79 + def ignored_metadata; end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/describe_class.rb#68 + def ignored_metadata?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/describe_class.rb#74 + def string_constant?(described); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/describe_class.rb#40 +RuboCop::Cop::RSpec::DescribeClass::MSG = T.let(T.unsafe(nil), String) + +# Checks that the second argument to `describe` specifies a method. +# +# @example +# # bad +# describe MyClass, 'do something' do +# end +# +# # good +# describe MyClass, '#my_instance_method' do +# end +# +# describe MyClass, '.my_class_method' do +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/describe_method.rb#20 +class RuboCop::Cop::RSpec::DescribeMethod < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::TopLevelGroup + + # source://rubocop-rspec//lib/rubocop/cop/rspec/describe_method.rb#34 + def method_name?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/describe_method.rb#38 + def on_top_level_group(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/describe_method.rb#27 + def second_string_literal_argument(param0 = T.unsafe(nil)); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/describe_method.rb#46 + def method_name_prefix?(description); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/describe_method.rb#23 +RuboCop::Cop::RSpec::DescribeMethod::MSG = T.let(T.unsafe(nil), String) + +# Avoid describing symbols. +# +# @example +# # bad +# describe :my_method do +# # ... +# end +# +# # good +# describe '#my_method' do +# # ... +# end +# @see https://github.com/rspec/rspec-core/issues/1610 +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/describe_symbol.rb#20 +class RuboCop::Cop::RSpec::DescribeSymbol < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/describe_symbol.rb#25 + def describe_symbol?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/describe_symbol.rb#29 + def on_send(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/describe_symbol.rb#21 +RuboCop::Cop::RSpec::DescribeSymbol::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/describe_symbol.rb#22 +RuboCop::Cop::RSpec::DescribeSymbol::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Checks that tests use `described_class`. +# +# If the first argument of describe is a class, the class is exposed to +# each example via described_class. +# +# This cop can be configured using the `EnforcedStyle`, `SkipBlocks` +# and `OnlyStaticConstants` options. +# `OnlyStaticConstants` is only relevant when `EnforcedStyle` is +# `described_class`. +# +# There's a known caveat with rspec-rails's `controller` helper that +# runs its block in a different context, and `described_class` is not +# available to it. `SkipBlocks` option excludes detection in all +# non-RSpec related blocks. +# +# To narrow down this setting to only a specific directory, it is +# possible to use an overriding configuration file local to that +# directory. +# +# @example `EnforcedStyle: described_class` (default) +# # bad +# describe MyClass do +# subject { MyClass.do_something } +# end +# +# # good +# describe MyClass do +# subject { described_class.do_something } +# end +# @example `OnlyStaticConstants: true` (default) +# # good +# describe MyClass do +# subject { MyClass::CONSTANT } +# end +# @example `OnlyStaticConstants: false` +# # bad +# describe MyClass do +# subject { MyClass::CONSTANT } +# end +# @example `EnforcedStyle: explicit` +# # bad +# describe MyClass do +# subject { described_class.do_something } +# end +# +# # good +# describe MyClass do +# subject { MyClass.do_something } +# end +# @example `SkipBlocks: true` +# # spec/controllers/.rubocop.yml +# # RSpec/DescribedClass: +# # SkipBlocks: true +# +# # acceptable +# describe MyConcern do +# controller(ApplicationController) do +# include MyConcern +# end +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#71 +class RuboCop::Cop::RSpec::DescribedClass < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + include ::RuboCop::Cop::RSpec::Namespace + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#80 + def common_instance_exec_closure?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#97 + def contains_described_class?(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#92 + def described_constant(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#100 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#85 + def rspec_block?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#89 + def scope_changing_syntax?(param0 = T.unsafe(nil)); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#136 + def allowed?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#117 + def autocorrect(corrector, match); end + + # @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] + # @param namespace [Array] + # @param const [Array] + # @return [Array] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#200 + def collapse_namespace(namespace, const); end + + # @example + # const_name(s(:const, nil, :C)) # => [:C] + # const_name(s(:const, s(:const, nil, :M), :C)) # => [:M, :C] + # const_name(s(:const, s(:cbase), :C)) # => [nil, :C] + # @param node [RuboCop::AST::Node] + # @return [Array] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#217 + def const_name(node); end + + # @yield [node] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#127 + def find_usage(node, &block); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#185 + def full_const_name(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#140 + def message(offense); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#163 + def offensive?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#171 + def offensive_described_class?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#159 + def only_static_constants?; end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#149 + def scope_change?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#155 + def skippable_block?(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#76 +RuboCop::Cop::RSpec::DescribedClass::DESCRIBED_CLASS = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/described_class.rb#77 +RuboCop::Cop::RSpec::DescribedClass::MSG = T.let(T.unsafe(nil), String) + +# Avoid opening modules and defining specs within them. +# +# @example +# # bad +# module MyModule +# RSpec.describe MyClass do +# # ... +# end +# end +# +# # good +# RSpec.describe MyModule::MyClass do +# # ... +# end +# @see https://github.com/rubocop/rubocop-rspec/issues/735 +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/described_class_module_wrapping.rb#22 +class RuboCop::Cop::RSpec::DescribedClassModuleWrapping < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class_module_wrapping.rb#26 + def include_rspec_blocks?(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/described_class_module_wrapping.rb#30 + def on_module(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/described_class_module_wrapping.rb#23 +RuboCop::Cop::RSpec::DescribedClassModuleWrapping::MSG = T.let(T.unsafe(nil), String) + +# Enforces custom RSpec dialects. +# +# A dialect can be based on the following RSpec methods: +# +# - describe, context, feature, example_group +# - xdescribe, xcontext, xfeature +# - fdescribe, fcontext, ffeature +# - shared_examples, shared_examples_for, shared_context +# - it, specify, example, scenario, its +# - fit, fspecify, fexample, fscenario, focus +# - xit, xspecify, xexample, xscenario, skip +# - pending +# - prepend_before, before, append_before, +# - around +# - prepend_after, after, append_after +# - let, let! +# - subject, subject! +# - expect, is_expected, expect_any_instance_of +# +# By default all of the RSpec methods and aliases are allowed. By setting +# a config like: +# +# RSpec/Dialect: +# PreferredMethods: +# context: describe +# +# If you were previously using the `RSpec/Capybara/FeatureMethods` cop and +# want to keep disabling all Capybara-specific methods that have the same +# native RSpec method (e.g. are just aliases), use the following config: +# +# RSpec/Dialect: +# PreferredMethods: +# background: :before +# scenario: :it +# xscenario: :xit +# given: :let +# given!: :let! +# feature: :describe +# +# You can expect the following behavior: +# +# @example +# # bad +# context 'display name presence' do +# # ... +# end +# +# # good +# describe 'display name presence' do +# # ... +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/dialect.rb#58 +class RuboCop::Cop::RSpec::Dialect < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::MethodPreference + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/dialect.rb#67 + def on_send(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/dialect.rb#65 + def rspec_method?(param0 = T.unsafe(nil)); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/dialect.rb#62 +RuboCop::Cop::RSpec::Dialect::MSG = T.let(T.unsafe(nil), String) + +# Avoid duplicated metadata. +# +# @example +# # bad +# describe 'Something', :a, :a +# +# # good +# describe 'Something', :a +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/duplicated_metadata.rb#14 +class RuboCop::Cop::RSpec::DuplicatedMetadata < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::Metadata + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/duplicated_metadata.rb#22 + def on_metadata(symbols, _hash); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/duplicated_metadata.rb#38 + def autocorrect(corrector, node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/duplicated_metadata.rb#50 + def duplicated?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/duplicated_metadata.rb#30 + def on_metadata_symbol(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/duplicated_metadata.rb#20 +RuboCop::Cop::RSpec::DuplicatedMetadata::MSG = T.let(T.unsafe(nil), String) + +# Checks if an example group does not include any tests. +# +# @example usage +# # bad +# describe Bacon do +# let(:bacon) { Bacon.new(chunkiness) } +# let(:chunkiness) { false } +# +# context 'extra chunky' do # flagged by rubocop +# let(:chunkiness) { true } +# end +# +# it 'is chunky' do +# expect(bacon.chunky?).to be_truthy +# end +# end +# +# # good +# describe Bacon do +# let(:bacon) { Bacon.new(chunkiness) } +# let(:chunkiness) { false } +# +# it 'is chunky' do +# expect(bacon.chunky?).to be_truthy +# end +# end +# +# # good +# describe Bacon do +# pending 'will add tests later' +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_example_group.rb#38 +class RuboCop::Cop::RSpec::EmptyExampleGroup < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # Match example group blocks and yield their body + # + # @example source that matches + # describe 'example group' do + # it { is_expected.to be } + # end + # @param node [RuboCop::AST::Node] + # @yield [RuboCop::AST::Node] example group body + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_example_group.rb#55 + def example_group_body(param0 = T.unsafe(nil)); end + + # Match examples, example groups and includes + # + # @example source that matches + # it { is_expected.to fly } + # describe('non-empty example groups too') { } + # it_behaves_like 'an animal' + # it_behaves_like('a cat') { let(:food) { 'milk' } } + # it_has_root_access + # skip + # it 'will be implemented later' + # @param node [RuboCop::AST::Node] + # @return [Array] matching nodes + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_example_group.rb#73 + def example_or_group_or_include?(param0 = T.unsafe(nil)); end + + # Matches examples defined in scopes where they could run + # + # @example source that matches + # it { expect(myself).to be_run } + # describe { it { i_run_as_well } } + # @example source that does not match + # before { it { whatever here won't run anyway } } + # @param node [RuboCop::AST::Node] + # @return [Array] matching nodes + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_example_group.rb#130 + def examples?(param0 = T.unsafe(nil)); end + + # Match examples or examples inside blocks + # + # @example source that matches + # it { expect(drink).to be_cold } + # context('when winter') { it { expect(drink).to be_hot } } + # (1..5).each { |divisor| it { is_expected.to divide_by(divisor) } } + # @param node [RuboCop::AST::Node] + # @return [Array] matching nodes + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_example_group.rb#111 + def examples_directly_or_in_block?(param0 = T.unsafe(nil)); end + + # Match examples defined inside a block which is not a hook + # + # @example source that matches + # %w(r g b).each do |color| + # it { is_expected.to have_color(color) } + # end + # @example source that does not match + # before do + # it { is_expected.to fall_into_oblivion } + # end + # @param node [RuboCop::AST::Node] + # @return [Array] matching nodes + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_example_group.rb#97 + def examples_inside_block?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_example_group.rb#138 + def on_block(node); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_example_group.rb#164 + def conditionals_with_examples?(body); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_example_group.rb#172 + def examples_in_branches?(condition_node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_example_group.rb#153 + def offensive?(body); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_example_group.rb#178 + def removed_range(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_example_group.rb#43 +RuboCop::Cop::RSpec::EmptyExampleGroup::MSG = T.let(T.unsafe(nil), String) + +# Checks for empty before and after hooks. +# +# @example +# # bad +# before {} +# after do; end +# before(:all) do +# end +# after(:all) { } +# +# # good +# before { create_users } +# after do +# cleanup_users +# end +# before(:all) do +# create_feed +# end +# after(:all) { cleanup_feed } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_hook.rb#26 +class RuboCop::Cop::RSpec::EmptyHook < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_hook.rb#33 + def empty_hook?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_hook.rb#37 + def on_block(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_hook.rb#30 +RuboCop::Cop::RSpec::EmptyHook::MSG = T.let(T.unsafe(nil), String) + +# Checks if there is an empty line after example blocks. +# +# @example +# # bad +# RSpec.describe Foo do +# it 'does this' do +# end +# it 'does that' do +# end +# end +# +# # good +# RSpec.describe Foo do +# it 'does this' do +# end +# +# it 'does that' do +# end +# end +# +# # fair - it's ok to have non-separated one-liners +# RSpec.describe Foo do +# it { one } +# it { two } +# end +# @example with AllowConsecutiveOneLiners configuration +# # rubocop.yml +# # RSpec/EmptyLineAfterExample: +# # AllowConsecutiveOneLiners: false +# +# # bad +# RSpec.describe Foo do +# it { one } +# it { two } +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_example.rb#43 +class RuboCop::Cop::RSpec::EmptyLineAfterExample < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::FinalEndLocation + include ::RuboCop::Cop::RangeHelp + include ::RuboCop::Cop::RSpec::EmptyLineSeparation + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_example.rb#49 + def on_block(node); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_example.rb#64 + def allow_consecutive_one_liners?; end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_example.rb#60 + def allowed_one_liner?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_example.rb#68 + def consecutive_one_liner?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_example.rb#72 + def next_one_line_example?(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_example.rb#47 +RuboCop::Cop::RSpec::EmptyLineAfterExample::MSG = T.let(T.unsafe(nil), String) + +# Checks if there is an empty line after example group blocks. +# +# @example +# # bad +# RSpec.describe Foo do +# describe '#bar' do +# end +# describe '#baz' do +# end +# end +# +# # good +# RSpec.describe Foo do +# describe '#bar' do +# end +# +# describe '#baz' do +# end +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_example_group.rb#26 +class RuboCop::Cop::RSpec::EmptyLineAfterExampleGroup < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::FinalEndLocation + include ::RuboCop::Cop::RangeHelp + include ::RuboCop::Cop::RSpec::EmptyLineSeparation + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_example_group.rb#32 + def on_block(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_example_group.rb#30 +RuboCop::Cop::RSpec::EmptyLineAfterExampleGroup::MSG = T.let(T.unsafe(nil), String) + +# Checks if there is an empty line after the last let block. +# +# @example +# # bad +# let(:foo) { bar } +# let(:something) { other } +# it { does_something } +# +# # good +# let(:foo) { bar } +# let(:something) { other } +# +# it { does_something } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_final_let.rb#20 +class RuboCop::Cop::RSpec::EmptyLineAfterFinalLet < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::FinalEndLocation + include ::RuboCop::Cop::RangeHelp + include ::RuboCop::Cop::RSpec::EmptyLineSeparation + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_final_let.rb#26 + def on_block(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_final_let.rb#24 +RuboCop::Cop::RSpec::EmptyLineAfterFinalLet::MSG = T.let(T.unsafe(nil), String) + +# Checks if there is an empty line after hook blocks. +# +# `AllowConsecutiveOneLiners` configures whether adjacent +# one-line definitions are considered an offense. +# +# @example +# # bad +# before { do_something } +# it { does_something } +# +# # bad +# after { do_something } +# it { does_something } +# +# # bad +# around { |test| test.run } +# it { does_something } +# +# # good +# after { do_something } +# +# it { does_something } +# +# # fair - it's ok to have non-separated one-liners hooks +# around { |test| test.run } +# after { do_something } +# +# it { does_something } +# @example with AllowConsecutiveOneLiners configuration +# # rubocop.yml +# # RSpec/EmptyLineAfterHook: +# # AllowConsecutiveOneLiners: false +# +# # bad +# around { |test| test.run } +# after { do_something } +# +# it { does_something } +# +# # good +# around { |test| test.run } +# +# after { do_something } +# +# it { does_something } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_hook.rb#53 +class RuboCop::Cop::RSpec::EmptyLineAfterHook < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + include ::RuboCop::Cop::RSpec::FinalEndLocation + include ::RuboCop::Cop::RangeHelp + include ::RuboCop::Cop::RSpec::EmptyLineSeparation + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_hook.rb#60 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_hook.rb#60 + def on_numblock(node); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_hook.rb#74 + def chained_single_line_hooks?(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_hook.rb#58 +RuboCop::Cop::RSpec::EmptyLineAfterHook::MSG = T.let(T.unsafe(nil), String) + +# Checks if there is an empty line after subject block. +# +# @example +# # bad +# subject(:obj) { described_class } +# let(:foo) { bar } +# +# # good +# subject(:obj) { described_class } +# +# let(:foo) { bar } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_subject.rb#18 +class RuboCop::Cop::RSpec::EmptyLineAfterSubject < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::FinalEndLocation + include ::RuboCop::Cop::RangeHelp + include ::RuboCop::Cop::RSpec::EmptyLineSeparation + include ::RuboCop::Cop::RSpec::InsideExampleGroup + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_subject.rb#25 + def on_block(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_line_after_subject.rb#23 +RuboCop::Cop::RSpec::EmptyLineAfterSubject::MSG = T.let(T.unsafe(nil), String) + +# Helps determine the offending location if there is not an empty line +# following the node. Allows comments to follow directly after +# in the following cases. +# - followed by empty line(s) +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/empty_line_separation.rb#11 +module RuboCop::Cop::RSpec::EmptyLineSeparation + include ::RuboCop::Cop::RSpec::FinalEndLocation + include ::RuboCop::Cop::RangeHelp + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/empty_line_separation.rb#51 + def last_child?(node); end + + # @yield [offending_loc(enable_directive_line || final_end_line)] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/empty_line_separation.rb#26 + def missing_separating_line(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/empty_line_separation.rb#15 + def missing_separating_line_offense(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/empty_line_separation.rb#41 + def offending_loc(last_line); end +end + +# Avoid empty metadata hash. +# +# @example EnforcedStyle: symbol (default) +# # bad +# describe 'Something', {} +# +# # good +# describe 'Something' +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_metadata.rb#14 +class RuboCop::Cop::RSpec::EmptyMetadata < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::Metadata + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_metadata.rb#22 + def on_metadata(_symbols, hash); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_metadata.rb#32 + def remove_empty_metadata(corrector, node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_metadata.rb#20 +RuboCop::Cop::RSpec::EmptyMetadata::MSG = T.let(T.unsafe(nil), String) + +# Check that the `output` matcher is not called with an empty string. +# +# @example +# # bad +# expect { foo }.to output('').to_stdout +# expect { bar }.not_to output('').to_stderr +# +# # good +# expect { foo }.not_to output.to_stdout +# expect { bar }.to output.to_stderr +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_output.rb#17 +class RuboCop::Cop::RSpec::EmptyOutput < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_output.rb#24 + def matching_empty_output(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/empty_output.rb#34 + def on_send(send_node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_output.rb#20 +RuboCop::Cop::RSpec::EmptyOutput::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/empty_output.rb#21 +RuboCop::Cop::RSpec::EmptyOutput::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Use `eq` instead of `be ==` to compare objects. +# +# @example +# # bad +# expect(foo).to be == 42 +# +# # good +# expect(foo).to eq 42 +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/eq.rb#15 +class RuboCop::Cop::RSpec::Eq < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/eq.rb#23 + def be_equals(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/eq.rb#27 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/eq.rb#38 + def offense_range(matcher); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/eq.rb#19 +RuboCop::Cop::RSpec::Eq::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/eq.rb#20 +RuboCop::Cop::RSpec::Eq::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Checks for long examples. +# +# A long example is usually more difficult to understand. Consider +# extracting out some behavior, e.g. with a `let` block, or a helper +# method. +# +# You can set constructs you want to fold with `CountAsOne`. +# Available are: 'array', 'hash', 'heredoc', and 'method_call'. +# Each construct will be counted as one line regardless of +# its actual size. +# +# @example +# # bad +# it do +# service = described_class.new +# more_setup +# more_setup +# result = service.call +# expect(result).to be(true) +# end +# +# # good +# it do +# service = described_class.new +# result = service.call +# expect(result).to be(true) +# end +# @example CountAsOne: ['array', 'heredoc', 'method_call'] +# +# it do +# array = [ # +1 +# 1, +# 2 +# ] +# +# hash = { # +3 +# key: 'value' +# } +# +# msg = <<~HEREDOC # +1 +# Heredoc +# content. +# HEREDOC +# +# foo( # +1 +# 1, +# 2 +# ) +# end # 6 points +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/example_length.rb#57 +class RuboCop::Cop::RSpec::ExampleLength < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::CodeLength + + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_length.rb#62 + def on_block(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_length.rb#70 + def cop_label; end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/example_length.rb#60 +RuboCop::Cop::RSpec::ExampleLength::LABEL = T.let(T.unsafe(nil), String) + +# Checks for examples without a description. +# +# RSpec allows for auto-generated example descriptions when there is no +# description provided or the description is an empty one. +# It is acceptable to use `specify` without a description +# +# This cop removes empty descriptions. +# It also defines whether auto-generated description is allowed, based +# on the configured style. +# +# This cop can be configured using the `EnforcedStyle` option +# +# @example +# # always good +# specify do +# result = service.call +# expect(result).to be(true) +# end +# @example `EnforcedStyle: always_allow` (default) +# # bad +# it('') { is_expected.to be_good } +# specify '' do +# result = service.call +# expect(result).to be(true) +# end +# +# # good +# it { is_expected.to be_good } +# specify do +# result = service.call +# expect(result).to be(true) +# end +# @example `EnforcedStyle: single_line_only` +# # bad +# it('') { is_expected.to be_good } +# it do +# result = service.call +# expect(result).to be(true) +# end +# +# # good +# it { is_expected.to be_good } +# @example `EnforcedStyle: disallow` +# # bad +# it { is_expected.to be_good } +# it do +# result = service.call +# expect(result).to be(true) +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/example_without_description.rb#59 +class RuboCop::Cop::RSpec::ExampleWithoutDescription < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_without_description.rb#67 + def example_description(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_without_description.rb#69 + def on_block(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_without_description.rb#83 + def check_example_without_description(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_without_description.rb#91 + def disallow_empty_description?(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/example_without_description.rb#64 +RuboCop::Cop::RSpec::ExampleWithoutDescription::MSG_ADD_DESCRIPTION = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/example_without_description.rb#62 +RuboCop::Cop::RSpec::ExampleWithoutDescription::MSG_DEFAULT_ARGUMENT = T.let(T.unsafe(nil), String) + +# Checks for common mistakes in example descriptions. +# +# This cop will correct docstrings that begin with 'should' and 'it'. +# This cop will also look for insufficient examples and call them out. +# +# The autocorrect is experimental - use with care! It can be configured +# with CustomTransform (e.g. have => has) and IgnoredWords (e.g. only). +# +# Use the DisallowedExamples setting to prevent unclear or insufficient +# descriptions. Please note that this config will not be treated as +# case sensitive. +# +# @example +# # bad +# it 'should find nothing' do +# end +# +# it 'will find nothing' do +# end +# +# # good +# it 'finds nothing' do +# end +# @example +# # bad +# it 'it does things' do +# end +# +# # good +# it 'does things' do +# end +# @example `DisallowedExamples: ['works']` (default) +# # bad +# it 'works' do +# end +# +# # good +# it 'marks the task as done' do +# end +# @see http://betterspecs.org/#should +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#49 +class RuboCop::Cop::RSpec::ExampleWording < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#63 + def it_description(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#71 + def on_block(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#89 + def add_wording_offense(node, message); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#136 + def custom_transform; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#99 + def docstring(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#140 + def ignored_words; end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#144 + def insufficient_docstring?(description_node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#148 + def insufficient_examples; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#153 + def preprocess(message); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#109 + def replacement_text(node); end + + # Recursive processing is required to process nested dstr nodes + # that is the case for \-separated multiline strings with interpolation. + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#125 + def text(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#60 +RuboCop::Cop::RSpec::ExampleWording::IT_PREFIX = T.let(T.unsafe(nil), Regexp) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#55 +RuboCop::Cop::RSpec::ExampleWording::MSG_INSUFFICIENT_DESCRIPTION = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#54 +RuboCop::Cop::RSpec::ExampleWording::MSG_IT = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#52 +RuboCop::Cop::RSpec::ExampleWording::MSG_SHOULD = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#53 +RuboCop::Cop::RSpec::ExampleWording::MSG_WILL = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#58 +RuboCop::Cop::RSpec::ExampleWording::SHOULD_PREFIX = T.let(T.unsafe(nil), Regexp) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/example_wording.rb#59 +RuboCop::Cop::RSpec::ExampleWording::WILL_PREFIX = T.let(T.unsafe(nil), Regexp) + +# Checks for excessive whitespace in example descriptions. +# +# @example +# # bad +# it ' has excessive spacing ' do +# end +# +# # good +# it 'has excessive spacing' do +# end +# @example +# # bad +# context ' when a condition is met ' do +# end +# +# # good +# context 'when a condition is met' do +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/excessive_docstring_spacing.rb#26 +class RuboCop::Cop::RSpec::ExcessiveDocstringSpacing < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/excessive_docstring_spacing.rb#32 + def example_description(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/excessive_docstring_spacing.rb#39 + def on_send(node); end + + private + + # @param node [RuboCop::AST::Node] + # @param text [String] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/excessive_docstring_spacing.rb#76 + def add_whitespace_offense(node, text); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/excessive_docstring_spacing.rb#85 + def docstring(node); end + + # @param text [String] + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/excessive_docstring_spacing.rb#54 + def excessive_whitespace?(text); end + + # @param text [String] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/excessive_docstring_spacing.rb#68 + def strip_excessive_whitespace(text); end + + # Recursive processing is required to process nested dstr nodes + # that is the case for \-separated multiline strings with interpolation. + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/excessive_docstring_spacing.rb#97 + def text(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/excessive_docstring_spacing.rb#29 +RuboCop::Cop::RSpec::ExcessiveDocstringSpacing::MSG = T.let(T.unsafe(nil), String) + +# Checks for `expect(...)` calls containing literal values. +# +# Autocorrection is performed when the expected is not a literal. +# +# @example +# # bad +# expect(5).to eq(price) +# expect(/foo/).to eq(pattern) +# expect("John").to eq(name) +# +# # good +# expect(price).to eq(5) +# expect(pattern).to eq(/foo/) +# expect(name).to eq("John") +# +# # bad (not supported autocorrection) +# expect(false).to eq(true) +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_actual.rb#24 +class RuboCop::Cop::RSpec::ExpectActual < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_actual.rb#57 + def expect_literal(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_actual.rb#68 + def on_send(node); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_actual.rb#98 + def complex_literal?(node); end + + # This is not implemented using a NodePattern because it seems + # to not be able to match against an explicit (nil) sexp + # + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_actual.rb#90 + def literal?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_actual.rb#94 + def simple_literal?(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_actual.rb#44 +RuboCop::Cop::RSpec::ExpectActual::COMPLEX_LITERALS = T.let(T.unsafe(nil), Array) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_actual.rb#54 +RuboCop::Cop::RSpec::ExpectActual::CORRECTABLE_MATCHERS = T.let(T.unsafe(nil), Array) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_actual.rb#27 +RuboCop::Cop::RSpec::ExpectActual::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_actual.rb#29 +RuboCop::Cop::RSpec::ExpectActual::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_actual.rb#31 +RuboCop::Cop::RSpec::ExpectActual::SIMPLE_LITERALS = T.let(T.unsafe(nil), Array) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_actual.rb#53 +RuboCop::Cop::RSpec::ExpectActual::SKIPPED_MATCHERS = T.let(T.unsafe(nil), Array) + +# Checks for consistent style of change matcher. +# +# Enforces either passing object and attribute as arguments to the matcher +# or passing a block that reads the attribute value. +# +# This cop can be configured using the `EnforcedStyle` option. +# +# @example `EnforcedStyle: method_call` (default) +# # bad +# expect { run }.to change { Foo.bar } +# expect { run }.to change { foo.baz } +# +# # good +# expect { run }.to change(Foo, :bar) +# expect { run }.to change(foo, :baz) +# # also good when there are arguments or chained method calls +# expect { run }.to change { Foo.bar(:count) } +# expect { run }.to change { user.reload.name } +# @example `EnforcedStyle: block` +# # bad +# expect { run }.to change(Foo, :bar) +# +# # good +# expect { run }.to change { Foo.bar } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_change.rb#32 +class RuboCop::Cop::RSpec::ExpectChange < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_change.rb#41 + def expect_change_with_arguments(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_change.rb#46 + def expect_change_with_block(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_change.rb#72 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_change.rb#60 + def on_send(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_change.rb#36 +RuboCop::Cop::RSpec::ExpectChange::MSG_BLOCK = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_change.rb#37 +RuboCop::Cop::RSpec::ExpectChange::MSG_CALL = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_change.rb#38 +RuboCop::Cop::RSpec::ExpectChange::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Do not use `expect` in hooks such as `before`. +# +# @example +# # bad +# before do +# expect(something).to eq 'foo' +# end +# +# # bad +# after do +# expect_any_instance_of(Something).to receive(:foo) +# end +# +# # good +# it do +# expect(something).to eq 'foo' +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_in_hook.rb#24 +class RuboCop::Cop::RSpec::ExpectInHook < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_in_hook.rb#28 + def expectation(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_in_hook.rb#30 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_in_hook.rb#30 + def on_numblock(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_in_hook.rb#44 + def message(expect, hook); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_in_hook.rb#25 +RuboCop::Cop::RSpec::ExpectInHook::MSG = T.let(T.unsafe(nil), String) + +# Do not use `expect` in let. +# +# @example +# # bad +# let(:foo) do +# expect(something).to eq 'foo' +# end +# +# # good +# it do +# expect(something).to eq 'foo' +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_in_let.rb#19 +class RuboCop::Cop::RSpec::ExpectInLet < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_in_let.rb#23 + def expectation(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_in_let.rb#25 + def on_block(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_in_let.rb#36 + def message(expect); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_in_let.rb#20 +RuboCop::Cop::RSpec::ExpectInLet::MSG = T.let(T.unsafe(nil), String) + +# Checks for opportunities to use `expect { ... }.to output`. +# +# @example +# # bad +# $stdout = StringIO.new +# my_app.print_report +# $stdout = STDOUT +# expect($stdout.string).to eq('Hello World') +# +# # good +# expect { my_app.print_report }.to output('Hello World').to_stdout +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_output.rb#18 +class RuboCop::Cop::RSpec::ExpectOutput < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_output.rb#22 + def on_gvasgn(node); end + + private + + # Detect if we are inside the scope of a single example + # + # We want to encourage using `expect { ... }.to output` so + # we only care about situations where you would replace with + # an expectation. Therefore, assignments to stderr or stdout + # within a `before(:all)` or otherwise outside of an example + # don't matter. + # + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/expect_output.rb#40 + def inside_example_scope?(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/expect_output.rb#19 +RuboCop::Cop::RSpec::ExpectOutput::MSG = T.let(T.unsafe(nil), String) + +# A helper for `explicit` style +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#121 +module RuboCop::Cop::RSpec::ExplicitHelper + include ::RuboCop::RSpec::Language + extend ::RuboCop::AST::NodePattern::Macros + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#182 + def predicate_matcher?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#195 + def predicate_matcher_block?(param0 = T.unsafe(nil)); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#135 + def allowed_explicit_matchers; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#139 + def check_explicit(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#219 + def corrector_explicit(corrector, to_node, actual, matcher, block_child); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#175 + def heredoc_argument?(matcher); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#213 + def message_explicit(matcher); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#226 + def move_predicate(corrector, actual, matcher, block_child); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#204 + def predicate_matcher_name?(name); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#162 + def replaceable_matcher?(matcher); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#255 + def replacement_matcher(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#237 + def to_predicate_method(matcher); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#171 + def uncorrectable_matcher?(node, matcher); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#127 +RuboCop::Cop::RSpec::ExplicitHelper::BUILT_IN_MATCHERS = T.let(T.unsafe(nil), Array) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#125 +RuboCop::Cop::RSpec::ExplicitHelper::MSG_EXPLICIT = T.let(T.unsafe(nil), String) + +# Help methods for file. +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/file_help.rb#7 +module RuboCop::Cop::RSpec::FileHelp + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/file_help.rb#8 + def expanded_file_path; end +end + +# Helps find the true end location of nodes which might contain heredocs. +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/final_end_location.rb#7 +module RuboCop::Cop::RSpec::FinalEndLocation + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/final_end_location.rb#8 + def final_end_location(start_node); end +end + +# Checks if examples are focused. +# +# This cop does not support autocorrection in some cases. +# +# @example +# # bad +# describe MyClass, focus: true do +# end +# +# describe MyClass, :focus do +# end +# +# fdescribe MyClass do +# end +# +# # good +# describe MyClass do +# end +# +# # bad +# fdescribe 'test' do; end +# +# # good +# describe 'test' do; end +# +# # bad +# fdescribe 'test' do; end +# +# # good +# describe 'test' do; end +# +# # bad +# shared_examples 'test', focus: true do; end +# +# # good +# shared_examples 'test' do; end +# +# # bad +# shared_context 'test', focus: true do; end +# +# # good +# shared_context 'test' do; end +# +# # bad (does not support autocorrection) +# focus 'test' do; end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/focus.rb#52 +class RuboCop::Cop::RSpec::Focus < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/focus.rb#59 + def focusable_selector?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/focus.rb#77 + def focused_block?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/focus.rb#71 + def metadata(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/focus.rb#81 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/focus.rb#110 + def correct_send(corrector, focus); end + + # @yield [node] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/focus.rb#97 + def focus_metadata(node, &block); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/focus.rb#103 + def with_surrounding(focus); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/focus.rb#56 +RuboCop::Cop::RSpec::Focus::MSG = T.let(T.unsafe(nil), String) + +# Checks the arguments passed to `before`, `around`, and `after`. +# +# This cop checks for consistent style when specifying RSpec +# hooks which run for each example. There are three supported +# styles: "implicit", "each", and "example." All styles have +# the same behavior. +# +# @example `EnforcedStyle: implicit` (default) +# # bad +# before(:each) do +# # ... +# end +# +# # bad +# before(:example) do +# # ... +# end +# +# # good +# before do +# # ... +# end +# @example `EnforcedStyle: each` +# # bad +# before(:example) do +# # ... +# end +# +# # bad +# before do +# # ... +# end +# +# # good +# before(:each) do +# # ... +# end +# @example `EnforcedStyle: example` +# # bad +# before(:each) do +# # ... +# end +# +# # bad +# before do +# # ... +# end +# +# # good +# before(:example) do +# # ... +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/hook_argument.rb#61 +class RuboCop::Cop::RSpec::HookArgument < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/hook_argument.rb#78 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/hook_argument.rb#78 + def on_numblock(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/hook_argument.rb#69 + def scoped_hook(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/hook_argument.rb#74 + def unscoped_hook(param0 = T.unsafe(nil)); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/hook_argument.rb#95 + def autocorrect(corrector, _node, method_send); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/hook_argument.rb#102 + def check_implicit(method_send); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/hook_argument.rb#116 + def explicit_message(scope); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/hook_argument.rb#128 + def hook(node, &block); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/hook_argument.rb#124 + def implicit_style?; end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/hook_argument.rb#66 +RuboCop::Cop::RSpec::HookArgument::EXPLICIT_MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/hook_argument.rb#65 +RuboCop::Cop::RSpec::HookArgument::IMPLICIT_MSG = T.let(T.unsafe(nil), String) + +# Checks for before/around/after hooks that come after an example. +# +# @example +# # bad +# it 'checks what foo does' do +# expect(foo).to be +# end +# +# before { prepare } +# after { clean_up } +# +# # good +# before { prepare } +# after { clean_up } +# +# it 'checks what foo does' do +# expect(foo).to be +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/hooks_before_examples.rb#25 +class RuboCop::Cop::RSpec::HooksBeforeExamples < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/hooks_before_examples.rb#31 + def example_or_group?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/hooks_before_examples.rb#41 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/hooks_before_examples.rb#41 + def on_numblock(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/hooks_before_examples.rb#73 + def autocorrect(corrector, node, first_example); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/hooks_before_examples.rb#55 + def check_hooks(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/hooks_before_examples.rb#69 + def find_first_example(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/hooks_before_examples.rb#51 + def multiline_block?(block); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/hooks_before_examples.rb#28 +RuboCop::Cop::RSpec::HooksBeforeExamples::MSG = T.let(T.unsafe(nil), String) + +# Checks for equality assertions with identical expressions on both sides. +# +# @example +# # bad +# expect(foo.bar).to eq(foo.bar) +# expect(foo.bar).to eql(foo.bar) +# +# # good +# expect(foo.bar).to eq(2) +# expect(foo.bar).to eql(2) +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/identical_equality_assertion.rb#17 +class RuboCop::Cop::RSpec::IdenticalEqualityAssertion < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/identical_equality_assertion.rb#23 + def equality_check?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/identical_equality_assertion.rb#29 + def on_send(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/identical_equality_assertion.rb#18 +RuboCop::Cop::RSpec::IdenticalEqualityAssertion::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/identical_equality_assertion.rb#20 +RuboCop::Cop::RSpec::IdenticalEqualityAssertion::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Check that implicit block expectation syntax is not used. +# +# Prefer using explicit block expectations. +# +# @example +# # bad +# subject { -> { do_something } } +# it { is_expected.to change(something).to(new_value) } +# +# # good +# it 'changes something to a new value' do +# expect { do_something }.to change(something).to(new_value) +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_block_expectation.rb#20 +class RuboCop::Cop::RSpec::ImplicitBlockExpectation < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_block_expectation.rb#36 + def implicit_expect(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_block_expectation.rb#25 + def lambda?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_block_expectation.rb#33 + def lambda_subject?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_block_expectation.rb#40 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_block_expectation.rb#62 + def find_subject(block_node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_block_expectation.rb#58 + def multi_statement_example_group?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_block_expectation.rb#49 + def nearest_subject(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_block_expectation.rb#21 +RuboCop::Cop::RSpec::ImplicitBlockExpectation::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_block_expectation.rb#22 +RuboCop::Cop::RSpec::ImplicitBlockExpectation::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Check that a consistent implicit expectation style is used. +# +# This cop can be configured using the `EnforcedStyle` option +# and supports the `--auto-gen-config` flag. +# +# @example `EnforcedStyle: is_expected` (default) +# # bad +# it { should be_truthy } +# +# # good +# it { is_expected.to be_truthy } +# @example `EnforcedStyle: should` +# # bad +# it { is_expected.to be_truthy } +# +# # good +# it { should be_truthy } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_expect.rb#25 +class RuboCop::Cop::RSpec::ImplicitExpect < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_expect.rb#34 + def implicit_expect(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_expect.rb#49 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_expect.rb#78 + def is_expected_range(source_map); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_expect.rb#69 + def offending_expect(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_expect.rb#86 + def offense_message(offending_source); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_expect.rb#94 + def replacement_source(offending_source); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_expect.rb#47 +RuboCop::Cop::RSpec::ImplicitExpect::ENFORCED_REPLACEMENTS = T.let(T.unsafe(nil), Hash) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_expect.rb#29 +RuboCop::Cop::RSpec::ImplicitExpect::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_expect.rb#31 +RuboCop::Cop::RSpec::ImplicitExpect::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Checks for usage of implicit subject (`is_expected` / `should`). +# +# This cop can be configured using the `EnforcedStyle` option +# +# @example `EnforcedStyle: single_line_only` (default) +# # bad +# it do +# is_expected.to be_truthy +# end +# +# # good +# it { is_expected.to be_truthy } +# it do +# expect(subject).to be_truthy +# end +# @example `EnforcedStyle: single_statement_only` +# # bad +# it do +# foo = 1 +# is_expected.to be_truthy +# end +# +# # good +# it do +# foo = 1 +# expect(subject).to be_truthy +# end +# it do +# is_expected.to be_truthy +# end +# @example `EnforcedStyle: disallow` +# # bad +# it { is_expected.to be_truthy } +# +# # good +# it { expect(subject).to be_truthy } +# @example `EnforcedStyle: require_implicit` +# # bad +# it { expect(subject).to be_truthy } +# +# # good +# it { is_expected.to be_truthy } +# +# # bad +# it do +# expect(subject).to be_truthy +# end +# +# # good +# it do +# is_expected.to be_truthy +# end +# +# # good +# it { expect(named_subject).to be_truthy } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#65 +class RuboCop::Cop::RSpec::ImplicitSubject < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#81 + def explicit_unnamed_subject?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#86 + def implicit_subject?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#90 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#100 + def autocorrect(corrector, node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#159 + def example_of(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#135 + def implicit_subject_in_non_its?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#139 + def implicit_subject_in_non_its_and_non_single_line?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#143 + def implicit_subject_in_non_its_and_non_single_statement?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#122 + def invalid?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#147 + def its?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#113 + def message(_node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#151 + def single_line?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#155 + def single_statement?(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#69 +RuboCop::Cop::RSpec::ImplicitSubject::MSG_REQUIRE_EXPLICIT = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#71 +RuboCop::Cop::RSpec::ImplicitSubject::MSG_REQUIRE_IMPLICIT = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/implicit_subject.rb#73 +RuboCop::Cop::RSpec::ImplicitSubject::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Do not set up test data using indexes (e.g., `item_1`, `item_2`). +# +# It makes reading the test harder because it's not clear what exactly +# is tested by this particular example. +# +# The configurable options `AllowedIdentifiers` and `AllowedPatterns` +# will also read those set in `Naming/VariableNumber`. +# +# @example `Max: 1 (default)` +# # bad +# let(:item_1) { create(:item) } +# let(:item_2) { create(:item) } +# +# let(:item1) { create(:item) } +# let(:item2) { create(:item) } +# +# # good +# +# let(:visible_item) { create(:item, visible: true) } +# let(:invisible_item) { create(:item, visible: false) } +# @example `Max: 2` +# # bad +# let(:item_1) { create(:item) } +# let(:item_2) { create(:item) } +# let(:item_3) { create(:item) } +# +# # good +# let(:item_1) { create(:item) } +# let(:item_2) { create(:item) } +# @example `AllowedIdentifiers: ['item_1', 'item_2']` +# # good +# let(:item_1) { create(:item) } +# let(:item_2) { create(:item) } +# @example `AllowedPatterns: ['item']` +# # good +# let(:item_1) { create(:item) } +# let(:item_2) { create(:item) } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/indexed_let.rb#47 +class RuboCop::Cop::RSpec::IndexedLet < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::AllowedIdentifiers + include ::RuboCop::Cop::AllowedPattern + + # source://rubocop-rspec//lib/rubocop/cop/rspec/indexed_let.rb#55 + def let_name(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/indexed_let.rb#62 + def on_block(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/indexed_let.rb#105 + def allowed_identifiers; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/indexed_let.rb#99 + def cop_config_patterns_values; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/indexed_let.rb#79 + def filter_indexed_lets(candidates); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/indexed_let.rb#88 + def indexed_let?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/indexed_let.rb#95 + def let_name_stripped_index(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/indexed_let.rb#77 +RuboCop::Cop::RSpec::IndexedLet::INDEX_REGEX = T.let(T.unsafe(nil), Regexp) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/indexed_let.rb#51 +RuboCop::Cop::RSpec::IndexedLet::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/indexed_let.rb#76 +RuboCop::Cop::RSpec::IndexedLet::SUFFIX_INDEX_REGEX = T.let(T.unsafe(nil), Regexp) + +# A helper for `inflected` style +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#7 +module RuboCop::Cop::RSpec::InflectedHelper + include ::RuboCop::RSpec::Language + extend ::RuboCop::AST::NodePattern::Macros + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#39 + def be_bool?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#44 + def be_boolthy?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#29 + def predicate_in_actual?(param0 = T.unsafe(nil)); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#48 + def boolean_matcher?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#16 + def check_inflected(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#60 + def message_inflected(predicate); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#56 + def predicate?(sym); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#85 + def remove_predicate(corrector, predicate); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#96 + def rewrite_matcher(corrector, predicate, matcher); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#67 + def to_predicate_matcher(name); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#107 + def true?(to_symbol, matcher); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#11 +RuboCop::Cop::RSpec::InflectedHelper::MSG_INFLECTED = T.let(T.unsafe(nil), String) + +# Helps you identify whether a given node +# is within an example group or not. +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/inside_example_group.rb#8 +module RuboCop::Cop::RSpec::InsideExampleGroup + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/inside_example_group.rb#19 + def example_group_root?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/inside_example_group.rb#23 + def example_group_root_with_siblings?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/inside_example_group.rb#11 + def inside_example_group?(node); end +end + +# Checks for `instance_double` used with `have_received`. +# +# @example +# # bad +# it do +# foo = instance_double(Foo).as_null_object +# expect(foo).to have_received(:bar) +# end +# +# # good +# it do +# foo = instance_spy(Foo) +# expect(foo).to have_received(:bar) +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/instance_spy.rb#21 +class RuboCop::Cop::RSpec::InstanceSpy < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/instance_spy.rb#36 + def have_received_usage(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/instance_spy.rb#28 + def null_double(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/instance_spy.rb#45 + def on_block(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/instance_spy.rb#61 + def autocorrect(corrector, node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/instance_spy.rb#24 +RuboCop::Cop::RSpec::InstanceSpy::MSG = T.let(T.unsafe(nil), String) + +# Checks for instance variable usage in specs. +# +# This cop can be configured with the option `AssignmentOnly` which +# will configure the cop to only register offenses on instance +# variable usage if the instance variable is also assigned within +# the spec +# +# @example +# # bad +# describe MyClass do +# before { @foo = [] } +# it { expect(@foo).to be_empty } +# end +# +# # good +# describe MyClass do +# let(:foo) { [] } +# it { expect(foo).to be_empty } +# end +# @example with AssignmentOnly configuration +# # rubocop.yml +# # RSpec/InstanceVariable: +# # AssignmentOnly: true +# +# # bad +# describe MyClass do +# before { @foo = [] } +# it { expect(@foo).to be_empty } +# end +# +# # allowed +# describe MyClass do +# it { expect(@foo).to be_empty } +# end +# +# # good +# describe MyClass do +# let(:foo) { [] } +# it { expect(foo).to be_empty } +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/instance_variable.rb#48 +class RuboCop::Cop::RSpec::InstanceVariable < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::TopLevelGroup + + # source://rubocop-rspec//lib/rubocop/cop/rspec/instance_variable.rb#60 + def custom_matcher?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/instance_variable.rb#55 + def dynamic_class?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/instance_variable.rb#71 + def ivar_assigned?(param0, param1); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/instance_variable.rb#68 + def ivar_usage(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/instance_variable.rb#73 + def on_top_level_group(node); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/instance_variable.rb#90 + def assignment_only?; end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/instance_variable.rb#84 + def valid_usage?(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/instance_variable.rb#51 +RuboCop::Cop::RSpec::InstanceVariable::MSG = T.let(T.unsafe(nil), String) + +# Check for `specify` with `is_expected` and one-liner expectations. +# +# @example +# # bad +# specify { is_expected.to be_truthy } +# +# # good +# it { is_expected.to be_truthy } +# +# # good +# specify do +# # ... +# end +# specify { expect(sqrt(4)).to eq(2) } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/is_expected_specify.rb#21 +class RuboCop::Cop::RSpec::IsExpectedSpecify < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/is_expected_specify.rb#29 + def offense?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/is_expected_specify.rb#33 + def on_send(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/is_expected_specify.rb#25 +RuboCop::Cop::RSpec::IsExpectedSpecify::IS_EXPECTED_METHODS = T.let(T.unsafe(nil), Set) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/is_expected_specify.rb#26 +RuboCop::Cop::RSpec::IsExpectedSpecify::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/is_expected_specify.rb#24 +RuboCop::Cop::RSpec::IsExpectedSpecify::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Checks that only one `it_behaves_like` style is used. +# +# @example `EnforcedStyle: it_behaves_like` (default) +# # bad +# it_should_behave_like 'a foo' +# +# # good +# it_behaves_like 'a foo' +# @example `EnforcedStyle: it_should_behave_like` +# # bad +# it_behaves_like 'a foo' +# +# # good +# it_should_behave_like 'a foo' +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/it_behaves_like.rb#22 +class RuboCop::Cop::RSpec::ItBehavesLike < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/it_behaves_like.rb#31 + def example_inclusion_offense(param0 = T.unsafe(nil), param1); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/it_behaves_like.rb#33 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/it_behaves_like.rb#43 + def message(_node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/it_behaves_like.rb#26 +RuboCop::Cop::RSpec::ItBehavesLike::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/it_behaves_like.rb#28 +RuboCop::Cop::RSpec::ItBehavesLike::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Check that `all` matcher is used instead of iterating over an array. +# +# @example +# # bad +# it 'validates users' do +# [user1, user2, user3].each { |user| expect(user).to be_valid } +# end +# +# # good +# it 'validates users' do +# expect([user1, user2, user3]).to all(be_valid) +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/iterated_expectation.rb#19 +class RuboCop::Cop::RSpec::IteratedExpectation < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/iterated_expectation.rb#24 + def each?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/iterated_expectation.rb#33 + def each_numblock?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/iterated_expectation.rb#40 + def expectation?(param0 = T.unsafe(nil), param1); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/iterated_expectation.rb#44 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/iterated_expectation.rb#52 + def on_numblock(node); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/iterated_expectation.rb#66 + def only_expectations?(body, arg); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/iterated_expectation.rb#62 + def single_expectation?(body, arg); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/iterated_expectation.rb#20 +RuboCop::Cop::RSpec::IteratedExpectation::MSG = T.let(T.unsafe(nil), String) + +# Enforce that subject is the first definition in the test. +# +# @example +# # bad +# let(:params) { blah } +# subject { described_class.new(params) } +# +# before { do_something } +# subject { described_class.new(params) } +# +# it { expect_something } +# subject { described_class.new(params) } +# it { expect_something_else } +# +# # good +# subject { described_class.new(params) } +# let(:params) { blah } +# +# # good +# subject { described_class.new(params) } +# before { do_something } +# +# # good +# subject { described_class.new(params) } +# it { expect_something } +# it { expect_something_else } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/leading_subject.rb#34 +class RuboCop::Cop::RSpec::LeadingSubject < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::InsideExampleGroup + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/leading_subject.rb#40 + def on_block(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/leading_subject.rb#70 + def autocorrect(corrector, node, sibling); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/leading_subject.rb#49 + def check_previous_nodes(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/leading_subject.rb#76 + def offending?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/leading_subject.rb#58 + def offending_node(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/leading_subject.rb#66 + def parent(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/leading_subject.rb#38 +RuboCop::Cop::RSpec::LeadingSubject::MSG = T.let(T.unsafe(nil), String) + +# Checks that no class, module, or constant is declared. +# +# Constants, including classes and modules, when declared in a block +# scope, are defined in global namespace, and leak between examples. +# +# If several examples may define a `DummyClass`, instead of being a +# blank slate class as it will be in the first example, subsequent +# examples will be reopening it and modifying its behavior in +# unpredictable ways. +# Even worse when a class that exists in the codebase is reopened. +# +# Anonymous classes are fine, since they don't result in global +# namespace name clashes. +# +# @example Constants leak between examples +# # bad +# describe SomeClass do +# OtherClass = Struct.new +# CONSTANT_HERE = 'I leak into global namespace' +# end +# +# # good +# describe SomeClass do +# before do +# stub_const('OtherClass', Struct.new) +# stub_const('CONSTANT_HERE', 'I only exist during this example') +# end +# end +# @example +# # bad +# describe SomeClass do +# class FooClass < described_class +# def double_that +# some_base_method * 2 +# end +# end +# +# it { expect(FooClass.new.double_that).to eq(4) } +# end +# +# # good - anonymous class, no constant needs to be defined +# describe SomeClass do +# let(:foo_class) do +# Class.new(described_class) do +# def double_that +# some_base_method * 2 +# end +# end +# end +# +# it { expect(foo_class.new.double_that).to eq(4) } +# end +# +# # good - constant is stubbed +# describe SomeClass do +# before do +# foo_class = Class.new(described_class) do +# def do_something +# end +# end +# stub_const('FooClass', foo_class) +# end +# +# it { expect(FooClass.new.double_that).to eq(4) } +# end +# @example +# # bad +# describe SomeClass do +# module SomeModule +# class SomeClass +# def do_something +# end +# end +# end +# end +# +# # good +# describe SomeClass do +# before do +# foo_class = Class.new(described_class) do +# def do_something +# end +# end +# stub_const('SomeModule::SomeClass', foo_class) +# end +# end +# @see https://rspec.info/features/3-12/rspec-mocks/mutating-constants +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/leaky_constant_declaration.rb#96 +class RuboCop::Cop::RSpec::LeakyConstantDeclaration < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/leaky_constant_declaration.rb#101 + def on_casgn(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/leaky_constant_declaration.rb#107 + def on_class(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/leaky_constant_declaration.rb#113 + def on_module(node); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/leaky_constant_declaration.rb#121 + def inside_describe_block?(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/leaky_constant_declaration.rb#98 +RuboCop::Cop::RSpec::LeakyConstantDeclaration::MSG_CLASS = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/leaky_constant_declaration.rb#97 +RuboCop::Cop::RSpec::LeakyConstantDeclaration::MSG_CONST = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/leaky_constant_declaration.rb#99 +RuboCop::Cop::RSpec::LeakyConstantDeclaration::MSG_MODULE = T.let(T.unsafe(nil), String) + +# Checks for `let` definitions that come after an example. +# +# @example +# # bad +# let(:foo) { bar } +# +# it 'checks what foo does' do +# expect(foo).to be +# end +# +# let(:some) { other } +# +# it 'checks what some does' do +# expect(some).to be +# end +# +# # good +# let(:foo) { bar } +# let(:some) { other } +# +# it 'checks what foo does' do +# expect(foo).to be +# end +# +# it 'checks what some does' do +# expect(some).to be +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/let_before_examples.rb#33 +class RuboCop::Cop::RSpec::LetBeforeExamples < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/let_before_examples.rb#39 + def example_or_group?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/let_before_examples.rb#47 + def include_examples?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/let_before_examples.rb#58 + def on_block(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/let_before_examples.rb#93 + def autocorrect(corrector, node, first_example); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/let_before_examples.rb#74 + def check_let_declarations(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/let_before_examples.rb#66 + def example_group_with_include_examples?(body); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/let_before_examples.rb#89 + def find_first_example(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/let_before_examples.rb#70 + def multiline_block?(block); end + + class << self + # source://rubocop-rspec//lib/rubocop/cop/rspec/let_before_examples.rb#54 + def autocorrect_incompatible_with; end + end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/let_before_examples.rb#36 +RuboCop::Cop::RSpec::LetBeforeExamples::MSG = T.let(T.unsafe(nil), String) + +# Checks unreferenced `let!` calls being used for test setup. +# +# @example +# # bad +# let!(:my_widget) { create(:widget) } +# +# it 'counts widgets' do +# expect(Widget.count).to eq(1) +# end +# +# # good +# it 'counts widgets' do +# create(:widget) +# expect(Widget.count).to eq(1) +# end +# +# # good +# before { create(:widget) } +# +# it 'counts widgets' do +# expect(Widget.count).to eq(1) +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/let_setup.rb#28 +class RuboCop::Cop::RSpec::LetSetup < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/let_setup.rb#32 + def example_or_shared_group_or_including?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/let_setup.rb#40 + def let_bang(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/let_setup.rb#48 + def method_called?(param0, param1); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/let_setup.rb#50 + def on_block(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/let_setup.rb#66 + def child_let_bang(node, &block); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/let_setup.rb#60 + def unused_let_bang(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/let_setup.rb#29 +RuboCop::Cop::RSpec::LetSetup::MSG = T.let(T.unsafe(nil), String) + +# Helper methods to location. +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/location_help.rb#7 +module RuboCop::Cop::RSpec::LocationHelp + private + + # @example + # foo 1, 2 + # ^^^^^ + # @param node [RuboCop::AST::SendNode] + # @return [Parser::Source::Range] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/location_help.rb#15 + def arguments_with_whitespace(node); end + + # @example + # foo { bar } + # ^^^^^^^^ + # @param node [RuboCop::AST::SendNode] + # @return [Parser::Source::Range] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/location_help.rb#26 + def block_with_whitespace(node); end + + class << self + # @example + # foo 1, 2 + # ^^^^^ + # @param node [RuboCop::AST::SendNode] + # @return [Parser::Source::Range] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/location_help.rb#15 + def arguments_with_whitespace(node); end + + # @example + # foo { bar } + # ^^^^^^^^ + # @param node [RuboCop::AST::SendNode] + # @return [Parser::Source::Range] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/location_help.rb#26 + def block_with_whitespace(node); end + end +end + +# Checks where `match_array` is used. +# +# This cop checks for the following: +# - Prefer `contain_exactly` when matching an array with values. +# - Prefer `eq` when using `match_array` with an empty array literal. +# +# @example +# # bad +# it { is_expected.to match_array([content1, content2]) } +# +# # good +# it { is_expected.to contain_exactly(content1, content2) } +# +# # good +# it { is_expected.to match_array([content] + array) } +# +# # good +# it { is_expected.to match_array(%w(tremble in fear foolish mortals)) } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/match_array.rb#25 +class RuboCop::Cop::RSpec::MatchArray < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/match_array.rb#32 + def match_array_with_empty_array?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/match_array.rb#36 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/match_array.rb#45 + def check_populated_array(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/match_array.rb#28 +RuboCop::Cop::RSpec::MatchArray::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/match_array.rb#29 +RuboCop::Cop::RSpec::MatchArray::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Check that chains of messages are not being stubbed. +# +# @example +# # bad +# allow(foo).to receive_message_chain(:bar, :baz).and_return(42) +# +# # good +# thing = Thing.new(baz: 42) +# allow(foo).to receive(:bar).and_return(thing) +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/message_chain.rb#16 +class RuboCop::Cop::RSpec::MessageChain < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/message_chain.rb#20 + def on_send(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/message_chain.rb#17 +RuboCop::Cop::RSpec::MessageChain::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/message_chain.rb#18 +RuboCop::Cop::RSpec::MessageChain::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Checks for consistent message expectation style. +# +# This cop can be configured in your configuration using the +# `EnforcedStyle` option and supports `--auto-gen-config`. +# +# @example `EnforcedStyle: allow` (default) +# +# # bad +# expect(foo).to receive(:bar) +# +# # good +# allow(foo).to receive(:bar) +# @example `EnforcedStyle: expect` +# +# # bad +# allow(foo).to receive(:bar) +# +# # good +# expect(foo).to receive(:bar) +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/message_expectation.rb#27 +class RuboCop::Cop::RSpec::MessageExpectation < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + + # source://rubocop-rspec//lib/rubocop/cop/rspec/message_expectation.rb#35 + def message_expectation(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/message_expectation.rb#42 + def on_send(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/message_expectation.rb#40 + def receive_message?(param0); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/message_expectation.rb#55 + def preferred_style?(expectation); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/message_expectation.rb#30 +RuboCop::Cop::RSpec::MessageExpectation::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/message_expectation.rb#32 +RuboCop::Cop::RSpec::MessageExpectation::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Checks that message expectations are set using spies. +# +# This cop can be configured in your configuration using the +# `EnforcedStyle` option and supports `--auto-gen-config`. +# +# @example `EnforcedStyle: have_received` (default) +# +# # bad +# expect(foo).to receive(:bar) +# do_something +# +# # good +# allow(foo).to receive(:bar) # or use instance_spy +# do_something +# expect(foo).to have_received(:bar) +# @example `EnforcedStyle: receive` +# +# # bad +# allow(foo).to receive(:bar) +# do_something +# expect(foo).to have_received(:bar) +# +# # good +# expect(foo).to receive(:bar) +# do_something +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/message_spies.rb#33 +class RuboCop::Cop::RSpec::MessageSpies < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + + # source://rubocop-rspec//lib/rubocop/cop/rspec/message_spies.rb#45 + def message_expectation(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/message_spies.rb#54 + def on_send(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/message_spies.rb#50 + def receive_message(param0); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/message_spies.rb#77 + def error_message(receiver); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/message_spies.rb#73 + def preferred_style?(expectation); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/message_spies.rb#67 + def receive_message_matcher(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/message_spies.rb#38 +RuboCop::Cop::RSpec::MessageSpies::MSG_HAVE_RECEIVED = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/message_spies.rb#36 +RuboCop::Cop::RSpec::MessageSpies::MSG_RECEIVE = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/message_spies.rb#42 +RuboCop::Cop::RSpec::MessageSpies::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Helper methods to find RSpec metadata. +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/metadata.rb#7 +module RuboCop::Cop::RSpec::Metadata + include ::RuboCop::RSpec::Language + extend ::RuboCop::AST::NodePattern::Macros + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/metadata.rb#26 + def metadata_in_block(param0, param1); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/metadata.rb#30 + def on_block(node); end + + # @raise [::NotImplementedError] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/metadata.rb#43 + def on_metadata(_symbols, _hash); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/metadata.rb#30 + def on_numblock(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/metadata.rb#21 + def rspec_configure(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/metadata.rb#13 + def rspec_metadata(param0 = T.unsafe(nil)); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/metadata.rb#49 + def on_metadata_arguments(metadata_arguments); end +end + +# Use consistent metadata style. +# +# This cop does not support autocorrection in the case of +# `EnforcedStyle: hash` where the trailing metadata type is ambiguous. +# (e.g. `describe 'Something', :a, b`) +# +# @example EnforcedStyle: symbol (default) +# # bad +# describe 'Something', a: true +# +# # good +# describe 'Something', :a +# @example EnforcedStyle: hash +# # bad +# describe 'Something', :a +# +# # good +# describe 'Something', a: true +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#25 +class RuboCop::Cop::RSpec::MetadataStyle < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + include ::RuboCop::Cop::RSpec::Metadata + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#33 + def extract_metadata_hash(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#43 + def match_ambiguous_trailing_metadata?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#38 + def match_boolean_metadata_pair?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#47 + def on_metadata(symbols, hash); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#61 + def autocorrect_pair(corrector, node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#66 + def autocorrect_symbol(corrector, node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#73 + def bad_metadata_pair?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#77 + def bad_metadata_symbol?(_node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#81 + def format_symbol_to_pair_source(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#85 + def insert_pair(corrector, node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#96 + def insert_pair_as_last_argument(corrector, node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#105 + def insert_pair_to_empty_hash_metadata(corrector, node, hash_node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#112 + def insert_pair_to_non_empty_hash_metadata(corrector, node, hash_node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#119 + def insert_symbol(corrector, node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#126 + def message_for_style; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#133 + def on_metadata_pair(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#141 + def on_metadata_symbol(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#149 + def remove_pair(corrector, node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#159 + def remove_pair_following(corrector, node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#171 + def remove_pair_preceding(corrector, node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/metadata_style.rb#183 + def remove_symbol(corrector, node); end +end + +# Checks that the first argument to an example group is not empty. +# +# @example +# # bad +# describe do +# end +# +# RSpec.describe do +# end +# +# # good +# describe TestedClass do +# end +# +# describe "A feature example" do +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/missing_example_group_argument.rb#23 +class RuboCop::Cop::RSpec::MissingExampleGroupArgument < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/missing_example_group_argument.rb#26 + def on_block(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/missing_example_group_argument.rb#24 +RuboCop::Cop::RSpec::MissingExampleGroupArgument::MSG = T.let(T.unsafe(nil), String) + +# Checks if `.to`, `not_to` or `to_not` are used. +# +# The RSpec::Expectations::ExpectationTarget must use `to`, `not_to` or +# `to_not` to run. Therefore, this cop checks if other methods are used. +# +# @example +# # bad +# expect(something).kind_of? Foo +# is_expected == 42 +# expect{something}.eq? BarError +# +# # good +# expect(something).to be_a Foo +# is_expected.to eq 42 +# expect{something}.to raise_error BarError +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/missing_expectation_target_method.rb#22 +class RuboCop::Cop::RSpec::MissingExpectationTargetMethod < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/missing_expectation_target_method.rb#27 + def expect?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/missing_expectation_target_method.rb#35 + def expect_block?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/missing_expectation_target_method.rb#40 + def expectation_without_runner?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/missing_expectation_target_method.rb#44 + def on_send(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/missing_expectation_target_method.rb#23 +RuboCop::Cop::RSpec::MissingExpectationTargetMethod::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/missing_expectation_target_method.rb#24 +RuboCop::Cop::RSpec::MissingExpectationTargetMethod::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Checks for multiple top-level example groups. +# +# Multiple descriptions for the same class or module should either +# be nested or separated into different test files. +# +# @example +# # bad +# describe MyClass, '.do_something' do +# end +# describe MyClass, '.do_something_else' do +# end +# +# # good +# describe MyClass do +# describe '.do_something' do +# end +# describe '.do_something_else' do +# end +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_describes.rb#26 +class RuboCop::Cop::RSpec::MultipleDescribes < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::TopLevelGroup + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_describes.rb#31 + def on_top_level_group(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_describes.rb#29 +RuboCop::Cop::RSpec::MultipleDescribes::MSG = T.let(T.unsafe(nil), String) + +# Checks if examples contain too many `expect` calls. +# +# This cop is configurable using the `Max` option +# and works with `--auto-gen-config`. +# +# @example +# # bad +# describe UserCreator do +# it 'builds a user' do +# expect(user.name).to eq("John") +# expect(user.age).to eq(22) +# end +# end +# +# # good +# describe UserCreator do +# it 'sets the users name' do +# expect(user.name).to eq("John") +# end +# +# it 'sets the users age' do +# expect(user.age).to eq(22) +# end +# end +# @example `aggregate_failures: true` (default) +# # good - the cop ignores when RSpec aggregates failures +# describe UserCreator do +# it 'builds a user', :aggregate_failures do +# expect(user.name).to eq("John") +# expect(user.age).to eq(22) +# end +# end +# @example `aggregate_failures: false` +# # Detected as an offense +# describe UserCreator do +# it 'builds a user', aggregate_failures: false do +# expect(user.name).to eq("John") +# expect(user.age).to eq(22) +# end +# end +# @example `Max: 1` (default) +# # bad +# describe UserCreator do +# it 'builds a user' do +# expect(user.name).to eq("John") +# expect(user.age).to eq(22) +# end +# end +# @example `Max: 2` +# # good +# describe UserCreator do +# it 'builds a user' do +# expect(user.name).to eq("John") +# expect(user.age).to eq(22) +# end +# end +# @see http://betterspecs.org/#single Single expectation test +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_expectations.rb#69 +class RuboCop::Cop::RSpec::MultipleExpectations < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_expectations.rb#78 + def aggregate_failures?(param0 = T.unsafe(nil), param1); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_expectations.rb#89 + def aggregate_failures_block?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_expectations.rb#86 + def expect?(param0 = T.unsafe(nil)); end + + # source://rubocop/1.66.1/lib/rubocop/cop/exclude_limit.rb#11 + def max=(value); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_expectations.rb#93 + def on_block(node); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_expectations.rb#109 + def example_with_aggregate_failures?(example_node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_expectations.rb#116 + def find_aggregate_failures(example_node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_expectations.rb#121 + def find_expectation(node, &block); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_expectations.rb#132 + def flag_example(node, expectation_count:); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_expectations.rb#143 + def max_expectations; end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_expectations.rb#72 +RuboCop::Cop::RSpec::MultipleExpectations::ANYTHING = T.let(T.unsafe(nil), Proc) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_expectations.rb#70 +RuboCop::Cop::RSpec::MultipleExpectations::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_expectations.rb#73 +RuboCop::Cop::RSpec::MultipleExpectations::TRUE_NODE = T.let(T.unsafe(nil), Proc) + +# Checks if example groups contain too many `let` and `subject` calls. +# +# This cop is configurable using the `Max` option and the `AllowSubject` +# which will configure the cop to only register offenses on calls to +# `let` and not calls to `subject`. +# +# @example +# # bad +# describe MyClass do +# let(:foo) { [] } +# let(:bar) { [] } +# let!(:baz) { [] } +# let(:qux) { [] } +# let(:quux) { [] } +# let(:quuz) { {} } +# end +# +# describe MyClass do +# let(:foo) { [] } +# let(:bar) { [] } +# let!(:baz) { [] } +# +# context 'when stuff' do +# let(:qux) { [] } +# let(:quux) { [] } +# let(:quuz) { {} } +# end +# end +# +# # good +# describe MyClass do +# let(:bar) { [] } +# let!(:baz) { [] } +# let(:qux) { [] } +# let(:quux) { [] } +# let(:quuz) { {} } +# end +# +# describe MyClass do +# context 'when stuff' do +# let(:foo) { [] } +# let(:bar) { [] } +# let!(:booger) { [] } +# end +# +# context 'when other stuff' do +# let(:qux) { [] } +# let(:quux) { [] } +# let(:quuz) { {} } +# end +# end +# @example when disabling AllowSubject configuration +# # rubocop.yml +# # RSpec/MultipleMemoizedHelpers: +# # AllowSubject: false +# +# # bad - `subject` counts towards memoized helpers +# describe MyClass do +# subject { {} } +# let(:foo) { [] } +# let(:bar) { [] } +# let!(:baz) { [] } +# let(:qux) { [] } +# let(:quux) { [] } +# end +# @example with Max configuration +# # rubocop.yml +# # RSpec/MultipleMemoizedHelpers: +# # Max: 1 +# +# # bad +# describe MyClass do +# let(:foo) { [] } +# let(:bar) { [] } +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_memoized_helpers.rb#84 +class RuboCop::Cop::RSpec::MultipleMemoizedHelpers < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::Variable + + # source://rubocop/1.66.1/lib/rubocop/cop/exclude_limit.rb#11 + def max=(value); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_memoized_helpers.rb#91 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_memoized_helpers.rb#102 + def on_new_investigation; end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_memoized_helpers.rb#111 + def all_helpers(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_memoized_helpers.rb#141 + def allow_subject?; end + + # Returns the value of attribute example_group_memoized_helpers. + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_memoized_helpers.rb#109 + def example_group_memoized_helpers; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_memoized_helpers.rb#116 + def helpers(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_memoized_helpers.rb#137 + def max; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_memoized_helpers.rb#127 + def variable_nodes(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_memoized_helpers.rb#87 +RuboCop::Cop::RSpec::MultipleMemoizedHelpers::MSG = T.let(T.unsafe(nil), String) + +# Checks if an example group defines `subject` multiple times. +# +# This cop does not support autocorrection in some cases. +# The autocorrect behavior for this cop depends on the type of +# duplication: +# +# - If multiple named subjects are defined then this probably indicates +# that the overwritten subjects (all subjects except the last +# definition) are effectively being used to define helpers. In this +# case they are replaced with `let`. +# +# - If multiple unnamed subjects are defined though then this can *only* +# be dead code and we remove the overwritten subject definitions. +# +# - If subjects are defined with `subject!` then we don't autocorrect. +# This is enough of an edge case that people can just move this to +# a `before` hook on their own +# +# @example +# # bad +# describe Foo do +# subject(:user) { User.new } +# subject(:post) { Post.new } +# end +# +# # good +# describe Foo do +# let(:user) { User.new } +# subject(:post) { Post.new } +# end +# +# # bad (does not support autocorrection) +# describe Foo do +# subject!(:user) { User.new } +# subject!(:post) { Post.new } +# end +# +# # good +# describe Foo do +# before do +# User.new +# Post.new +# end +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_subjects.rb#51 +class RuboCop::Cop::RSpec::MultipleSubjects < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_subjects.rb#57 + def on_block(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_subjects.rb#71 + def autocorrect(corrector, subject); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_subjects.rb#81 + def named_subject?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_subjects.rb#89 + def remove_autocorrect(corrector, node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_subjects.rb#85 + def rename_autocorrect(corrector, node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/multiple_subjects.rb#55 +RuboCop::Cop::RSpec::MultipleSubjects::MSG = T.let(T.unsafe(nil), String) + +# Checks for explicitly referenced test subjects. +# +# RSpec lets you declare an "implicit subject" using `subject { ... }` +# which allows for tests like `it { is_expected.to be_valid }`. +# If you need to reference your test subject you should explicitly +# name it using `subject(:your_subject_name) { ... }`. Your test subjects +# should be the most important object in your tests so they deserve +# a descriptive name. +# +# This cop can be configured in your configuration using `EnforcedStyle`, +# and `IgnoreSharedExamples` which will not report offenses for implicit +# subjects in shared example groups. +# +# @example `EnforcedStyle: always` (default) +# # bad +# RSpec.describe User do +# subject { described_class.new } +# +# it 'is valid' do +# expect(subject.valid?).to be(true) +# end +# end +# +# # good +# RSpec.describe User do +# subject(:user) { described_class.new } +# +# it 'is valid' do +# expect(user.valid?).to be(true) +# end +# end +# +# # also good +# RSpec.describe User do +# subject(:user) { described_class.new } +# +# it { is_expected.to be_valid } +# end +# @example `EnforcedStyle: named_only` +# # bad +# RSpec.describe User do +# subject(:user) { described_class.new } +# +# it 'is valid' do +# expect(subject.valid?).to be(true) +# end +# end +# +# # good +# RSpec.describe User do +# subject(:user) { described_class.new } +# +# it 'is valid' do +# expect(user.valid?).to be(true) +# end +# end +# +# # also good +# RSpec.describe User do +# subject { described_class.new } +# +# it { is_expected.to be_valid } +# end +# +# # acceptable +# RSpec.describe User do +# subject { described_class.new } +# +# it 'is valid' do +# expect(subject.valid?).to be(true) +# end +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/named_subject.rb#79 +class RuboCop::Cop::RSpec::NamedSubject < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + + # source://rubocop-rspec//lib/rubocop/cop/rspec/named_subject.rb#85 + def example_or_hook_block?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/named_subject.rb#97 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/named_subject.rb#90 + def shared_example?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/named_subject.rb#95 + def subject_usage(param0); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/named_subject.rb#123 + def allow_explicit_subject?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/named_subject.rb#127 + def always?; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/named_subject.rb#117 + def check_explicit_subject(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/named_subject.rb#150 + def find_subject(block_node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/named_subject.rb#109 + def ignored_shared_example?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/named_subject.rb#131 + def named_only?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/named_subject.rb#142 + def nearest_subject(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/named_subject.rb#136 + def subject_definition_is_named?(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/named_subject.rb#82 +RuboCop::Cop::RSpec::NamedSubject::MSG = T.let(T.unsafe(nil), String) + +# Helps to find namespace of the node. +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/namespace.rb#7 +module RuboCop::Cop::RSpec::Namespace + private + + # @example + # namespace(node) # => ['A', 'B', 'C'] + # @param node [RuboCop::AST::Node] + # @return [Array] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/namespace.rb#14 + def namespace(node); end +end + +# Checks for nested example groups. +# +# This cop is configurable using the `Max` option +# and supports `--auto-gen-config`. +# +# @example +# # bad +# context 'when using some feature' do +# let(:some) { :various } +# let(:feature) { :setup } +# +# context 'when user is signed in' do # flagged by rubocop +# let(:user) do +# UserCreate.call(user_attributes) +# end +# +# let(:user_attributes) do +# { +# name: 'John', +# age: 22, +# role: role +# } +# end +# +# context 'when user is an admin' do # flagged by rubocop +# let(:role) { 'admin' } +# +# it 'blah blah' +# it 'yada yada' +# end +# end +# end +# +# # good +# context 'using some feature as an admin' do +# let(:some) { :various } +# let(:feature) { :setup } +# +# let(:user) do +# UserCreate.call( +# name: 'John', +# age: 22, +# role: 'admin' +# ) +# end +# +# it 'blah blah' +# it 'yada yada' +# end +# @example `Max: 3` (default) +# # bad +# describe Foo do +# context 'foo' do +# context 'bar' do +# context 'baz' do # flagged by rubocop +# end +# end +# end +# end +# @example `Max: 2` +# # bad +# describe Foo do +# context 'foo' do +# context 'bar' do # flagged by rubocop +# context 'baz' do # flagged by rubocop +# end +# end +# end +# end +# @example `AllowedGroups: [] (default)` +# describe Foo do # <-- nested groups 1 +# context 'foo' do # <-- nested groups 2 +# context 'bar' do # <-- nested groups 3 +# end +# end +# end +# @example `AllowedGroups: [path]` +# describe Foo do # <-- nested groups 1 +# path '/foo' do # <-- nested groups 1 (not counted) +# context 'bar' do # <-- nested groups 2 +# end +# end +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/nested_groups.rb#94 +class RuboCop::Cop::RSpec::NestedGroups < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::TopLevelGroup + + # source://rubocop/1.66.1/lib/rubocop/cop/exclude_limit.rb#11 + def max=(value); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/nested_groups.rb#107 + def on_top_level_group(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/nested_groups.rb#157 + def allowed_groups; end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/nested_groups.rb#134 + def count_up_nesting?(node, example_group); end + + # @yield [node, nesting] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/nested_groups.rb#119 + def find_nested_example_groups(node, nesting: T.unsafe(nil), &block); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/nested_groups.rb#144 + def max_nesting; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/nested_groups.rb#148 + def max_nesting_config; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/nested_groups.rb#140 + def message(nesting); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/nested_groups.rb#99 +RuboCop::Cop::RSpec::NestedGroups::DEPRECATED_MAX_KEY = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/nested_groups.rb#101 +RuboCop::Cop::RSpec::NestedGroups::DEPRECATION_WARNING = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/nested_groups.rb#97 +RuboCop::Cop::RSpec::NestedGroups::MSG = T.let(T.unsafe(nil), String) + +# Checks if an example contains any expectation. +# +# All RSpec's example and expectation methods are covered by default. +# If you are using your own custom methods, +# add the following configuration: +# +# RSpec: +# Language: +# Examples: +# Regular: +# - custom_it +# Expectations: +# - custom_expect +# +# This cop can be customized with an allowed expectation methods pattern +# with an `AllowedPatterns` option. ^expect_ and ^assert_ are allowed +# by default. +# +# @example +# # bad +# it do +# a? +# end +# +# # good +# it do +# expect(a?).to be(true) +# end +# @example `AllowedPatterns` configuration +# +# # .rubocop.yml +# # RSpec/NoExpectationExample: +# # AllowedPatterns: +# # - ^expect_ +# # - ^assert_ +# @example +# # bad +# it do +# not_expect_something +# end +# +# # good +# it do +# expect_something +# end +# +# it do +# assert_something +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/no_expectation_example.rb#58 +class RuboCop::Cop::RSpec::NoExpectationExample < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::AllowedPattern + include ::RuboCop::Cop::RSpec::SkipOrPending + + # @param node [RuboCop::AST::Node] + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/no_expectation_example.rb#74 + def includes_expectation?(param0); end + + # @param node [RuboCop::AST::Node] + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/no_expectation_example.rb#84 + def includes_skip_example?(param0); end + + # @param node [RuboCop::AST::BlockNode] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/no_expectation_example.rb#89 + def on_block(node); end + + # @param node [RuboCop::AST::BlockNode] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/no_expectation_example.rb#89 + def on_numblock(node); end + + # @param node [RuboCop::AST::Node] + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/no_expectation_example.rb#67 + def regular_or_focused_example?(param0 = T.unsafe(nil)); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/no_expectation_example.rb#62 +RuboCop::Cop::RSpec::NoExpectationExample::MSG = T.let(T.unsafe(nil), String) + +# Checks for consistent method usage for negating expectations. +# +# @example `EnforcedStyle: not_to` (default) +# # bad +# it '...' do +# expect(false).to_not be_true +# end +# +# # good +# it '...' do +# expect(false).not_to be_true +# end +# @example `EnforcedStyle: to_not` +# # bad +# it '...' do +# expect(false).not_to be_true +# end +# +# # good +# it '...' do +# expect(false).to_not be_true +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/not_to_not.rb#30 +class RuboCop::Cop::RSpec::NotToNot < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/not_to_not.rb#38 + def not_to_not_offense(param0 = T.unsafe(nil), param1); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/not_to_not.rb#40 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/not_to_not.rb#50 + def message(_node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/not_to_not.rb#34 +RuboCop::Cop::RSpec::NotToNot::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/not_to_not.rb#35 +RuboCop::Cop::RSpec::NotToNot::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Checks if there is a let/subject that overwrites an existing one. +# +# @example +# # bad +# let(:foo) { bar } +# let(:foo) { baz } +# +# subject(:foo) { bar } +# let(:foo) { baz } +# +# let(:foo) { bar } +# let!(:foo) { baz } +# +# # good +# subject(:test) { something } +# let(:foo) { bar } +# let(:baz) { baz } +# let!(:other) { other } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/overwriting_setup.rb#25 +class RuboCop::Cop::RSpec::OverwritingSetup < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/overwriting_setup.rb#34 + def first_argument_name(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/overwriting_setup.rb#36 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/overwriting_setup.rb#29 + def setup?(param0 = T.unsafe(nil)); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/overwriting_setup.rb#64 + def common_setup?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/overwriting_setup.rb#49 + def find_duplicates(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/overwriting_setup.rb#26 +RuboCop::Cop::RSpec::OverwritingSetup::MSG = T.let(T.unsafe(nil), String) + +# Checks for any pending or skipped examples. +# +# @example +# # bad +# describe MyClass do +# it "should be true" +# end +# +# describe MyClass do +# it "should be true", skip: true do +# expect(1).to eq(2) +# end +# end +# +# describe MyClass do +# it "should be true" do +# pending +# end +# end +# +# describe MyClass do +# xit "should be true" do +# end +# end +# +# # good +# describe MyClass do +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/pending.rb#35 +class RuboCop::Cop::RSpec::Pending < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::SkipOrPending + + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending.rb#61 + def on_send(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending.rb#54 + def pending_block?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending.rb#41 + def skippable?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending.rb#49 + def skippable_example?(param0 = T.unsafe(nil)); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending.rb#69 + def skipped?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending.rb#74 + def skipped_regular_example_without_body?(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/pending.rb#38 +RuboCop::Cop::RSpec::Pending::MSG = T.let(T.unsafe(nil), String) + +# Checks for pending or skipped examples without reason. +# +# @example +# # bad +# pending 'does something' do +# end +# +# # bad +# it 'does something', :pending do +# end +# +# # bad +# it 'does something' do +# pending +# end +# +# # bad +# xdescribe 'something' do +# end +# +# # bad +# skip 'does something' do +# end +# +# # bad +# it 'does something', :skip do +# end +# +# # bad +# it 'does something' do +# skip +# end +# +# # bad +# it 'does something' +# +# # good +# it 'does something' do +# pending 'reason' +# end +# +# # good +# it 'does something' do +# skip 'reason' +# end +# +# # good +# it 'does something', pending: 'reason' do +# end +# +# # good +# it 'does something', skip: 'reason' do +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/pending_without_reason.rb#59 +class RuboCop::Cop::RSpec::PendingWithoutReason < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending_without_reason.rb#82 + def metadata_without_reason?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending_without_reason.rb#102 + def on_send(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending_without_reason.rb#98 + def pending_step_without_reason?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending_without_reason.rb#93 + def skipped_by_example_group_method?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending_without_reason.rb#72 + def skipped_by_example_method?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending_without_reason.rb#77 + def skipped_by_example_method_with_block?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending_without_reason.rb#63 + def skipped_in_example?(param0 = T.unsafe(nil)); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending_without_reason.rb#123 + def block_node_example_group?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending_without_reason.rb#135 + def on_pending_by_metadata(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending_without_reason.rb#151 + def on_skipped_by_example_group_method(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending_without_reason.rb#141 + def on_skipped_by_example_method(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending_without_reason.rb#129 + def on_skipped_by_in_example_method(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/pending_without_reason.rb#116 + def parent_node(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/pending_without_reason.rb#60 +RuboCop::Cop::RSpec::PendingWithoutReason::MSG = T.let(T.unsafe(nil), String) + +# Prefer using predicate matcher over using predicate method directly. +# +# RSpec defines magic matchers for predicate methods. +# This cop recommends to use the predicate matcher instead of using +# predicate method directly. +# +# @example Strict: true, EnforcedStyle: inflected (default) +# # bad +# expect(foo.something?).to be_truthy +# +# # good +# expect(foo).to be_something +# +# # also good - It checks "true" strictly. +# expect(foo.something?).to be(true) +# @example Strict: false, EnforcedStyle: inflected +# # bad +# expect(foo.something?).to be_truthy +# expect(foo.something?).to be(true) +# +# # good +# expect(foo).to be_something +# @example Strict: true, EnforcedStyle: explicit +# # bad +# expect(foo).to be_something +# +# # good - the above code is rewritten to it by this cop +# expect(foo.something?).to be(true) +# +# # bad - no autocorrect +# expect(foo) +# .to be_something(<<~TEXT) +# bar +# TEXT +# +# # good +# expect(foo.something?(<<~TEXT)).to be(true) +# bar +# TEXT +# @example Strict: false, EnforcedStyle: explicit +# # bad +# expect(foo).to be_something +# +# # good - the above code is rewritten to it by this cop +# expect(foo.something?).to be_truthy +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#318 +class RuboCop::Cop::RSpec::PredicateMatcher < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + include ::RuboCop::Cop::RSpec::InflectedHelper + include ::RuboCop::Cop::RSpec::ExplicitHelper + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#335 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#326 + def on_send(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/predicate_matcher.rb#324 +RuboCop::Cop::RSpec::PredicateMatcher::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Check for `once` and `twice` receive counts matchers usage. +# +# @example +# # bad +# expect(foo).to receive(:bar).exactly(1).times +# expect(foo).to receive(:bar).exactly(2).times +# expect(foo).to receive(:bar).at_least(1).times +# expect(foo).to receive(:bar).at_least(2).times +# expect(foo).to receive(:bar).at_most(1).times +# expect(foo).to receive(:bar).at_most(2).times +# +# # good +# expect(foo).to receive(:bar).once +# expect(foo).to receive(:bar).twice +# expect(foo).to receive(:bar).at_least(:once) +# expect(foo).to receive(:bar).at_least(:twice) +# expect(foo).to receive(:bar).at_most(:once) +# expect(foo).to receive(:bar).at_most(:twice).times +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/receive_counts.rb#25 +class RuboCop::Cop::RSpec::ReceiveCounts < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_counts.rb#40 + def on_send(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_counts.rb#33 + def receive_counts(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_counts.rb#38 + def stub?(param0); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_counts.rb#55 + def autocorrect(corrector, node, range); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_counts.rb#72 + def matcher_for(method, count); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_counts.rb#64 + def message_for(node, source); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_counts.rb#81 + def range(node, offending_node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/receive_counts.rb#28 +RuboCop::Cop::RSpec::ReceiveCounts::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/receive_counts.rb#30 +RuboCop::Cop::RSpec::ReceiveCounts::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Checks for multiple messages stubbed on the same object. +# +# @example +# # bad +# before do +# allow(Service).to receive(:foo).and_return(bar) +# allow(Service).to receive(:baz).and_return(qux) +# end +# +# # good +# before do +# allow(Service).to receive_messages(foo: bar, baz: qux) +# end +# +# # good - ignore same message +# before do +# allow(Service).to receive(:foo).and_return(bar) +# allow(Service).to receive(:foo).and_return(qux) +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#31 +class RuboCop::Cop::RSpec::ReceiveMessages < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#44 + def allow_argument(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#39 + def allow_receive_message?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#63 + def on_begin(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#59 + def receive_and_return_argument(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#54 + def receive_arg(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#49 + def receive_node(param0); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#83 + def add_repeated_lines_and_arguments(items); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#100 + def arguments(items); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#150 + def heredoc_or_splat?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#146 + def item_range_by_whole_lines(item); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#135 + def message(repeated_lines); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#109 + def normalize_receive_arg(receive_arg); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#117 + def normalize_return_arg(return_arg); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#125 + def register_offense(item, repeated_lines, args); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#73 + def repeated_receive_message(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#139 + def replace_to_receive_messages(corrector, item, args); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#155 + def requires_quotes?(value); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#91 + def uniq_items(items); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/receive_messages.rb#35 +RuboCop::Cop::RSpec::ReceiveMessages::MSG = T.let(T.unsafe(nil), String) + +# Prefer `not_to receive(...)` over `receive(...).never`. +# +# @example +# # bad +# expect(foo).to receive(:bar).never +# +# # good +# expect(foo).not_to receive(:bar) +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/receive_never.rb#15 +class RuboCop::Cop::RSpec::ReceiveNever < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_never.rb#21 + def method_on_stub?(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_never.rb#23 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/receive_never.rb#33 + def autocorrect(corrector, node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/receive_never.rb#17 +RuboCop::Cop::RSpec::ReceiveNever::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/receive_never.rb#18 +RuboCop::Cop::RSpec::ReceiveNever::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Remove redundant `around` hook. +# +# @example +# # bad +# around do |example| +# example.run +# end +# +# # good +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/redundant_around.rb#16 +class RuboCop::Cop::RSpec::RedundantAround < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/redundant_around.rb#43 + def match_redundant_around_hook_block?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/redundant_around.rb#48 + def match_redundant_around_hook_send?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/redundant_around.rb#23 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/redundant_around.rb#23 + def on_numblock(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/redundant_around.rb#32 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/redundant_around.rb#59 + def autocorrect(corrector, node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/redundant_around.rb#19 +RuboCop::Cop::RSpec::RedundantAround::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/redundant_around.rb#21 +RuboCop::Cop::RSpec::RedundantAround::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Checks for redundant predicate matcher. +# +# @example +# # bad +# expect(foo).to be_exist(bar) +# expect(foo).not_to be_include(bar) +# expect(foo).to be_all(bar) +# +# # good +# expect(foo).to exist(bar) +# expect(foo).not_to include(bar) +# expect(foo).to all be(bar) +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/redundant_predicate_matcher.rb#19 +class RuboCop::Cop::RSpec::RedundantPredicateMatcher < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/redundant_predicate_matcher.rb#28 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/redundant_predicate_matcher.rb#44 + def message(bad_method, good_method); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/redundant_predicate_matcher.rb#48 + def replaceable_arguments?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/redundant_predicate_matcher.rb#56 + def replaced_method_name(method_name); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/redundant_predicate_matcher.rb#22 +RuboCop::Cop::RSpec::RedundantPredicateMatcher::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/redundant_predicate_matcher.rb#23 +RuboCop::Cop::RSpec::RedundantPredicateMatcher::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Checks that `remove_const` is not used in specs. +# +# @example +# # bad +# it 'does something' do +# Object.send(:remove_const, :SomeConstant) +# end +# +# before do +# SomeClass.send(:remove_const, :SomeConstant) +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/remove_const.rb#18 +class RuboCop::Cop::RSpec::RemoveConst < ::RuboCop::Cop::RSpec::Base + # Check for offenses + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/remove_const.rb#31 + def on_send(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/remove_const.rb#26 + def remove_const(param0 = T.unsafe(nil)); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/remove_const.rb#21 +RuboCop::Cop::RSpec::RemoveConst::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/remove_const.rb#23 +RuboCop::Cop::RSpec::RemoveConst::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Check for repeated description strings in example groups. +# +# @example +# # bad +# RSpec.describe User do +# it 'is valid' do +# # ... +# end +# +# it 'is valid' do +# # ... +# end +# end +# +# # good +# RSpec.describe User do +# it 'is valid when first and last name are present' do +# # ... +# end +# +# it 'is valid when last name only is present' do +# # ... +# end +# end +# +# # good +# RSpec.describe User do +# it 'is valid' do +# # ... +# end +# +# it 'is valid', :flag do +# # ... +# end +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_description.rb#42 +class RuboCop::Cop::RSpec::RepeatedDescription < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_description.rb#45 + def on_block(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_description.rb#88 + def example_signature(example); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_description.rb#92 + def its_signature(example); end + + # Select examples in the current scope with repeated description strings + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_description.rb#60 + def repeated_descriptions(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_description.rb#74 + def repeated_its(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_description.rb#43 +RuboCop::Cop::RSpec::RepeatedDescription::MSG = T.let(T.unsafe(nil), String) + +# Check for repeated examples within example groups. +# +# @example +# +# it 'is valid' do +# expect(user).to be_valid +# end +# +# it 'validates the user' do +# expect(user).to be_valid +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example.rb#18 +class RuboCop::Cop::RSpec::RepeatedExample < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example.rb#21 + def on_block(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example.rb#41 + def example_signature(example); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example.rb#31 + def repeated_examples(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example.rb#19 +RuboCop::Cop::RSpec::RepeatedExample::MSG = T.let(T.unsafe(nil), String) + +# Check for repeated describe and context block body. +# +# @example +# # bad +# describe 'cool feature x' do +# it { cool_predicate } +# end +# +# describe 'cool feature y' do +# it { cool_predicate } +# end +# +# # good +# describe 'cool feature' do +# it { cool_predicate } +# end +# +# describe 'another cool feature' do +# it { another_predicate } +# end +# +# # good +# context 'when case x', :tag do +# it { cool_predicate } +# end +# +# context 'when case y' do +# it { cool_predicate } +# end +# +# # good +# context Array do +# it { is_expected.to respond_to :each } +# end +# +# context Hash do +# it { is_expected.to respond_to :each } +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_body.rb#45 +class RuboCop::Cop::RSpec::RepeatedExampleGroupBody < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::SkipOrPending + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_body.rb#59 + def body(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_body.rb#62 + def const_arg(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_body.rb#56 + def metadata(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_body.rb#64 + def on_begin(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_body.rb#51 + def several_example_groups?(param0 = T.unsafe(nil)); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_body.rb#85 + def add_repeated_lines(groups); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_body.rb#94 + def message(group, repeats); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_body.rb#74 + def repeated_group_bodies(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_body.rb#90 + def signature_keys(group); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_body.rb#48 +RuboCop::Cop::RSpec::RepeatedExampleGroupBody::MSG = T.let(T.unsafe(nil), String) + +# Check for repeated example group descriptions. +# +# @example +# # bad +# describe 'cool feature' do +# # example group +# end +# +# describe 'cool feature' do +# # example group +# end +# +# # bad +# context 'when case x' do +# # example group +# end +# +# describe 'when case x' do +# # example group +# end +# +# # good +# describe 'cool feature' do +# # example group +# end +# +# describe 'another cool feature' do +# # example group +# end +# +# # good +# context 'when case x' do +# # example group +# end +# +# context 'when another case' do +# # example group +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_description.rb#45 +class RuboCop::Cop::RSpec::RepeatedExampleGroupDescription < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::SkipOrPending + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_description.rb#56 + def doc_string_and_metadata(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_description.rb#61 + def empty_description?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_description.rb#63 + def on_begin(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_description.rb#51 + def several_example_groups?(param0 = T.unsafe(nil)); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_description.rb#85 + def add_repeated_lines(groups); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_description.rb#90 + def message(group, repeats); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_description.rb#73 + def repeated_group_descriptions(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_example_group_description.rb#48 +RuboCop::Cop::RSpec::RepeatedExampleGroupDescription::MSG = T.let(T.unsafe(nil), String) + +# Check for repeated include of shared examples. +# +# @example +# # bad +# describe 'foo' do +# include_examples 'cool stuff' +# include_examples 'cool stuff' +# end +# +# # bad +# describe 'foo' do +# it_behaves_like 'a cool', 'thing' +# it_behaves_like 'a cool', 'thing' +# end +# +# # bad +# context 'foo' do +# it_should_behave_like 'a duck' +# it_should_behave_like 'a duck' +# end +# +# # good +# describe 'foo' do +# include_examples 'cool stuff' +# end +# +# describe 'bar' do +# include_examples 'cool stuff' +# end +# +# # good +# describe 'foo' do +# it_behaves_like 'a cool', 'thing' +# it_behaves_like 'a cool', 'person' +# end +# +# # good +# context 'foo' do +# it_should_behave_like 'a duck' +# it_should_behave_like 'a goose' +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_include_example.rb#48 +class RuboCop::Cop::RSpec::RepeatedIncludeExample < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_include_example.rb#58 + def include_examples?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_include_example.rb#65 + def on_begin(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_include_example.rb#53 + def several_include_examples?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_include_example.rb#62 + def shared_examples_name(param0 = T.unsafe(nil)); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_include_example.rb#90 + def add_repeated_lines(items); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_include_example.rb#85 + def literal_include_examples?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_include_example.rb#99 + def message(item, repeats); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_include_example.rb#75 + def repeated_include_examples(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_include_example.rb#95 + def signature_keys(item); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_include_example.rb#49 +RuboCop::Cop::RSpec::RepeatedIncludeExample::MSG = T.let(T.unsafe(nil), String) + +# Checks for repeated calls to subject missing that it is memoized. +# +# @example +# # bad +# it do +# subject +# expect { subject }.to not_change { A.count } +# end +# +# it do +# expect { subject }.to change { A.count } +# expect { subject }.to not_change { A.count } +# end +# +# # good +# it do +# expect { my_method }.to change { A.count } +# expect { my_method }.to not_change { A.count } +# end +# +# # also good +# it do +# expect { subject.a }.to change { A.count } +# expect { subject.b }.to not_change { A.count } +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_subject_call.rb#32 +class RuboCop::Cop::RSpec::RepeatedSubjectCall < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::TopLevelGroup + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_subject_call.rb#65 + def on_top_level_group(node); end + + # Find a named or unnamed subject definition + # + # @example anonymous subject + # subject?(parse('subject { foo }').ast) do |name| + # name # => :subject + # end + # @example named subject + # subject?(parse('subject(:thing) { foo }').ast) do |name| + # name # => :thing + # end + # @param node [RuboCop::AST::Node] + # @yield [Symbol] subject name + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_subject_call.rb#53 + def subject?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_subject_call.rb#61 + def subject_calls(param0, param1); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_subject_call.rb#73 + def detect_offense(subject_node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_subject_call.rb#85 + def detect_offenses_in_block(node, subject_names = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_subject_call.rb#97 + def detect_offenses_in_example(node, subject_names); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_subject_call.rb#111 + def detect_subjects_in_scope(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_subject_call.rb#81 + def expect_block(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/repeated_subject_call.rb#35 +RuboCop::Cop::RSpec::RepeatedSubjectCall::MSG = T.let(T.unsafe(nil), String) + +# Checks for consistent style of stub's return setting. +# +# Enforces either `and_return` or block-style return in the cases +# where the returned value is constant. Ignores dynamic returned values +# are the result would be different +# +# This cop can be configured using the `EnforcedStyle` option +# +# @example `EnforcedStyle: and_return` (default) +# # bad +# allow(Foo).to receive(:bar) { "baz" } +# expect(Foo).to receive(:bar) { "baz" } +# +# # good +# allow(Foo).to receive(:bar).and_return("baz") +# expect(Foo).to receive(:bar).and_return("baz") +# # also good as the returned value is dynamic +# allow(Foo).to receive(:bar) { bar.baz } +# @example `EnforcedStyle: block` +# # bad +# allow(Foo).to receive(:bar).and_return("baz") +# expect(Foo).to receive(:bar).and_return("baz") +# +# # good +# allow(Foo).to receive(:bar) { "baz" } +# expect(Foo).to receive(:bar) { "baz" } +# # also good as the returned value is dynamic +# allow(Foo).to receive(:bar).and_return(bar.baz) +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#36 +class RuboCop::Cop::RSpec::ReturnFromStub < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#51 + def and_return_value(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#45 + def contains_stub?(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#62 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#55 + def on_send(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#48 + def stub_with_block?(param0 = T.unsafe(nil)); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#71 + def check_and_return_call(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#81 + def check_block_body(block); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#90 + def dynamic?(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#95 +class RuboCop::Cop::RSpec::ReturnFromStub::AndReturnCallCorrector + # @return [AndReturnCallCorrector] a new instance of AndReturnCallCorrector + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#96 + def initialize(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#102 + def call(corrector); end + + private + + # Returns the value of attribute arg. + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#111 + def arg; end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#133 + def hash_without_braces?; end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#113 + def heredoc?; end + + # Returns the value of attribute node. + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#111 + def node; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#117 + def range; end + + # Returns the value of attribute receiver. + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#111 + def receiver; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#125 + def replacement; end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#139 +class RuboCop::Cop::RSpec::ReturnFromStub::BlockBodyCorrector + # @return [BlockBodyCorrector] a new instance of BlockBodyCorrector + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#140 + def initialize(block); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#146 + def call(corrector); end + + private + + # Returns the value of attribute block. + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#158 + def block; end + + # Returns the value of attribute body. + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#158 + def body; end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#160 + def heredoc?; end + + # Returns the value of attribute node. + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#158 + def node; end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#164 +RuboCop::Cop::RSpec::ReturnFromStub::BlockBodyCorrector::NULL_BLOCK_BODY = T.let(T.unsafe(nil), T.untyped) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#40 +RuboCop::Cop::RSpec::ReturnFromStub::MSG_AND_RETURN = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#41 +RuboCop::Cop::RSpec::ReturnFromStub::MSG_BLOCK = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/return_from_stub.rb#42 +RuboCop::Cop::RSpec::ReturnFromStub::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Checks for let scattered across the example group. +# +# Group lets together +# +# @example +# # bad +# describe Foo do +# let(:foo) { 1 } +# subject { Foo } +# let(:bar) { 2 } +# before { prepare } +# let!(:baz) { 3 } +# end +# +# # good +# describe Foo do +# subject { Foo } +# before { prepare } +# let(:foo) { 1 } +# let(:bar) { 2 } +# let!(:baz) { 3 } +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/scattered_let.rb#29 +class RuboCop::Cop::RSpec::ScatteredLet < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/scattered_let.rb#34 + def on_block(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/scattered_let.rb#42 + def check_let_declarations(body); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/scattered_let.rb#32 +RuboCop::Cop::RSpec::ScatteredLet::MSG = T.let(T.unsafe(nil), String) + +# Checks for setup scattered across multiple hooks in an example group. +# +# Unify `before`, `after`, and `around` hooks when possible. +# +# @example +# # bad +# describe Foo do +# before { setup1 } +# before { setup2 } +# end +# +# # good +# describe Foo do +# before do +# setup1 +# setup2 +# end +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/scattered_setup.rb#25 +class RuboCop::Cop::RSpec::ScatteredSetup < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::FinalEndLocation + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/scattered_setup.rb#33 + def on_block(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/scattered_setup.rb#76 + def autocorrect(corrector, first_occurrence, occurrence); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/scattered_setup.rb#61 + def lines_msg(numbers); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/scattered_setup.rb#69 + def message(occurrences, occurrence); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/scattered_setup.rb#48 + def repeated_hooks(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/scattered_setup.rb#30 +RuboCop::Cop::RSpec::ScatteredSetup::MSG = T.let(T.unsafe(nil), String) + +# Checks for proper shared_context and shared_examples usage. +# +# If there are no examples defined, use shared_context. +# If there is no setup defined, use shared_examples. +# +# @example +# # bad +# RSpec.shared_context 'only examples here' do +# it 'does x' do +# end +# +# it 'does y' do +# end +# end +# +# # good +# RSpec.shared_examples 'only examples here' do +# it 'does x' do +# end +# +# it 'does y' do +# end +# end +# @example +# # bad +# RSpec.shared_examples 'only setup here' do +# subject(:foo) { :bar } +# +# let(:baz) { :bazz } +# +# before do +# something +# end +# end +# +# # good +# RSpec.shared_context 'only setup here' do +# subject(:foo) { :bar } +# +# let(:baz) { :bazz } +# +# before do +# something +# end +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/shared_context.rb#53 +class RuboCop::Cop::RSpec::SharedContext < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_context.rb#65 + def context?(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_context.rb#60 + def examples?(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_context.rb#81 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_context.rb#72 + def shared_context(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_context.rb#77 + def shared_example(param0 = T.unsafe(nil)); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_context.rb#97 + def context_with_only_examples(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_context.rb#101 + def examples_with_only_context(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/shared_context.rb#57 +RuboCop::Cop::RSpec::SharedContext::MSG_CONTEXT = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/shared_context.rb#56 +RuboCop::Cop::RSpec::SharedContext::MSG_EXAMPLES = T.let(T.unsafe(nil), String) + +# Checks for consistent style for shared example names. +# +# Enforces either `string` or `symbol` for shared example names. +# +# This cop can be configured using the `EnforcedStyle` option +# +# @example `EnforcedStyle: string` (default) +# # bad +# it_behaves_like :foo_bar_baz +# it_should_behave_like :foo_bar_baz +# shared_examples :foo_bar_baz +# shared_examples_for :foo_bar_baz +# include_examples :foo_bar_baz +# +# # good +# it_behaves_like 'foo bar baz' +# it_should_behave_like 'foo bar baz' +# shared_examples 'foo bar baz' +# shared_examples_for 'foo bar baz' +# include_examples 'foo bar baz' +# @example `EnforcedStyle: symbol` +# # bad +# it_behaves_like 'foo bar baz' +# it_should_behave_like 'foo bar baz' +# shared_examples 'foo bar baz' +# shared_examples_for 'foo bar baz' +# include_examples 'foo bar baz' +# +# # good +# it_behaves_like :foo_bar_baz +# it_should_behave_like :foo_bar_baz +# shared_examples :foo_bar_baz +# shared_examples_for :foo_bar_baz +# include_examples :foo_bar_baz +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#42 +class RuboCop::Cop::RSpec::SharedExamples < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#54 + def on_send(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#47 + def shared_examples(param0 = T.unsafe(nil)); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#75 + def new_checker(ast_node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#67 + def offense?(ast_node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#104 +class RuboCop::Cop::RSpec::SharedExamples::StringChecker + # @return [StringChecker] a new instance of StringChecker + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#110 + def initialize(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#114 + def message; end + + # Returns the value of attribute node. + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#108 + def node; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#118 + def preferred_style; end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#105 +RuboCop::Cop::RSpec::SharedExamples::StringChecker::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#84 +class RuboCop::Cop::RSpec::SharedExamples::SymbolChecker + # @return [SymbolChecker] a new instance of SymbolChecker + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#90 + def initialize(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#94 + def message; end + + # Returns the value of attribute node. + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#88 + def node; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#98 + def preferred_style; end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/shared_examples.rb#85 +RuboCop::Cop::RSpec::SharedExamples::SymbolChecker::MSG = T.let(T.unsafe(nil), String) + +# Checks that chains of messages contain more than one element. +# +# @example +# # bad +# allow(foo).to receive_message_chain(:bar).and_return(42) +# +# # good +# allow(foo).to receive(:bar).and_return(42) +# +# # also good +# allow(foo).to receive(:bar, :baz) +# allow(foo).to receive("bar.baz") +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/single_argument_message_chain.rb#19 +class RuboCop::Cop::RSpec::SingleArgumentMessageChain < ::RuboCop::Cop::RSpec::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/single_argument_message_chain.rb#27 + def message_chain(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/single_argument_message_chain.rb#34 + def on_send(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/single_argument_message_chain.rb#32 + def single_key_hash?(param0 = T.unsafe(nil)); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/single_argument_message_chain.rb#49 + def autocorrect(corrector, node, method, arg); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/single_argument_message_chain.rb#77 + def autocorrect_array_arg(corrector, arg); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/single_argument_message_chain.rb#69 + def autocorrect_hash_arg(corrector, arg); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/single_argument_message_chain.rb#83 + def key_to_arg(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/single_argument_message_chain.rb#87 + def replacement(method); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/single_argument_message_chain.rb#65 + def single_element_array?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/single_argument_message_chain.rb#55 + def valid_usage?(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/single_argument_message_chain.rb#22 +RuboCop::Cop::RSpec::SingleArgumentMessageChain::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/single_argument_message_chain.rb#24 +RuboCop::Cop::RSpec::SingleArgumentMessageChain::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Checks for passing a block to `skip` within examples. +# +# @example +# # bad +# it 'does something' do +# skip 'not yet implemented' do +# do_something +# end +# end +# +# # good +# it 'does something' do +# skip 'not yet implemented' +# do_something +# end +# +# # good - when outside example +# skip 'not yet implemented' do +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/skip_block_inside_example.rb#26 +class RuboCop::Cop::RSpec::SkipBlockInsideExample < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/skip_block_inside_example.rb#29 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/skip_block_inside_example.rb#29 + def on_numblock(node); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/skip_block_inside_example.rb#40 + def inside_example?(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/skip_block_inside_example.rb#27 +RuboCop::Cop::RSpec::SkipBlockInsideExample::MSG = T.let(T.unsafe(nil), String) + +# Helps check offenses with variable definitions +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/skip_or_pending.rb#7 +module RuboCop::Cop::RSpec::SkipOrPending + extend ::RuboCop::AST::NodePattern::Macros + + # Match skip/pending statements inside a block (e.g. `context`) + # + # @example source that matches + # context 'when color is blue' do + # skip 'not implemented yet' + # pending 'not implemented yet' + # end + # @example source that does not match + # skip 'not implemented yet' + # pending 'not implemented yet' + # @param node [RuboCop::AST::Node] + # @return [Array] matching nodes + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/skip_or_pending.rb#33 + def skip_or_pending_inside_block?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/skip_or_pending.rb#11 + def skipped_in_metadata?(param0 = T.unsafe(nil)); end +end + +# Sort RSpec metadata alphabetically. +# +# @example +# # bad +# describe 'Something', :b, :a +# context 'Something', foo: 'bar', baz: true +# it 'works', :b, :a, foo: 'bar', baz: true +# +# # good +# describe 'Something', :a, :b +# context 'Something', baz: true, foo: 'bar' +# it 'works', :a, :b, baz: true, foo: 'bar' +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/sort_metadata.rb#19 +class RuboCop::Cop::RSpec::SortMetadata < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::Metadata + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/sort_metadata.rb#26 + def on_metadata(symbols, hash); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/sort_metadata.rb#38 + def crime_scene(symbols, pairs); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/sort_metadata.rb#47 + def replacement(symbols, pairs); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/sort_metadata.rb#55 + def sort_pairs(pairs); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/sort_metadata.rb#59 + def sort_symbols(symbols); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/sort_metadata.rb#51 + def sorted?(symbols, pairs); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/sort_metadata.rb#24 +RuboCop::Cop::RSpec::SortMetadata::MSG = T.let(T.unsafe(nil), String) + +# Checks that spec file paths are consistent and well-formed. +# +# @example +# # bad +# whatever_spec.rb # describe MyClass +# my_class_spec.rb # describe MyClass, '#method' +# +# # good +# my_class_spec.rb # describe MyClass +# my_class_method_spec.rb # describe MyClass, '#method' +# my_class/method_spec.rb # describe MyClass, '#method' +# @example `CustomTransform: {RuboCop=>rubocop, RSpec=>rspec}` (default) +# # good +# rubocop_spec.rb # describe RuboCop +# rspec_spec.rb # describe RSpec +# @example `IgnoreMethods: false` (default) +# # bad +# my_class_spec.rb # describe MyClass, '#method' +# @example `IgnoreMethods: true` +# # good +# my_class_spec.rb # describe MyClass, '#method' +# @example `IgnoreMetadata: {type=>routing}` (default) +# # good +# whatever_spec.rb # describe MyClass, type: :routing do; end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_format.rb#35 +class RuboCop::Cop::RSpec::SpecFilePathFormat < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::TopLevelGroup + include ::RuboCop::Cop::RSpec::Namespace + include ::RuboCop::Cop::RSpec::FileHelp + + # source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_format.rb#43 + def example_group_arguments(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_format.rb#48 + def metadata_key_value(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_format.rb#50 + def on_top_level_example_group(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_format.rb#108 + def camel_to_snake_case(string); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_format.rb#81 + def correct_path_pattern(class_name, arguments); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_format.rb#115 + def custom_transform; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_format.rb#62 + def ensure_correct_file_path(send_node, class_name, arguments); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_format.rb#98 + def expected_path(constant); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_format.rb#127 + def filename_ends_with?(pattern); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_format.rb#94 + def ignore?(method_name); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_format.rb#123 + def ignore_metadata; end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_format.rb#73 + def ignore_metadata?(arguments); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_format.rb#119 + def ignore_methods?; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_format.rb#88 + def name_pattern(method_name); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_format.rb#40 +RuboCop::Cop::RSpec::SpecFilePathFormat::MSG = T.let(T.unsafe(nil), String) + +# Checks that spec file paths suffix are consistent and well-formed. +# +# @example +# # bad +# my_class/foo_specorb.rb # describe MyClass +# spec/models/user.rb # describe User +# spec/models/user_specxrb # describe User +# +# # good +# my_class_spec.rb # describe MyClass +# +# # good - shared examples are allowed +# spec/models/user.rb # shared_examples_for 'foo' +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_suffix.rb#20 +class RuboCop::Cop::RSpec::SpecFilePathSuffix < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::TopLevelGroup + include ::RuboCop::Cop::RSpec::FileHelp + + # source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_suffix.rb#26 + def on_top_level_example_group(node); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_suffix.rb#34 + def correct_path?; end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/spec_file_path_suffix.rb#24 +RuboCop::Cop::RSpec::SpecFilePathSuffix::MSG = T.let(T.unsafe(nil), String) + +# Checks that message expectations do not have a configured response. +# +# @example +# # bad +# expect(foo).to receive(:bar).with(42).and_return("hello world") +# +# # good (without spies) +# allow(foo).to receive(:bar).with(42).and_return("hello world") +# expect(foo).to receive(:bar).with(42) +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/stubbed_mock.rb#16 +class RuboCop::Cop::RSpec::StubbedMock < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/stubbed_mock.rb#42 + def configured_response?(param0 = T.unsafe(nil)); end + + # Match expectation + # + # @example source that matches + # is_expected.to be_in_the_bar + # @example source that matches + # expect(cocktail).to contain_exactly(:fresh_orange_juice, :campari) + # @example source that matches + # expect_any_instance_of(Officer).to be_alert + # @param node [RuboCop::AST::Node] + # @yield [RuboCop::AST::Node] expectation, method name, matcher + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/stubbed_mock.rb#61 + def expectation(param0 = T.unsafe(nil)); end + + # Match matcher with a configured response in block-pass + # + # @example source that matches + # receive(:foo, &canned) + # @example source that matches + # receive_message_chain(:foo, :bar, &canned) + # @example source that matches + # receive(:foo).with('bar', &canned) + # @param node [RuboCop::AST::Node] + # @yield [RuboCop::AST::Node] matcher + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/stubbed_mock.rb#129 + def matcher_with_blockpass(param0 = T.unsafe(nil)); end + + # Match matcher with a configured response + # + # @example source that matches + # receive(:foo).and_return('bar') + # @example source that matches + # receive(:lower).and_raise(SomeError) + # @example source that matches + # receive(:redirect).and_call_original + # @param node [RuboCop::AST::Node] + # @yield [RuboCop::AST::Node] matcher + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/stubbed_mock.rb#81 + def matcher_with_configured_response(param0 = T.unsafe(nil)); end + + # Match matcher with a configured response defined as a hash + # + # @example source that matches + # receive_messages(foo: 'bar', baz: 'qux') + # @example source that matches + # receive_message_chain(:foo, bar: 'baz') + # @param node [RuboCop::AST::Node] + # @yield [RuboCop::AST::Node] matcher + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/stubbed_mock.rb#108 + def matcher_with_hash(param0 = T.unsafe(nil)); end + + # Match matcher with a return block + # + # @example source that matches + # receive(:foo) { 'bar' } + # @param node [RuboCop::AST::Node] + # @yield [RuboCop::AST::Node] matcher + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/stubbed_mock.rb#93 + def matcher_with_return_block(param0 = T.unsafe(nil)); end + + # Match message expectation matcher + # + # @example source that matches + # receive(:foo) + # @example source that matches + # receive_message_chain(:foo, :bar) + # @example source that matches + # receive(:foo).with('bar') + # @param node [RuboCop::AST::Node] + # @return [Array] matching nodes + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/stubbed_mock.rb#34 + def message_expectation?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/stubbed_mock.rb#138 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/stubbed_mock.rb#157 + def msg(method_name); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/stubbed_mock.rb#146 + def on_expectation(expectation, method_name, matcher); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/stubbed_mock.rb#163 + def replacement(method_name); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/stubbed_mock.rb#17 +RuboCop::Cop::RSpec::StubbedMock::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/stubbed_mock.rb#136 +RuboCop::Cop::RSpec::StubbedMock::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Ensure that subject is defined using subject helper. +# +# @example +# # bad +# let(:subject) { foo } +# let!(:subject) { foo } +# subject(:subject) { foo } +# subject!(:subject) { foo } +# +# # bad +# block = -> {} +# let(:subject, &block) +# +# # good +# subject(:test_subject) { foo } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/subject_declaration.rb#22 +class RuboCop::Cop::RSpec::SubjectDeclaration < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/subject_declaration.rb#27 + def offensive_subject_declaration?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/subject_declaration.rb#31 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/subject_declaration.rb#40 + def message_for(offense); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/subject_declaration.rb#23 +RuboCop::Cop::RSpec::SubjectDeclaration::MSG_LET = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/subject_declaration.rb#24 +RuboCop::Cop::RSpec::SubjectDeclaration::MSG_REDUNDANT = T.let(T.unsafe(nil), String) + +# Checks for stubbed test subjects. +# +# Checks nested subject stubs for innermost subject definition +# when subject is also defined in parent example groups. +# +# @example +# # bad +# describe Article do +# subject(:article) { Article.new } +# +# it 'indicates that the author is unknown' do +# allow(article).to receive(:author).and_return(nil) +# expect(article.description).to include('by an unknown author') +# end +# end +# +# # bad +# describe Article do +# subject(:foo) { Article.new } +# +# context 'nested subject' do +# subject(:article) { Article.new } +# +# it 'indicates that the author is unknown' do +# allow(article).to receive(:author).and_return(nil) +# expect(article.description).to include('by an unknown author') +# end +# end +# end +# +# # good +# describe Article do +# subject(:article) { Article.new(author: nil) } +# +# it 'indicates that the author is unknown' do +# expect(article.description).to include('by an unknown author') +# end +# end +# @see https://robots.thoughtbot.com/don-t-stub-the-system-under-test +# @see https://penelope.zone/2015/12/27/introducing-rspec-smells-and-where-to-find-them.html#smell-1-stubjec +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/subject_stub.rb#50 +class RuboCop::Cop::RSpec::SubjectStub < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RSpec::TopLevelGroup + + # Find a memoized helper + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/subject_stub.rb#80 + def let?(param0 = T.unsafe(nil)); end + + # Match `allow` and `expect(...).to receive` + # + # @example source that matches + # allow(foo).to receive(:bar) + # allow(foo).to receive(:bar).with(1) + # allow(foo).to receive(:bar).with(1).and_return(2) + # expect(foo).to receive(:bar) + # expect(foo).to receive(:bar).with(1) + # expect(foo).to receive(:bar).with(1).and_return(2) + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/subject_stub.rb#97 + def message_expectation?(param0 = T.unsafe(nil), param1); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/subject_stub.rb#109 + def message_expectation_matcher?(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/subject_stub.rb#115 + def on_top_level_group(node); end + + # Find a named or unnamed subject definition + # + # @example anonymous subject + # subject?(parse('subject { foo }').ast) do |name| + # name # => :subject + # end + # @example named subject + # subject?(parse('subject(:thing) { foo }').ast) do |name| + # name # => :thing + # end + # @param node [RuboCop::AST::Node] + # @yield [Symbol] subject name + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/subject_stub.rb#71 + def subject?(param0 = T.unsafe(nil)); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/subject_stub.rb#126 + def find_all_explicit(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/subject_stub.rb#140 + def find_subject_expectations(node, subject_names = T.unsafe(nil), &block); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/subject_stub.rb#53 +RuboCop::Cop::RSpec::SubjectStub::MSG = T.let(T.unsafe(nil), String) + +# Helper methods for top level example group cops +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/top_level_group.rb#7 +module RuboCop::Cop::RSpec::TopLevelGroup + extend ::RuboCop::AST::NodePattern::Macros + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/top_level_group.rb#10 + def on_new_investigation; end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/top_level_group.rb#19 + def top_level_groups; end + + private + + # Dummy methods to be overridden in the consumer + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/top_level_group.rb#27 + def on_top_level_example_group(_node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/top_level_group.rb#29 + def on_top_level_group(_node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/top_level_group.rb#48 + def root_node; end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/top_level_group.rb#31 + def top_level_group?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/top_level_group.rb#35 + def top_level_nodes(node); end +end + +# Description should be descriptive. +# +# If example group or example contains only `execute string`, numbers +# and regular expressions, the description is not clear. +# +# @example +# # bad +# describe `time` do +# # ... +# end +# +# # bad +# context /when foo/ do +# # ... +# end +# +# # bad +# it 10000 do +# # ... +# end +# +# # good +# describe Foo do +# # ... +# end +# +# # good +# describe '#foo' do +# # ... +# end +# +# # good +# context "when #{foo} is bar" do +# # ... +# end +# +# # good +# it 'does something' do +# # ... +# end +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/undescriptive_literals_description.rb#47 +class RuboCop::Cop::RSpec::UndescriptiveLiteralsDescription < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/undescriptive_literals_description.rb#51 + def example_groups_or_example?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/undescriptive_literals_description.rb#55 + def on_block(node); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/undescriptive_literals_description.rb#63 + def offense?(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/undescriptive_literals_description.rb#48 +RuboCop::Cop::RSpec::UndescriptiveLiteralsDescription::MSG = T.let(T.unsafe(nil), String) + +# Checks for a specified error in checking raised errors. +# +# Enforces one of an Exception type, a string, or a regular +# expression to match against the exception message as a parameter +# to `raise_error` +# +# @example +# # bad +# expect { +# raise StandardError.new('error') +# }.to raise_error +# +# # good +# expect { +# raise StandardError.new('error') +# }.to raise_error(StandardError) +# +# expect { +# raise StandardError.new('error') +# }.to raise_error('error') +# +# expect { +# raise StandardError.new('error') +# }.to raise_error(/err/) +# +# expect { do_something }.not_to raise_error +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/unspecified_exception.rb#33 +class RuboCop::Cop::RSpec::UnspecifiedException < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/unspecified_exception.rb#42 + def expect_to?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/unspecified_exception.rb#46 + def on_send(node); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/unspecified_exception.rb#54 + def empty_exception_matcher?(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/unspecified_exception.rb#64 + def find_expect_to(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/unspecified_exception.rb#34 +RuboCop::Cop::RSpec::UnspecifiedException::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/unspecified_exception.rb#36 +RuboCop::Cop::RSpec::UnspecifiedException::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Helps check offenses with variable definitions +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/variable.rb#7 +module RuboCop::Cop::RSpec::Variable + extend ::RuboCop::AST::NodePattern::Macros + + # source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/variable.rb#14 + def variable_definition?(param0 = T.unsafe(nil)); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/variable.rb#11 +RuboCop::Cop::RSpec::Variable::Helpers = RuboCop::RSpec::Language::Helpers + +# source://rubocop-rspec//lib/rubocop/cop/rspec/mixin/variable.rb#10 +RuboCop::Cop::RSpec::Variable::Subjects = RuboCop::RSpec::Language::Subjects + +# Checks that memoized helpers names are symbols or strings. +# +# @example EnforcedStyle: symbols (default) +# # bad +# subject('user') { create_user } +# let('user_name') { 'Adam' } +# +# # good +# subject(:user) { create_user } +# let(:user_name) { 'Adam' } +# @example EnforcedStyle: strings +# # bad +# subject(:user) { create_user } +# let(:user_name) { 'Adam' } +# +# # good +# subject('user') { create_user } +# let('user_name') { 'Adam' } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/variable_definition.rb#26 +class RuboCop::Cop::RSpec::VariableDefinition < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + include ::RuboCop::Cop::RSpec::Variable + include ::RuboCop::Cop::RSpec::InsideExampleGroup + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/variable_definition.rb#34 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/variable_definition.rb#51 + def correct_variable(variable); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/variable_definition.rb#67 + def string?(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/variable_definition.rb#62 + def style_offense?(variable); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/variable_definition.rb#71 + def symbol?(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/variable_definition.rb#32 +RuboCop::Cop::RSpec::VariableDefinition::MSG = T.let(T.unsafe(nil), String) + +# Checks that memoized helper names use the configured style. +# +# Variables can be excluded from checking using the `AllowedPatterns` +# option. +# +# @example EnforcedStyle: snake_case (default) +# # bad +# subject(:userName1) { 'Adam' } +# let(:userName2) { 'Adam' } +# +# # good +# subject(:user_name_1) { 'Adam' } +# let(:user_name_2) { 'Adam' } +# @example EnforcedStyle: camelCase +# # bad +# subject(:user_name_1) { 'Adam' } +# let(:user_name_2) { 'Adam' } +# +# # good +# subject(:userName1) { 'Adam' } +# let(:userName2) { 'Adam' } +# @example AllowedPatterns configuration +# # rubocop.yml +# # RSpec/VariableName: +# # EnforcedStyle: snake_case +# # AllowedPatterns: +# # - ^userFood +# @example +# # okay because it matches the `^userFood` regex in `AllowedPatterns` +# subject(:userFood_1) { 'spaghetti' } +# let(:userFood_2) { 'fettuccine' } +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/variable_name.rb#41 +class RuboCop::Cop::RSpec::VariableName < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + include ::RuboCop::Cop::ConfigurableFormatting + include ::RuboCop::Cop::ConfigurableNaming + include ::RuboCop::Cop::AllowedPattern + include ::RuboCop::Cop::RSpec::Variable + include ::RuboCop::Cop::RSpec::InsideExampleGroup + + # source://rubocop-rspec//lib/rubocop/cop/rspec/variable_name.rb#49 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/variable_name.rb#62 + def message(style); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/variable_name.rb#47 +RuboCop::Cop::RSpec::VariableName::MSG = T.let(T.unsafe(nil), String) + +# Checks for consistent verified double reference style. +# +# Only investigates references that are one of the supported styles. +# +# This cop can be configured in your configuration using the +# `EnforcedStyle` option and supports `--auto-gen-config`. +# +# @example `EnforcedStyle: constant` (default) +# # bad +# let(:foo) do +# instance_double('ClassName', method_name: 'returned_value') +# end +# +# # good +# let(:foo) do +# instance_double(ClassName, method_name: 'returned_value') +# end +# @example `EnforcedStyle: string` +# # bad +# let(:foo) do +# instance_double(ClassName, method_name: 'returned_value') +# end +# +# # good +# let(:foo) do +# instance_double('ClassName', method_name: 'returned_value') +# end +# @example Reference is not in the supported style list. No enforcement +# +# # good +# let(:foo) do +# instance_double(@klass, method_name: 'returned_value') +# end +# @see https://rspec.info/features/3-12/rspec-mocks/verifying-doubles +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/verified_double_reference.rb#43 +class RuboCop::Cop::RSpec::VerifiedDoubleReference < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::ConfigurableEnforcedStyle + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/verified_double_reference.rb#74 + def on_send(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/verified_double_reference.rb#66 + def verified_double(param0 = T.unsafe(nil)); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/verified_double_reference.rb#101 + def correct_style(offense); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/verified_double_reference.rb#92 + def opposing_style?(class_reference); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/verified_double_reference.rb#47 +RuboCop::Cop::RSpec::VerifiedDoubleReference::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/verified_double_reference.rb#60 +RuboCop::Cop::RSpec::VerifiedDoubleReference::REFERENCE_TYPE_STYLES = T.let(T.unsafe(nil), Hash) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/verified_double_reference.rb#49 +RuboCop::Cop::RSpec::VerifiedDoubleReference::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Set) + +# Prefer using verifying doubles over normal doubles. +# +# @example +# # bad +# let(:foo) do +# double(method_name: 'returned value') +# end +# +# # bad +# let(:foo) do +# double("ClassName", method_name: 'returned value') +# end +# +# # good +# let(:foo) do +# instance_double("ClassName", method_name: 'returned value') +# end +# @see https://rspec.info/features/3-12/rspec-mocks/verifying-doubles +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/verified_doubles.rb#26 +class RuboCop::Cop::RSpec::VerifiedDoubles < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/verified_doubles.rb#35 + def on_send(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/verified_doubles.rb#31 + def unverified_double(param0 = T.unsafe(nil)); end + + private + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/verified_doubles.rb#46 + def symbol?(name); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/verified_doubles.rb#27 +RuboCop::Cop::RSpec::VerifiedDoubles::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/verified_doubles.rb#28 +RuboCop::Cop::RSpec::VerifiedDoubles::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Checks void `expect()`. +# +# @example +# # bad +# expect(something) +# +# # good +# expect(something).to be(1) +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/void_expect.rb#15 +class RuboCop::Cop::RSpec::VoidExpect < ::RuboCop::Cop::RSpec::Base + # source://rubocop-rspec//lib/rubocop/cop/rspec/void_expect.rb#21 + def expect?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/void_expect.rb#26 + def expect_block?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/void_expect.rb#36 + def on_block(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/void_expect.rb#30 + def on_send(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/void_expect.rb#44 + def check_expect(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/void_expect.rb#50 + def void?(expect); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/void_expect.rb#16 +RuboCop::Cop::RSpec::VoidExpect::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-rspec//lib/rubocop/cop/rspec/void_expect.rb#18 +RuboCop::Cop::RSpec::VoidExpect::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + +# Checks for calling a block within a stub. +# +# @example +# # bad +# allow(foo).to receive(:bar) { |&block| block.call(1) } +# +# # good +# expect(foo).to receive(:bar).and_yield(1) +# +# source://rubocop-rspec//lib/rubocop/cop/rspec/yield.rb#15 +class RuboCop::Cop::RSpec::Yield < ::RuboCop::Cop::RSpec::Base + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-rspec//lib/rubocop/cop/rspec/yield.rb#25 + def block_arg(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/yield.rb#28 + def block_call?(param0 = T.unsafe(nil), param1); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/yield.rb#22 + def method_on_stub?(param0); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/yield.rb#30 + def on_block(node); end + + private + + # source://rubocop-rspec//lib/rubocop/cop/rspec/yield.rb#46 + def autocorrect(corrector, node, range); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/yield.rb#61 + def block_range(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/cop/rspec/yield.rb#53 + def calling_block?(node, block); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/yield.rb#73 + def convert_block_to_yield(node); end + + # source://rubocop-rspec//lib/rubocop/cop/rspec/yield.rb#65 + def generate_replacement(node); end +end + +# source://rubocop-rspec//lib/rubocop/cop/rspec/yield.rb#19 +RuboCop::Cop::RSpec::Yield::MSG = T.let(T.unsafe(nil), String) + +# RuboCop RSpec project namespace +# +# source://rubocop-rspec//lib/rubocop/rspec.rb#5 +module RuboCop::RSpec; end + +# Shared behavior for aligning braces for single line lets +# +# source://rubocop-rspec//lib/rubocop/rspec/align_let_brace.rb#6 +class RuboCop::RSpec::AlignLetBrace + include ::RuboCop::RSpec::Language + include ::RuboCop::PathUtil + include ::RuboCop::Cop::Util + + # @return [AlignLetBrace] a new instance of AlignLetBrace + # + # source://rubocop-rspec//lib/rubocop/rspec/align_let_brace.rb#10 + def initialize(root, token); end + + # source://rubocop-rspec//lib/rubocop/rspec/align_let_brace.rb#21 + def indent_for(node); end + + # source://rubocop-rspec//lib/rubocop/rspec/align_let_brace.rb#15 + def offending_tokens; end + + private + + # source://rubocop-rspec//lib/rubocop/rspec/align_let_brace.rb#43 + def adjacent_let_chunks; end + + # source://rubocop-rspec//lib/rubocop/rspec/align_let_brace.rb#35 + def let_group_for(let); end + + # source://rubocop-rspec//lib/rubocop/rspec/align_let_brace.rb#27 + def let_token(node); end + + # Returns the value of attribute root. + # + # source://rubocop-rspec//lib/rubocop/rspec/align_let_brace.rb#60 + def root; end + + # source://rubocop-rspec//lib/rubocop/rspec/align_let_brace.rb#53 + def single_line_lets; end + + # source://rubocop-rspec//lib/rubocop/rspec/align_let_brace.rb#31 + def target_column_for(let); end + + # Returns the value of attribute token. + # + # source://rubocop-rspec//lib/rubocop/rspec/align_let_brace.rb#60 + def token; end +end + +# source://rubocop-rspec//lib/rubocop/rspec.rb#7 +RuboCop::RSpec::CONFIG_DEFAULT = T.let(T.unsafe(nil), Pathname) + +# Wrapper for RSpec DSL methods +# +# source://rubocop-rspec//lib/rubocop/rspec/concept.rb#6 +class RuboCop::RSpec::Concept + include ::RuboCop::RSpec::Language + extend ::RuboCop::AST::NodePattern::Macros + + # @return [Concept] a new instance of Concept + # + # source://rubocop-rspec//lib/rubocop/rspec/concept.rb#10 + def initialize(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/rspec/concept.rb#14 + def ==(other); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/rspec/concept.rb#14 + def eql?(other); end + + # source://rubocop-rspec//lib/rubocop/rspec/concept.rb#20 + def hash; end + + # source://rubocop-rspec//lib/rubocop/rspec/concept.rb#24 + def to_node; end + + protected + + # Returns the value of attribute node. + # + # source://rubocop-rspec//lib/rubocop/rspec/concept.rb#30 + def node; end +end + +# source://rubocop-rspec//lib/rubocop/rspec/corrector/move_node.rb#5 +module RuboCop::RSpec::Corrector; end + +# Helper methods to move a node +# +# source://rubocop-rspec//lib/rubocop/rspec/corrector/move_node.rb#7 +class RuboCop::RSpec::Corrector::MoveNode + include ::RuboCop::Cop::RangeHelp + include ::RuboCop::Cop::RSpec::FinalEndLocation + include ::RuboCop::Cop::RSpec::CommentsHelp + + # @return [MoveNode] a new instance of MoveNode + # + # source://rubocop-rspec//lib/rubocop/rspec/corrector/move_node.rb#14 + def initialize(node, corrector, processed_source); end + + # Returns the value of attribute corrector. + # + # source://rubocop-rspec//lib/rubocop/rspec/corrector/move_node.rb#12 + def corrector; end + + # source://rubocop-rspec//lib/rubocop/rspec/corrector/move_node.rb#27 + def move_after(other); end + + # source://rubocop-rspec//lib/rubocop/rspec/corrector/move_node.rb#20 + def move_before(other); end + + # Returns the value of attribute original. + # + # source://rubocop-rspec//lib/rubocop/rspec/corrector/move_node.rb#12 + def original; end + + # Returns the value of attribute processed_source. + # + # source://rubocop-rspec//lib/rubocop/rspec/corrector/move_node.rb#12 + def processed_source; end + + private + + # source://rubocop-rspec//lib/rubocop/rspec/corrector/move_node.rb#40 + def node_range(node); end + + # source://rubocop-rspec//lib/rubocop/rspec/corrector/move_node.rb#44 + def node_range_with_surrounding_space(node); end + + # source://rubocop-rspec//lib/rubocop/rspec/corrector/move_node.rb#36 + def source(node); end +end + +# Wrapper for RSpec examples +# +# source://rubocop-rspec//lib/rubocop/rspec/example.rb#6 +class RuboCop::RSpec::Example < ::RuboCop::RSpec::Concept + # source://rubocop-rspec//lib/rubocop/rspec/example.rb#28 + def definition; end + + # source://rubocop-rspec//lib/rubocop/rspec/example.rb#16 + def doc_string; end + + # source://rubocop-rspec//lib/rubocop/rspec/example.rb#8 + def extract_doc_string(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/rspec/example.rb#14 + def extract_implementation(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/rspec/example.rb#11 + def extract_metadata(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/rspec/example.rb#24 + def implementation; end + + # source://rubocop-rspec//lib/rubocop/rspec/example.rb#20 + def metadata; end +end + +# Wrapper for RSpec example groups +# +# source://rubocop-rspec//lib/rubocop/rspec/example_group.rb#6 +class RuboCop::RSpec::ExampleGroup < ::RuboCop::RSpec::Concept + # source://rubocop-rspec//lib/rubocop/rspec/example_group.rb#28 + def examples; end + + # source://rubocop-rspec//lib/rubocop/rspec/example_group.rb#34 + def hooks; end + + # source://rubocop-rspec//lib/rubocop/rspec/example_group.rb#20 + def lets; end + + # Detect if the node is an example group or shared example + # + # Selectors which indicate that we should stop searching + # + # source://rubocop-rspec//lib/rubocop/rspec/example_group.rb#13 + def scope_change?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/rspec/example_group.rb#24 + def subjects; end + + private + + # source://rubocop-rspec//lib/rubocop/rspec/example_group.rb#56 + def find_all(node, predicate); end + + # Recursively search for predicate within the current scope + # + # Searches node and halts when a scope change is detected + # + # @param node [RuboCop::AST::Node] node to recursively search + # @param predicate [Symbol] method to call with node as argument + # @return [Array] discovered nodes + # + # source://rubocop-rspec//lib/rubocop/rspec/example_group.rb#50 + def find_all_in_scope(node, predicate); end +end + +# Wrapper for RSpec hook +# +# source://rubocop-rspec//lib/rubocop/rspec/hook.rb#6 +class RuboCop::RSpec::Hook < ::RuboCop::RSpec::Concept + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/rspec/hook.rb#24 + def example?; end + + # source://rubocop-rspec//lib/rubocop/rspec/hook.rb#8 + def extract_metadata(param0 = T.unsafe(nil)); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/rspec/hook.rb#18 + def knowable_scope?; end + + # source://rubocop-rspec//lib/rubocop/rspec/hook.rb#38 + def metadata; end + + # source://rubocop-rspec//lib/rubocop/rspec/hook.rb#14 + def name; end + + # source://rubocop-rspec//lib/rubocop/rspec/hook.rb#28 + def scope; end + + private + + # source://rubocop-rspec//lib/rubocop/rspec/hook.rb#74 + def scope_argument; end + + # source://rubocop-rspec//lib/rubocop/rspec/hook.rb#70 + def scope_name; end + + # source://rubocop-rspec//lib/rubocop/rspec/hook.rb#51 + def transform_metadata(meta); end + + # source://rubocop-rspec//lib/rubocop/rspec/hook.rb#66 + def transform_true(node); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/rspec/hook.rb#47 + def valid_scope?(node); end +end + +# Because RuboCop doesn't yet support plugins, we have to monkey patch in a +# bit of our configuration. +# +# source://rubocop-rspec//lib/rubocop/rspec/inject.rb#7 +module RuboCop::RSpec::Inject + class << self + # source://rubocop-rspec//lib/rubocop/rspec/inject.rb#8 + def defaults!; end + end +end + +# Contains node matchers for common RSpec DSL. +# +# RSpec allows for configuring aliases for commonly used DSL elements, e.g. +# example groups and hooks. It is possible to configure RuboCop RSpec to +# be able to properly detect these elements in the `RSpec/Language` section +# of the RuboCop YAML configuration file. +# +# In addition to providing useful matchers, this class is responsible for +# using the configured aliases. +# +# source://rubocop-rspec//lib/rubocop/rspec/language.rb#14 +module RuboCop::RSpec::Language + extend ::RuboCop::AST::NodePattern::Macros + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#49 + def example?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#28 + def example_group?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#44 + def example_group_with_body?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#25 + def explicit_rspec?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#52 + def hook?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#68 + def include?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#60 + def let?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#22 + def rspec?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#33 + def shared_group?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#37 + def spec_group?(param0 = T.unsafe(nil)); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#76 + def subject?(param0 = T.unsafe(nil)); end + + class << self + # Returns the value of attribute config. + # + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#18 + def config; end + + # Sets the attribute config + # + # @param value the value to set the attribute config to. + # + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#18 + def config=(_arg0); end + end +end + +# This is used in Dialect and DescribeClass cops to detect RSpec blocks. +# +# source://rubocop-rspec//lib/rubocop/rspec/language.rb#204 +module RuboCop::RSpec::Language::ALL + class << self + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#205 + def all(element); end + end +end + +# source://rubocop-rspec//lib/rubocop/rspec/language.rb#78 +module RuboCop::RSpec::Language::ExampleGroups + class << self + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#80 + def all(element); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#90 + def focused(element); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#86 + def regular(element); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#94 + def skipped(element); end + end +end + +# source://rubocop-rspec//lib/rubocop/rspec/language.rb#100 +module RuboCop::RSpec::Language::Examples + class << self + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#102 + def all(element); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#113 + def focused(element); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#121 + def pending(element); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#109 + def regular(element); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#117 + def skipped(element); end + end +end + +# source://rubocop-rspec//lib/rubocop/rspec/language.rb#127 +module RuboCop::RSpec::Language::Expectations + class << self + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#128 + def all(element); end + end +end + +# source://rubocop-rspec//lib/rubocop/rspec/language.rb#133 +module RuboCop::RSpec::Language::Helpers + class << self + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#134 + def all(element); end + end +end + +# source://rubocop-rspec//lib/rubocop/rspec/language.rb#145 +module RuboCop::RSpec::Language::HookScopes + class << self + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#147 + def all(element); end + end +end + +# source://rubocop-rspec//lib/rubocop/rspec/language.rb#146 +RuboCop::RSpec::Language::HookScopes::ALL = T.let(T.unsafe(nil), Array) + +# source://rubocop-rspec//lib/rubocop/rspec/language.rb#139 +module RuboCop::RSpec::Language::Hooks + class << self + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#140 + def all(element); end + end +end + +# source://rubocop-rspec//lib/rubocop/rspec/language.rb#152 +module RuboCop::RSpec::Language::Includes + class << self + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#154 + def all(element); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#163 + def context(element); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#159 + def examples(element); end + end +end + +# source://rubocop-rspec//lib/rubocop/rspec/language.rb#169 +module RuboCop::RSpec::Language::Runners + class << self + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#172 + def all(element = T.unsafe(nil)); end + end +end + +# source://rubocop-rspec//lib/rubocop/rspec/language.rb#170 +RuboCop::RSpec::Language::Runners::ALL = T.let(T.unsafe(nil), Array) + +# source://rubocop-rspec//lib/rubocop/rspec/language.rb#180 +module RuboCop::RSpec::Language::SharedGroups + class << self + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#182 + def all(element); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#191 + def context(element); end + + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#187 + def examples(element); end + end +end + +# source://rubocop-rspec//lib/rubocop/rspec/language.rb#197 +module RuboCop::RSpec::Language::Subjects + class << self + # source://rubocop-rspec//lib/rubocop/rspec/language.rb#198 + def all(element); end + end +end + +# RuboCop RSpec specific extensions of RuboCop::AST::Node +# +# source://rubocop-rspec//lib/rubocop/rspec/node.rb#6 +module RuboCop::RSpec::Node + # In various cops we want to regard const as literal although it's not + # strictly literal. + # + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/rspec/node.rb#9 + def recursive_literal_or_const?; end +end + +# source://rubocop-rspec//lib/rubocop/rspec.rb#6 +RuboCop::RSpec::PROJECT_ROOT = T.let(T.unsafe(nil), Pathname) + +# Version information for the RSpec RuboCop plugin. +# +# source://rubocop-rspec//lib/rubocop/rspec/version.rb#6 +module RuboCop::RSpec::Version; end + +# source://rubocop-rspec//lib/rubocop/rspec/version.rb#7 +RuboCop::RSpec::Version::STRING = T.let(T.unsafe(nil), String) + +# RSpec example wording rewriter +# +# source://rubocop-rspec//lib/rubocop/rspec/wording.rb#6 +class RuboCop::RSpec::Wording + # @return [Wording] a new instance of Wording + # + # source://rubocop-rspec//lib/rubocop/rspec/wording.rb#14 + def initialize(text, ignore:, replace:); end + + # source://rubocop-rspec//lib/rubocop/rspec/wording.rb#21 + def rewrite; end + + private + + # source://rubocop-rspec//lib/rubocop/rspec/wording.rb#80 + def append_suffix(word, suffix); end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/rspec/wording.rb#65 + def ignored_word?(word); end + + # Returns the value of attribute ignores. + # + # source://rubocop-rspec//lib/rubocop/rspec/wording.rb#39 + def ignores; end + + # source://rubocop-rspec//lib/rubocop/rspec/wording.rb#51 + def remove_should_and_pluralize; end + + # source://rubocop-rspec//lib/rubocop/rspec/wording.rb#41 + def replace_prefix(pattern, replacement); end + + # Returns the value of attribute replacements. + # + # source://rubocop-rspec//lib/rubocop/rspec/wording.rb#39 + def replacements; end + + # source://rubocop-rspec//lib/rubocop/rspec/wording.rb#69 + def substitute(word); end + + # Returns the value of attribute text. + # + # source://rubocop-rspec//lib/rubocop/rspec/wording.rb#39 + def text; end + + # @return [Boolean] + # + # source://rubocop-rspec//lib/rubocop/rspec/wording.rb#47 + def uppercase?(word); end +end + +# source://rubocop-rspec//lib/rubocop/rspec/wording.rb#11 +RuboCop::RSpec::Wording::ES_SUFFIX_PATTERN = T.let(T.unsafe(nil), Regexp) + +# source://rubocop-rspec//lib/rubocop/rspec/wording.rb#12 +RuboCop::RSpec::Wording::IES_SUFFIX_PATTERN = T.let(T.unsafe(nil), Regexp) + +# source://rubocop-rspec//lib/rubocop/rspec/wording.rb#8 +RuboCop::RSpec::Wording::SHOULDNT_BE_PREFIX = T.let(T.unsafe(nil), Regexp) + +# source://rubocop-rspec//lib/rubocop/rspec/wording.rb#7 +RuboCop::RSpec::Wording::SHOULDNT_PREFIX = T.let(T.unsafe(nil), Regexp) + +# source://rubocop-rspec//lib/rubocop/rspec/wording.rb#9 +RuboCop::RSpec::Wording::WILL_NOT_PREFIX = T.let(T.unsafe(nil), Regexp) + +# source://rubocop-rspec//lib/rubocop/rspec/wording.rb#10 +RuboCop::RSpec::Wording::WONT_PREFIX = T.let(T.unsafe(nil), Regexp)