diff options
author | Rémy Coutable <remy@rymai.me> | 2017-09-19 18:25:42 +0300 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2017-12-22 17:34:44 +0300 |
commit | a2d39b80109f006ff63752cfaed5e458f9443d1d (patch) | |
tree | cc5a0f06ba04448dbf025dd95a6e39686343d256 /rubocop/cop/rspec | |
parent | 299e04e318728d4ee5857379f8fb350c944a0b4e (diff) |
Use gitlab-styles
Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'rubocop/cop/rspec')
-rw-r--r-- | rubocop/cop/rspec/env_assignment.rb | 5 | ||||
-rw-r--r-- | rubocop/cop/rspec/single_line_hook.rb | 38 | ||||
-rw-r--r-- | rubocop/cop/rspec/verbose_include_metadata.rb | 74 |
3 files changed, 2 insertions, 115 deletions
diff --git a/rubocop/cop/rspec/env_assignment.rb b/rubocop/cop/rspec/env_assignment.rb index 257454af0e1..8b61fa8e264 100644 --- a/rubocop/cop/rspec/env_assignment.rb +++ b/rubocop/cop/rspec/env_assignment.rb @@ -1,4 +1,3 @@ -require 'rubocop-rspec' require_relative '../../spec_helpers' module RuboCop @@ -17,7 +16,7 @@ module RuboCop # before do # stub_env('FOO', 'bar') # end - class EnvAssignment < Cop + class EnvAssignment < RuboCop::Cop::Cop include SpecHelpers MESSAGE = "Don't assign to ENV, use `stub_env` instead.".freeze @@ -32,7 +31,7 @@ module RuboCop return unless in_spec?(node) return unless env_assignment?(node) - add_offense(node, :expression, MESSAGE) + add_offense(node, location: :expression, message: MESSAGE) end def autocorrect(node) diff --git a/rubocop/cop/rspec/single_line_hook.rb b/rubocop/cop/rspec/single_line_hook.rb deleted file mode 100644 index be611054323..00000000000 --- a/rubocop/cop/rspec/single_line_hook.rb +++ /dev/null @@ -1,38 +0,0 @@ -require 'rubocop-rspec' - -module RuboCop - module Cop - module RSpec - # This cop checks for single-line hook blocks - # - # @example - # - # # bad - # before { do_something } - # after(:each) { undo_something } - # - # # good - # before do - # do_something - # end - # - # after(:each) do - # undo_something - # end - class SingleLineHook < Cop - MESSAGE = "Don't use single-line hook blocks.".freeze - - def_node_search :rspec_hook?, <<~PATTERN - (send nil {:after :around :before} ...) - PATTERN - - def on_block(node) - return unless rspec_hook?(node) - return unless node.single_line? - - add_offense(node, :expression, MESSAGE) - end - end - end - end -end diff --git a/rubocop/cop/rspec/verbose_include_metadata.rb b/rubocop/cop/rspec/verbose_include_metadata.rb deleted file mode 100644 index 58390622d60..00000000000 --- a/rubocop/cop/rspec/verbose_include_metadata.rb +++ /dev/null @@ -1,74 +0,0 @@ -# frozen_string_literal: true - -require 'rubocop-rspec' - -module RuboCop - module Cop - module RSpec - # Checks for verbose include metadata used in the specs. - # - # @example - # # bad - # describe MyClass, js: true do - # end - # - # # good - # describe MyClass, :js do - # end - class VerboseIncludeMetadata < Cop - MSG = 'Use `%s` instead of `%s`.' - - SELECTORS = %i[describe context feature example_group it specify example scenario its].freeze - - def_node_matcher :include_metadata, <<-PATTERN - (send {(const nil :RSpec) nil} {#{SELECTORS.map(&:inspect).join(' ')}} - !const - ... - (hash $...)) - PATTERN - - def_node_matcher :invalid_metadata?, <<-PATTERN - (pair - (sym $...) - (true)) - PATTERN - - def on_send(node) - invalid_metadata_matches(node) do |match| - add_offense(node, :expression, format(MSG, good(match), bad(match))) - end - end - - def autocorrect(node) - lambda do |corrector| - invalid_metadata_matches(node) do |match| - corrector.replace(match.loc.expression, good(match)) - end - end - end - - private - - def invalid_metadata_matches(node) - include_metadata(node) do |matches| - matches.select(&method(:invalid_metadata?)).each do |match| - yield match - end - end - end - - def bad(match) - "#{metadata_key(match)}: true" - end - - def good(match) - ":#{metadata_key(match)}" - end - - def metadata_key(match) - match.children[0].source - end - end - end - end -end |