diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-20 21:38:24 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-20 21:38:24 +0300 |
commit | 983a0bba5d2a042c4a3bbb22432ec192c7501d82 (patch) | |
tree | b153cd387c14ba23bd5a07514c7c01fddf6a78a0 /rubocop/cop/rspec/modify_sidekiq_middleware.rb | |
parent | a2bddee2cdb38673df0e004d5b32d9f77797de64 (diff) |
Add latest changes from gitlab-org/gitlab@12-10-stable-ee
Diffstat (limited to 'rubocop/cop/rspec/modify_sidekiq_middleware.rb')
-rw-r--r-- | rubocop/cop/rspec/modify_sidekiq_middleware.rb | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/rubocop/cop/rspec/modify_sidekiq_middleware.rb b/rubocop/cop/rspec/modify_sidekiq_middleware.rb new file mode 100644 index 00000000000..c38f074eb3a --- /dev/null +++ b/rubocop/cop/rspec/modify_sidekiq_middleware.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +module RuboCop + module Cop + module RSpec + # This cop checks for `Sidekiq::Testing.server_middleware` + # usage in specs. + # + # @example + # + # # bad + # Sidekiq::Testing.server_middleware do |chain| + # chain.add(MyMiddlewareUnderTest) + # end + # + # + # # good + # with_custom_sidekiq_middleware do |chain| + # chain.add(MyMiddlewareUnderTest) + # end + # + # + class ModifySidekiqMiddleware < RuboCop::Cop::Cop + MSG = <<~MSG + Don't modify global sidekiq middleware, use the `#with_sidekiq_server_middleware` + helper instead + MSG + + def_node_search :modifies_sidekiq_middleware?, <<~PATTERN + (send + (const + (const nil? :Sidekiq) :Testing) :server_middleware) + PATTERN + + def on_send(node) + return unless modifies_sidekiq_middleware?(node) + + add_offense(node, location: :expression) + end + + def autocorrect(node) + -> (corrector) do + corrector.replace(node.loc.expression, + 'with_sidekiq_server_middleware') + end + end + end + end + end +end |