summaryrefslogtreecommitdiff
path: root/rubocop
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2017-06-14 18:21:13 +0000
committerDouwe Maan <douwe@gitlab.com>2017-06-14 18:21:13 +0000
commit43e1481c8191651880fe20ff2b07a5501a5f7112 (patch)
tree5913098b01d3931c61eb935e4c2587dbdab20716 /rubocop
parent557cbba7df35e2f3a27995f1caf77d40a3c223fa (diff)
parent4daf9c00b7d38164f9a50dd3f27edc88235cecb8 (diff)
downloadgitlab-ce-43e1481c8191651880fe20ff2b07a5501a5f7112.tar.gz
Merge branch 'rs-single-line-rspec-hook-cop' into 'master'
Add a custom RSpec/SingleLineHook cop Closes #24891 See merge request !11911
Diffstat (limited to 'rubocop')
-rw-r--r--rubocop/cop/rspec/single_line_hook.rb36
-rw-r--r--rubocop/rubocop.rb1
2 files changed, 37 insertions, 0 deletions
diff --git a/rubocop/cop/rspec/single_line_hook.rb b/rubocop/cop/rspec/single_line_hook.rb
new file mode 100644
index 00000000000..a156b1d34cf
--- /dev/null
+++ b/rubocop/cop/rspec/single_line_hook.rb
@@ -0,0 +1,36 @@
+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 < RuboCop::Cop::RSpec::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/rubocop.rb b/rubocop/rubocop.rb
index 6b8d127dde6..55d7708fa8c 100644
--- a/rubocop/rubocop.rb
+++ b/rubocop/rubocop.rb
@@ -15,3 +15,4 @@ require_relative 'cop/migration/remove_index'
require_relative 'cop/migration/reversible_add_column_with_default'
require_relative 'cop/migration/timestamps'
require_relative 'cop/migration/update_column_in_batches'
+require_relative 'cop/rspec/single_line_hook'