diff options
author | Robert Speicher <rspeicher@gmail.com> | 2017-02-08 17:09:16 -0500 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2017-06-14 13:16:44 -0500 |
commit | 69ad827e829175bebb985c8afe76174f42fc60bc (patch) | |
tree | 635f61331140628d439497b36f2c67aeb570a648 /rubocop | |
parent | 557cbba7df35e2f3a27995f1caf77d40a3c223fa (diff) | |
download | gitlab-ce-69ad827e829175bebb985c8afe76174f42fc60bc.tar.gz |
Add a custom RSpec/SingleLineHook cop
This cop adds an offense when `before`, `after`, or `around` are used as
single-line blocks.
Diffstat (limited to 'rubocop')
-rw-r--r-- | rubocop/cop/rspec/single_line_hook.rb | 36 | ||||
-rw-r--r-- | rubocop/rubocop.rb | 1 |
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' |