rubocop 0.12.0 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rubocop might be problematic. Click here for more details.
- data/CHANGELOG.md +40 -0
- data/README.md +49 -8
- data/config/default.yml +40 -0
- data/config/enabled.yml +37 -9
- data/lib/rubocop.rb +24 -10
- data/lib/rubocop/cli.rb +41 -106
- data/lib/rubocop/config.rb +3 -2
- data/lib/rubocop/cop/commissioner.rb +15 -5
- data/lib/rubocop/cop/cop.rb +47 -32
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +2 -2
- data/lib/rubocop/cop/lint/block_alignment.rb +30 -9
- data/lib/rubocop/cop/lint/empty_ensure.rb +1 -1
- data/lib/rubocop/cop/lint/end_alignment.rb +4 -4
- data/lib/rubocop/cop/lint/end_in_method.rb +1 -1
- data/lib/rubocop/cop/lint/ensure_return.rb +1 -1
- data/lib/rubocop/cop/lint/eval.rb +1 -3
- data/lib/rubocop/cop/lint/handle_exceptions.rb +1 -1
- data/lib/rubocop/cop/lint/literal_in_condition.rb +6 -4
- data/lib/rubocop/cop/lint/loop.rb +1 -1
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -1
- data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +5 -8
- data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
- data/lib/rubocop/cop/lint/useless_assignment.rb +57 -60
- data/lib/rubocop/cop/lint/useless_comparison.rb +1 -1
- data/lib/rubocop/cop/lint/useless_setter_call.rb +85 -0
- data/lib/rubocop/cop/lint/void.rb +6 -8
- data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +1 -1
- data/lib/rubocop/cop/rails/read_attribute.rb +1 -1
- data/lib/rubocop/cop/rails/validation.rb +1 -1
- data/lib/rubocop/cop/style/access_control.rb +4 -6
- data/lib/rubocop/cop/style/alias.rb +1 -3
- data/lib/rubocop/cop/style/align_array.rb +47 -0
- data/lib/rubocop/cop/style/align_hash.rb +145 -0
- data/lib/rubocop/cop/style/align_parameters.rb +9 -3
- data/lib/rubocop/cop/style/and_or.rb +3 -4
- data/lib/rubocop/cop/style/ascii_comments.rb +1 -3
- data/lib/rubocop/cop/style/ascii_identifiers.rb +1 -1
- data/lib/rubocop/cop/style/attr.rb +1 -4
- data/lib/rubocop/cop/style/begin_block.rb +1 -1
- data/lib/rubocop/cop/style/block_comments.rb +1 -1
- data/lib/rubocop/cop/style/block_nesting.rb +2 -2
- data/lib/rubocop/cop/style/blocks.rb +14 -2
- data/lib/rubocop/cop/style/case_equality.rb +1 -3
- data/lib/rubocop/cop/style/case_indentation.rb +1 -1
- data/lib/rubocop/cop/style/character_literal.rb +1 -2
- data/lib/rubocop/cop/style/class_and_module_camel_case.rb +1 -1
- data/lib/rubocop/cop/style/class_methods.rb +1 -3
- data/lib/rubocop/cop/style/{avoid_class_vars.rb → class_vars.rb} +6 -2
- data/lib/rubocop/cop/style/collection_methods.rb +7 -9
- data/lib/rubocop/cop/style/colon_method_call.rb +1 -2
- data/lib/rubocop/cop/style/comment_annotation.rb +6 -6
- data/lib/rubocop/cop/style/constant_name.rb +1 -3
- data/lib/rubocop/cop/style/def_parentheses.rb +4 -12
- data/lib/rubocop/cop/style/documentation.rb +2 -2
- data/lib/rubocop/cop/style/dot_position.rb +2 -4
- data/lib/rubocop/cop/style/empty_line_between_defs.rb +21 -6
- data/lib/rubocop/cop/style/empty_lines.rb +1 -1
- data/lib/rubocop/cop/style/empty_literal.rb +3 -12
- data/lib/rubocop/cop/style/encoding.rb +6 -6
- data/lib/rubocop/cop/style/end_block.rb +1 -1
- data/lib/rubocop/cop/style/end_of_line.rb +5 -5
- data/lib/rubocop/cop/style/even_odd.rb +2 -2
- data/lib/rubocop/cop/style/favor_join.rb +1 -3
- data/lib/rubocop/cop/style/favor_modifier.rb +7 -3
- data/lib/rubocop/cop/style/favor_sprintf.rb +1 -1
- data/lib/rubocop/cop/style/favor_unless_over_negated_if.rb +1 -1
- data/lib/rubocop/cop/style/final_newline.rb +23 -0
- data/lib/rubocop/cop/style/{avoid_for.rb → for.rb} +2 -2
- data/lib/rubocop/cop/style/{avoid_global_vars.rb → global_vars.rb} +19 -6
- data/lib/rubocop/cop/style/hash_methods.rb +3 -5
- data/lib/rubocop/cop/style/hash_syntax.rb +4 -4
- data/lib/rubocop/cop/style/if_then_else.rb +1 -1
- data/lib/rubocop/cop/style/indentation_width.rb +4 -4
- data/lib/rubocop/cop/style/lambda.rb +2 -2
- data/lib/rubocop/cop/style/leading_comment_space.rb +1 -1
- data/lib/rubocop/cop/style/line_length.rb +7 -8
- data/lib/rubocop/cop/style/method_and_variable_snake_case.rb +1 -1
- data/lib/rubocop/cop/style/method_call_parentheses.rb +1 -4
- data/lib/rubocop/cop/style/method_length.rb +4 -4
- data/lib/rubocop/cop/style/module_function.rb +1 -3
- data/lib/rubocop/cop/style/multiline_block_chain.rb +44 -0
- data/lib/rubocop/cop/style/nil_comparison.rb +1 -3
- data/lib/rubocop/cop/style/not.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literals.rb +26 -6
- data/lib/rubocop/cop/style/op_method.rb +2 -2
- data/lib/rubocop/cop/style/parameter_lists.rb +4 -4
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +2 -2
- data/lib/rubocop/cop/style/perl_backrefs.rb +26 -0
- data/lib/rubocop/cop/style/proc.rb +1 -3
- data/lib/rubocop/cop/style/reduce_arguments.rb +7 -5
- data/lib/rubocop/cop/style/redundant_begin.rb +1 -1
- data/lib/rubocop/cop/style/redundant_return.rb +9 -2
- data/lib/rubocop/cop/style/redundant_self.rb +9 -2
- data/lib/rubocop/cop/style/regexp_literal.rb +7 -8
- data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
- data/lib/rubocop/cop/style/semicolon.rb +10 -10
- data/lib/rubocop/cop/style/signal_exception.rb +2 -4
- data/lib/rubocop/cop/style/single_line_methods.rb +2 -4
- data/lib/rubocop/cop/style/space_after_comma_etc.rb +1 -1
- data/lib/rubocop/cop/style/space_after_control_keyword.rb +1 -1
- data/lib/rubocop/cop/style/space_after_method_name.rb +1 -1
- data/lib/rubocop/cop/style/space_before_modifier_keyword.rb +34 -0
- data/lib/rubocop/cop/style/{avoid_perlisms.rb → special_global_vars.rb} +17 -8
- data/lib/rubocop/cop/style/string_literals.rb +1 -2
- data/lib/rubocop/cop/style/surrounding_space.rb +9 -8
- data/lib/rubocop/cop/style/symbol_array.rb +1 -1
- data/lib/rubocop/cop/style/symbol_name.rb +9 -2
- data/lib/rubocop/cop/style/tab.rb +5 -5
- data/lib/rubocop/cop/style/ternary_operator.rb +2 -6
- data/lib/rubocop/cop/style/trailing_blank_lines.rb +32 -0
- data/lib/rubocop/cop/style/trailing_whitespace.rb +5 -6
- data/lib/rubocop/cop/style/trivial_accessors.rb +5 -5
- data/lib/rubocop/cop/style/unless_else.rb +1 -1
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -3
- data/lib/rubocop/cop/style/when_then.rb +1 -4
- data/lib/rubocop/cop/style/while_until_do.rb +7 -5
- data/lib/rubocop/cop/style/word_array.rb +1 -1
- data/lib/rubocop/cop/team.rb +100 -0
- data/lib/rubocop/cop/variable_inspector.rb +323 -235
- data/lib/rubocop/cop/variable_inspector/assignment.rb +103 -0
- data/lib/rubocop/cop/variable_inspector/locatable.rb +162 -0
- data/lib/rubocop/cop/variable_inspector/reference.rb +31 -0
- data/lib/rubocop/cop/variable_inspector/scope.rb +70 -0
- data/lib/rubocop/cop/variable_inspector/variable.rb +87 -0
- data/lib/rubocop/cop/variable_inspector/variable_table.rb +129 -0
- data/lib/rubocop/formatter/json_formatter.rb +8 -8
- data/lib/rubocop/formatter/progress_formatter.rb +4 -4
- data/lib/rubocop/processed_source.rb +22 -1
- data/lib/rubocop/version.rb +1 -1
- data/rubocop.gemspec +1 -1
- data/spec/rubocop/cli_spec.rb +32 -30
- data/spec/rubocop/config_spec.rb +4 -6
- data/spec/rubocop/cop/commissioner_spec.rb +4 -5
- data/spec/rubocop/cop/cop_spec.rb +8 -26
- data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +5 -9
- data/spec/rubocop/cop/lint/block_alignment_spec.rb +105 -57
- data/spec/rubocop/cop/lint/empty_ensure_spec.rb +1 -1
- data/spec/rubocop/cop/lint/end_alignment_spec.rb +1 -1
- data/spec/rubocop/cop/lint/end_in_method_spec.rb +1 -1
- data/spec/rubocop/cop/lint/ensure_return_spec.rb +1 -1
- data/spec/rubocop/cop/lint/eval_spec.rb +3 -3
- data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +2 -2
- data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +1 -1
- data/spec/rubocop/cop/lint/loop_spec.rb +1 -1
- data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +1 -1
- data/spec/rubocop/cop/lint/rescue_exception_spec.rb +5 -5
- data/spec/rubocop/cop/lint/unreachable_code_spec.rb +1 -1
- data/spec/rubocop/cop/lint/useless_assignment_spec.rb +1545 -108
- data/spec/rubocop/cop/lint/useless_comparison_spec.rb +1 -1
- data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +101 -0
- data/spec/rubocop/cop/lint/void_spec.rb +1 -1
- data/spec/rubocop/cop/offence_spec.rb +4 -4
- data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +1 -1
- data/spec/rubocop/cop/rails/read_attribute_spec.rb +1 -1
- data/spec/rubocop/cop/rails/validation_spec.rb +1 -1
- data/spec/rubocop/cop/style/access_control_spec.rb +20 -20
- data/spec/rubocop/cop/style/alias_spec.rb +3 -3
- data/spec/rubocop/cop/style/align_array_spec.rb +62 -0
- data/spec/rubocop/cop/style/align_hash_spec.rb +267 -0
- data/spec/rubocop/cop/style/align_parameters_spec.rb +2 -2
- data/spec/rubocop/cop/style/and_or_spec.rb +1 -1
- data/spec/rubocop/cop/style/ascii_comments_spec.rb +2 -2
- data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +2 -2
- data/spec/rubocop/cop/style/attr_spec.rb +1 -1
- data/spec/rubocop/cop/style/begin_block_spec.rb +1 -1
- data/spec/rubocop/cop/style/block_comments_spec.rb +1 -1
- data/spec/rubocop/cop/style/block_nesting_spec.rb +3 -3
- data/spec/rubocop/cop/style/blocks_spec.rb +25 -1
- data/spec/rubocop/cop/style/case_equality_spec.rb +1 -1
- data/spec/rubocop/cop/style/case_indentation_spec.rb +5 -5
- data/spec/rubocop/cop/style/character_literal_spec.rb +1 -1
- data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +1 -1
- data/spec/rubocop/cop/style/class_methods_spec.rb +1 -1
- data/spec/rubocop/cop/style/class_vars_spec.rb +25 -0
- data/spec/rubocop/cop/style/collection_methods_spec.rb +5 -6
- data/spec/rubocop/cop/style/colon_method_call_spec.rb +0 -3
- data/spec/rubocop/cop/style/comment_annotation_spec.rb +20 -18
- data/spec/rubocop/cop/style/constant_name_spec.rb +1 -1
- data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +1 -1
- data/spec/rubocop/cop/style/def_without_parentheses_spec.rb +1 -1
- data/spec/rubocop/cop/style/documentation_spec.rb +1 -1
- data/spec/rubocop/cop/style/dot_position_spec.rb +5 -5
- data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +35 -4
- data/spec/rubocop/cop/style/empty_lines_spec.rb +1 -1
- data/spec/rubocop/cop/style/empty_literal_spec.rb +7 -7
- data/spec/rubocop/cop/style/encoding_spec.rb +11 -5
- data/spec/rubocop/cop/style/end_block_spec.rb +1 -1
- data/spec/rubocop/cop/style/end_of_line_spec.rb +4 -3
- data/spec/rubocop/cop/style/even_odd_spec.rb +1 -1
- data/spec/rubocop/cop/style/favor_join_spec.rb +2 -2
- data/spec/rubocop/cop/style/favor_modifier_spec.rb +13 -10
- data/spec/rubocop/cop/style/favor_sprintf_spec.rb +4 -4
- data/spec/rubocop/cop/style/favor_unless_over_negated_if_spec.rb +1 -1
- data/spec/rubocop/cop/style/favor_until_over_negated_while_spec.rb +4 -4
- data/spec/rubocop/cop/style/final_newline_spec.rb +25 -0
- data/spec/rubocop/cop/style/{avoid_for_spec.rb → for_spec.rb} +8 -12
- data/spec/rubocop/cop/style/{avoid_global_vars_spec.rb → global_vars_spec.rb} +13 -3
- data/spec/rubocop/cop/style/hash_methods_spec.rb +1 -1
- data/spec/rubocop/cop/style/hash_syntax_spec.rb +20 -9
- data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +3 -3
- data/spec/rubocop/cop/style/indentation_width_spec.rb +19 -19
- data/spec/rubocop/cop/style/lambda_spec.rb +6 -6
- data/spec/rubocop/cop/style/leading_comment_space_spec.rb +1 -1
- data/spec/rubocop/cop/style/line_length_spec.rb +3 -3
- data/spec/rubocop/cop/style/method_and_variable_snake_case_spec.rb +8 -9
- data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +1 -1
- data/spec/rubocop/cop/style/method_length_spec.rb +18 -17
- data/spec/rubocop/cop/style/module_function_spec.rb +1 -1
- data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +84 -0
- data/spec/rubocop/cop/style/multiline_if_then_spec.rb +2 -2
- data/spec/rubocop/cop/style/nil_comparison_spec.rb +1 -1
- data/spec/rubocop/cop/style/not_spec.rb +1 -1
- data/spec/rubocop/cop/style/numeric_literals_spec.rb +15 -25
- data/spec/rubocop/cop/style/one_line_conditional_spec.rb +2 -2
- data/spec/rubocop/cop/style/op_method_spec.rb +3 -3
- data/spec/rubocop/cop/style/parameter_lists_spec.rb +5 -5
- data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +4 -8
- data/spec/rubocop/cop/style/perl_backrefs_spec.rb +23 -0
- data/spec/rubocop/cop/style/proc_spec.rb +1 -1
- data/spec/rubocop/cop/style/reduce_arguments_spec.rb +18 -11
- data/spec/rubocop/cop/style/redundant_begin_spec.rb +1 -1
- data/spec/rubocop/cop/style/redundant_return_spec.rb +16 -1
- data/spec/rubocop/cop/style/redundant_self_spec.rb +6 -1
- data/spec/rubocop/cop/style/regexp_literal_spec.rb +19 -23
- data/spec/rubocop/cop/style/rescue_modifier_spec.rb +3 -3
- data/spec/rubocop/cop/style/semicolon_spec.rb +3 -3
- data/spec/rubocop/cop/style/signal_exception_spec.rb +1 -1
- data/spec/rubocop/cop/style/single_line_methods_spec.rb +22 -18
- data/spec/rubocop/cop/style/space_after_colon_spec.rb +4 -4
- data/spec/rubocop/cop/style/space_after_comma_spec.rb +4 -4
- data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +1 -1
- data/spec/rubocop/cop/style/space_after_method_name_spec.rb +1 -1
- data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +3 -3
- data/spec/rubocop/cop/style/space_around_braces_spec.rb +13 -12
- data/spec/rubocop/cop/style/space_around_equals_in_default_parameter_spec.rb +3 -3
- data/spec/rubocop/cop/style/space_around_operators_spec.rb +25 -25
- data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +53 -0
- data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +9 -9
- data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +47 -61
- data/spec/rubocop/cop/style/space_inside_parens_spec.rb +4 -4
- data/spec/rubocop/cop/style/special_global_vars_spec.rb +52 -0
- data/spec/rubocop/cop/style/string_literals_spec.rb +5 -5
- data/spec/rubocop/cop/style/symbol_array_spec.rb +1 -1
- data/spec/rubocop/cop/style/symbol_name_spec.rb +27 -18
- data/spec/rubocop/cop/style/tab_spec.rb +1 -1
- data/spec/rubocop/cop/style/ternary_operator_spec.rb +2 -2
- data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +24 -0
- data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +7 -7
- data/spec/rubocop/cop/style/trivial_accessors_spec.rb +6 -14
- data/spec/rubocop/cop/style/unless_else_spec.rb +3 -3
- data/spec/rubocop/cop/style/variable_interpolation_spec.rb +5 -5
- data/spec/rubocop/cop/style/when_then_spec.rb +15 -15
- data/spec/rubocop/cop/style/while_until_do_spec.rb +3 -3
- data/spec/rubocop/cop/style/word_array_spec.rb +1 -1
- data/spec/rubocop/cop/team_spec.rb +158 -0
- data/spec/rubocop/cop/variable_inspector/assignment_spec.rb +217 -0
- data/spec/rubocop/cop/variable_inspector/locatable_spec.rb +740 -0
- data/spec/rubocop/cop/variable_inspector/scope_spec.rb +191 -0
- data/spec/rubocop/cop/variable_inspector/variable_spec.rb +79 -0
- data/spec/rubocop/cop/variable_inspector/variable_table_spec.rb +275 -0
- data/spec/rubocop/cop/variable_inspector_spec.rb +13 -533
- data/spec/rubocop/formatter/clang_style_formatter_spec.rb +4 -4
- data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +1 -1
- data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +3 -3
- data/spec/rubocop/formatter/file_list_formatter_spec.rb +3 -3
- data/spec/rubocop/formatter/progress_formatter_spec.rb +1 -1
- data/spec/spec_helper.rb +5 -1
- data/spec/support/ast_helper.rb +15 -0
- data/spec/support/shared_context.rb +18 -0
- data/spec/support/shared_examples.rb +1 -1
- metadata +95 -32
- checksums.yaml +0 -7
- data/lib/rubocop/cop/lint/unused_local_variable.rb +0 -32
- data/lib/rubocop/cop/style/avoid_perl_backrefs.rb +0 -19
- data/spec/rubocop/cop/lint/unused_local_variable_spec.rb +0 -588
- data/spec/rubocop/cop/style/avoid_class_vars_spec.rb +0 -27
- data/spec/rubocop/cop/style/avoid_perl_backrefs_spec.rb +0 -20
- data/spec/rubocop/cop/style/avoid_perlisms_spec.rb +0 -47
@@ -6,7 +6,7 @@ module Rubocop
|
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
8
|
describe AlignParameters do
|
9
|
-
|
9
|
+
subject(:align) { AlignParameters.new }
|
10
10
|
|
11
11
|
it 'registers an offence for parameters with single indent' do
|
12
12
|
inspect_source(align, ['function(a,',
|
@@ -22,7 +22,7 @@ module Rubocop
|
|
22
22
|
|
23
23
|
it 'accepts multiline []= method call' do
|
24
24
|
inspect_source(align, ['Test.config["something"] =',
|
25
|
-
|
25
|
+
' true'])
|
26
26
|
expect(align.offences).to be_empty
|
27
27
|
end
|
28
28
|
|
@@ -6,14 +6,14 @@ module Rubocop
|
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
8
|
describe AsciiComments do
|
9
|
-
|
9
|
+
subject(:ascii) { AsciiComments.new }
|
10
10
|
|
11
11
|
it 'registers an offence for a comment with non-ascii chars' do
|
12
12
|
inspect_source(ascii,
|
13
13
|
['# encoding: utf-8',
|
14
14
|
'# 这是什么?'])
|
15
15
|
expect(ascii.offences.size).to eq(1)
|
16
|
-
expect(ascii.
|
16
|
+
expect(ascii.messages)
|
17
17
|
.to eq([AsciiComments::MSG])
|
18
18
|
end
|
19
19
|
|
@@ -6,14 +6,14 @@ module Rubocop
|
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
8
|
describe AsciiIdentifiers do
|
9
|
-
|
9
|
+
subject(:ascii) { AsciiIdentifiers.new }
|
10
10
|
|
11
11
|
it 'registers an offence for a variable name with non-ascii chars' do
|
12
12
|
inspect_source(ascii,
|
13
13
|
['# encoding: utf-8',
|
14
14
|
'älg = 1'])
|
15
15
|
expect(ascii.offences.size).to eq(1)
|
16
|
-
expect(ascii.
|
16
|
+
expect(ascii.messages)
|
17
17
|
.to eq([AsciiIdentifiers::MSG])
|
18
18
|
end
|
19
19
|
|
@@ -5,9 +5,9 @@ require 'spec_helper'
|
|
5
5
|
module Rubocop
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
|
-
describe BlockNesting do
|
9
|
-
|
10
|
-
|
8
|
+
describe BlockNesting, :config do
|
9
|
+
subject(:block_nesting) { BlockNesting.new(config) }
|
10
|
+
let(:cop_config) { { 'Max' => 2 } }
|
11
11
|
|
12
12
|
it 'accepts `Max` levels of nesting' do
|
13
13
|
source = ['if a',
|
@@ -6,7 +6,7 @@ module Rubocop
|
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
8
|
describe Blocks do
|
9
|
-
|
9
|
+
subject(:cop) { described_class.new }
|
10
10
|
|
11
11
|
it 'accepts a multiline block with do-end' do
|
12
12
|
inspect_source(cop, ['each do |x|',
|
@@ -24,6 +24,11 @@ module Rubocop
|
|
24
24
|
expect(cop.offences).to be_empty
|
25
25
|
end
|
26
26
|
|
27
|
+
it 'auto-corrects do and end for single line blocks to { and }' do
|
28
|
+
new_source = autocorrect_source(cop, 'block do |x| end')
|
29
|
+
expect(new_source).to eq('block { |x| }')
|
30
|
+
end
|
31
|
+
|
27
32
|
context 'when there are braces around a multi-line block' do
|
28
33
|
it 'registers an offence in the simple case' do
|
29
34
|
inspect_source(cop, ['each { |x|',
|
@@ -71,6 +76,25 @@ module Rubocop
|
|
71
76
|
inspect_source(cop, src)
|
72
77
|
expect(cop.messages).to eq([Blocks::MULTI_LINE_MSG])
|
73
78
|
end
|
79
|
+
|
80
|
+
it 'auto-corrects do and end for single line blocks to { and }' do
|
81
|
+
source = <<-END.strip_indent
|
82
|
+
each { |x|
|
83
|
+
some_method
|
84
|
+
other_method
|
85
|
+
}
|
86
|
+
END
|
87
|
+
|
88
|
+
expected_source = <<-END.strip_indent
|
89
|
+
each do |x|
|
90
|
+
some_method
|
91
|
+
other_method
|
92
|
+
end
|
93
|
+
END
|
94
|
+
|
95
|
+
new_source = autocorrect_source(cop, source)
|
96
|
+
expect(new_source).to eq(expected_source)
|
97
|
+
end
|
74
98
|
end
|
75
99
|
end
|
76
100
|
end
|
@@ -6,7 +6,7 @@ module Rubocop
|
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
8
|
describe CaseIndentation do
|
9
|
-
|
9
|
+
subject(:ind) { CaseIndentation.new }
|
10
10
|
|
11
11
|
it "registers an offence for a when clause that's deeper than case" do
|
12
12
|
source = ['case a',
|
@@ -16,7 +16,7 @@ module Rubocop
|
|
16
16
|
' end',
|
17
17
|
'end']
|
18
18
|
inspect_source(ind, source)
|
19
|
-
expect(ind.
|
19
|
+
expect(ind.messages).to eq(
|
20
20
|
['Indent when as deep as case.'] * 2)
|
21
21
|
end
|
22
22
|
|
@@ -44,7 +44,7 @@ module Rubocop
|
|
44
44
|
'end',
|
45
45
|
'']
|
46
46
|
inspect_source(ind, source)
|
47
|
-
expect(ind.
|
47
|
+
expect(ind.messages).to be_empty
|
48
48
|
end
|
49
49
|
|
50
50
|
it "doesn't get confused by symbols named case or when" do
|
@@ -57,7 +57,7 @@ module Rubocop
|
|
57
57
|
'end',
|
58
58
|
'']
|
59
59
|
inspect_source(ind, source)
|
60
|
-
expect(ind.
|
60
|
+
expect(ind.messages).to be_empty
|
61
61
|
end
|
62
62
|
|
63
63
|
it 'accepts correctly indented whens in complex combinations' do
|
@@ -80,7 +80,7 @@ module Rubocop
|
|
80
80
|
'end',
|
81
81
|
'']
|
82
82
|
inspect_source(ind, source)
|
83
|
-
expect(ind.
|
83
|
+
expect(ind.messages).to be_empty
|
84
84
|
end
|
85
85
|
end
|
86
86
|
end
|
@@ -6,7 +6,7 @@ module Rubocop
|
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
8
|
describe ClassAndModuleCamelCase do
|
9
|
-
|
9
|
+
subject(:camel_case) { ClassAndModuleCamelCase.new }
|
10
10
|
|
11
11
|
it 'registers an offence for underscore in class and module name' do
|
12
12
|
inspect_source(camel_case,
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe ClassVars do
|
9
|
+
subject(:cop) { described_class.new }
|
10
|
+
|
11
|
+
it 'registers an offence for class variable declaration' do
|
12
|
+
inspect_source(cop, ['class TestClass; @@test = 10; end'])
|
13
|
+
expect(cop.offences.size).to eq(1)
|
14
|
+
expect(cop.messages)
|
15
|
+
.to eq(['Replace class var @@test with a class instance var.'])
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'does not register an offence for class variable usage' do
|
19
|
+
inspect_source(cop, ['@@test.test(20)'])
|
20
|
+
expect(cop.offences).to be_empty
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -5,8 +5,8 @@ require 'spec_helper'
|
|
5
5
|
module Rubocop
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
|
-
describe CollectionMethods do
|
9
|
-
|
8
|
+
describe CollectionMethods, :config do
|
9
|
+
cop_config = {
|
10
10
|
'PreferredMethods' => {
|
11
11
|
'collect' => 'map',
|
12
12
|
'inject' => 'reduce',
|
@@ -15,13 +15,13 @@ module Rubocop
|
|
15
15
|
}
|
16
16
|
}
|
17
17
|
|
18
|
-
|
18
|
+
subject(:cop) { CollectionMethods.new(config) }
|
19
|
+
let(:cop_config) { cop_config }
|
19
20
|
|
20
|
-
|
21
|
+
cop_config['PreferredMethods'].each do |method, preferred_method|
|
21
22
|
it "registers an offence for #{method} with block" do
|
22
23
|
inspect_source(cop, ["[1, 2, 3].#{method} { |e| e + 1 }"])
|
23
24
|
expect(cop.offences.size).to eq(1)
|
24
|
-
preferred_method = CollectionMethods.preferred_methods[method]
|
25
25
|
expect(cop.messages)
|
26
26
|
.to eq(["Prefer #{preferred_method} over #{method}."])
|
27
27
|
end
|
@@ -29,7 +29,6 @@ module Rubocop
|
|
29
29
|
it "registers an offence for #{method} with proc param" do
|
30
30
|
inspect_source(cop, ["[1, 2, 3].#{method}(&:test)"])
|
31
31
|
expect(cop.offences.size).to eq(1)
|
32
|
-
preferred_method = CollectionMethods.preferred_methods[method]
|
33
32
|
expect(cop.messages)
|
34
33
|
.to eq(["Prefer #{preferred_method} over #{method}."])
|
35
34
|
end
|
@@ -5,25 +5,24 @@ require 'spec_helper'
|
|
5
5
|
module Rubocop
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
|
-
describe CommentAnnotation do
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
}
|
8
|
+
describe CommentAnnotation, :config do
|
9
|
+
subject(:cop) { CommentAnnotation.new(config) }
|
10
|
+
let(:cop_config) do
|
11
|
+
{ 'Keywords' => %w(TODO FIXME OPTIMIZE HACK REVIEW) }
|
13
12
|
end
|
14
|
-
let(:cop) { CommentAnnotation.new }
|
15
13
|
|
16
14
|
it 'registers an offence for a missing colon' do
|
17
15
|
inspect_source(cop, ['# TODO make better'])
|
18
16
|
expect(cop.offences.size).to eq(1)
|
19
17
|
end
|
20
18
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
19
|
+
context 'with configured keyword' do
|
20
|
+
let(:cop_config) { { 'Keywords' => %w(ISSUE) } }
|
21
|
+
|
22
|
+
it 'registers an offence for a missing colon after the word' do
|
23
|
+
inspect_source(cop, ['# ISSUE wrong order'])
|
24
|
+
expect(cop.offences.size).to eq(1)
|
25
|
+
end
|
27
26
|
end
|
28
27
|
|
29
28
|
context 'when used with the clang formatter' do
|
@@ -77,12 +76,15 @@ module Rubocop
|
|
77
76
|
expect(cop.offences).to be_empty
|
78
77
|
end
|
79
78
|
|
80
|
-
|
81
|
-
|
82
|
-
'Keywords' => %w(FIXME OPTIMIZE HACK REVIEW)
|
83
|
-
|
84
|
-
|
85
|
-
|
79
|
+
context 'when a keyword is not in the configuration' do
|
80
|
+
let(:cop_config) do
|
81
|
+
{ 'Keywords' => %w(FIXME OPTIMIZE HACK REVIEW) }
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'accepts the word without colon' do
|
85
|
+
inspect_source(cop, ['# TODO make better'])
|
86
|
+
expect(cop.offences).to be_empty
|
87
|
+
end
|
86
88
|
end
|
87
89
|
end
|
88
90
|
end
|
@@ -5,11 +5,11 @@ require 'spec_helper'
|
|
5
5
|
module Rubocop
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
|
-
describe DotPosition do
|
9
|
-
|
8
|
+
describe DotPosition, :config do
|
9
|
+
subject(:cop) { DotPosition.new(config) }
|
10
10
|
|
11
11
|
context 'Leading dots style' do
|
12
|
-
|
12
|
+
let(:cop_config) { { 'Style' => 'Leading' } }
|
13
13
|
|
14
14
|
it 'registers an offence for trailing dot in multi-line call' do
|
15
15
|
inspect_source(cop, ['something.',
|
@@ -35,7 +35,7 @@ module Rubocop
|
|
35
35
|
end
|
36
36
|
|
37
37
|
context 'Trailing dots style' do
|
38
|
-
|
38
|
+
let(:cop_config) { { 'Style' => 'Trailing' } }
|
39
39
|
|
40
40
|
it 'registers an offence for leading dot in multi-line call' do
|
41
41
|
inspect_source(cop, ['something',
|
@@ -61,7 +61,7 @@ module Rubocop
|
|
61
61
|
end
|
62
62
|
|
63
63
|
context 'Unknown style' do
|
64
|
-
|
64
|
+
let(:cop_config) { { 'Style' => 'test' } }
|
65
65
|
|
66
66
|
it 'raises an exception' do
|
67
67
|
expect do
|
@@ -5,8 +5,9 @@ require 'spec_helper'
|
|
5
5
|
module Rubocop
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
|
-
describe EmptyLineBetweenDefs do
|
9
|
-
|
8
|
+
describe EmptyLineBetweenDefs, :config do
|
9
|
+
subject(:empty_lines) { EmptyLineBetweenDefs.new(config) }
|
10
|
+
let(:cop_config) { { 'AllowAdjacentOneLineDefs' => false } }
|
10
11
|
|
11
12
|
it 'finds offences in inner classes' do
|
12
13
|
inspect_source(empty_lines, ['class K',
|
@@ -77,7 +78,7 @@ module Rubocop
|
|
77
78
|
'end',
|
78
79
|
]
|
79
80
|
inspect_source(empty_lines, source)
|
80
|
-
expect(empty_lines.
|
81
|
+
expect(empty_lines.messages).to be_empty
|
81
82
|
end
|
82
83
|
|
83
84
|
it 'accepts a nested def' do
|
@@ -89,7 +90,37 @@ module Rubocop
|
|
89
90
|
'end',
|
90
91
|
]
|
91
92
|
inspect_source(empty_lines, source)
|
92
|
-
expect(empty_lines.
|
93
|
+
expect(empty_lines.messages).to be_empty
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'registers an offence for adjacent one-liners by default' do
|
97
|
+
source = ['def a; end',
|
98
|
+
'def b; end']
|
99
|
+
inspect_source(empty_lines, source)
|
100
|
+
expect(empty_lines.offences).to have(1).item
|
101
|
+
end
|
102
|
+
|
103
|
+
context 'when AllowAdjacentOneLineDefs is enabled' do
|
104
|
+
let(:cop_config) { { 'AllowAdjacentOneLineDefs' => true } }
|
105
|
+
|
106
|
+
it 'accepts adjacent one-liners' do
|
107
|
+
source = ['def a; end',
|
108
|
+
'def b; end']
|
109
|
+
inspect_source(empty_lines, source)
|
110
|
+
expect(empty_lines.offences).to be_empty
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'registers an offence for adjacent defs if some are multi-line' do
|
114
|
+
source = ['def a; end',
|
115
|
+
'def b; end',
|
116
|
+
'def c', # Not a one-liner, so this is an offence.
|
117
|
+
'end',
|
118
|
+
# Also an offence since previous was multi-line:
|
119
|
+
'def d; end'
|
120
|
+
]
|
121
|
+
inspect_source(empty_lines, source)
|
122
|
+
expect(empty_lines.offences.map(&:line)).to eq([3, 5])
|
123
|
+
end
|
93
124
|
end
|
94
125
|
end
|
95
126
|
end
|