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,12 +6,12 @@ module Rubocop
|
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
8
|
describe SpaceInsideBrackets do
|
9
|
-
|
9
|
+
subject(:space) { SpaceInsideBrackets.new }
|
10
10
|
|
11
11
|
it 'registers an offence for an array literal with spaces inside' do
|
12
12
|
inspect_source(space, ['a = [1, 2 ]',
|
13
|
-
|
14
|
-
expect(space.
|
13
|
+
'b = [ 1, 2]'])
|
14
|
+
expect(space.messages).to eq(
|
15
15
|
['Space inside square brackets detected.',
|
16
16
|
'Space inside square brackets detected.'])
|
17
17
|
end
|
@@ -19,30 +19,30 @@ module Rubocop
|
|
19
19
|
it 'accepts space inside strings within square brackets' do
|
20
20
|
inspect_source(space, ["['Encoding:',",
|
21
21
|
" ' Enabled: false']"])
|
22
|
-
expect(space.
|
22
|
+
expect(space.messages).to be_empty
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'accepts space inside square brackets if on its own row' do
|
26
26
|
inspect_source(space, ['a = [',
|
27
27
|
' 1, 2',
|
28
28
|
' ]'])
|
29
|
-
expect(space.
|
29
|
+
expect(space.messages).to be_empty
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'accepts square brackets as method name' do
|
33
33
|
inspect_source(space, ['def Vector.[](*array)',
|
34
|
-
|
35
|
-
expect(space.
|
34
|
+
'end'])
|
35
|
+
expect(space.messages).to be_empty
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'accepts square brackets called with method call syntax' do
|
39
39
|
inspect_source(space, ['subject.[](0)'])
|
40
|
-
expect(space.
|
40
|
+
expect(space.messages).to be_empty
|
41
41
|
end
|
42
42
|
|
43
43
|
it 'only reports a single space once' do
|
44
44
|
inspect_source(space, ['[ ]'])
|
45
|
-
expect(space.
|
45
|
+
expect(space.messages).to eq(
|
46
46
|
['Space inside square brackets detected.'])
|
47
47
|
end
|
48
48
|
end
|
@@ -5,93 +5,79 @@ require 'spec_helper'
|
|
5
5
|
module Rubocop
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
|
-
describe SpaceInsideHashLiteralBraces do
|
9
|
-
|
10
|
-
|
11
|
-
SpaceInsideHashLiteralBraces.config = {
|
12
|
-
'EnforcedStyleIsWithSpaces' => true
|
13
|
-
}
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'registers an offence for hashes with no spaces by default' do
|
17
|
-
inspect_source(sihlb,
|
18
|
-
['h = {a: 1, b: :two}',
|
19
|
-
'h = {a => 1 }'])
|
20
|
-
expect(sihlb.offences.map(&:message)).to eq(
|
21
|
-
['Space inside hash literal braces missing.'] * 3)
|
22
|
-
end
|
8
|
+
describe SpaceInsideHashLiteralBraces, :config do
|
9
|
+
subject(:cop) { SpaceInsideHashLiteralBraces.new(config) }
|
10
|
+
let(:cop_config) { { 'EnforcedStyleIsWithSpaces' => true } }
|
23
11
|
|
24
12
|
it 'registers an offence for hashes with no spaces if so configured' do
|
25
|
-
inspect_source(
|
13
|
+
inspect_source(cop,
|
26
14
|
['h = {a: 1, b: 2}',
|
27
15
|
'h = {a => 1 }'])
|
28
|
-
expect(
|
16
|
+
expect(cop.messages).to eq(
|
29
17
|
['Space inside hash literal braces missing.'] * 3)
|
18
|
+
expect(cop.highlights).to eq(['{', '}', '{'])
|
30
19
|
end
|
31
20
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
21
|
+
context 'when EnforcedStyleIsWithSpaces is disabled' do
|
22
|
+
let(:cop_config) { { 'EnforcedStyleIsWithSpaces' => false } }
|
23
|
+
|
24
|
+
it 'registers an offence for hashes with spaces' do
|
25
|
+
inspect_source(cop,
|
26
|
+
['h = { a: 1, b: 2 }'])
|
27
|
+
expect(cop.messages).to eq(
|
28
|
+
['Space inside hash literal braces detected.'] * 2)
|
29
|
+
expect(cop.highlights).to eq(['{', '}'])
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'accepts hashes with no spaces' do
|
33
|
+
inspect_source(cop,
|
34
|
+
['h = {a: 1, b: 2}',
|
35
|
+
'h = {a => 1}'])
|
36
|
+
expect(cop.offences).to be_empty
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'accepts multiline hashes for no space' do
|
40
|
+
inspect_source(cop,
|
41
|
+
['h = {',
|
42
|
+
' a: 1,',
|
43
|
+
' b: 2,',
|
44
|
+
'}'])
|
45
|
+
expect(cop.offences).to be_empty
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'accepts empty hashes without spaces' do
|
49
|
+
inspect_source(cop, ['h = {}'])
|
50
|
+
expect(cop.offences).to be_empty
|
51
|
+
end
|
39
52
|
end
|
40
53
|
|
41
54
|
it 'accepts hashes with spaces by default' do
|
42
|
-
inspect_source(
|
55
|
+
inspect_source(cop,
|
43
56
|
['h = { a: 1, b: 2 }',
|
44
57
|
'h = { a => 1 }'])
|
45
|
-
expect(
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'accepts hashes with no spaces if so configured' do
|
49
|
-
SpaceInsideHashLiteralBraces.config['EnforcedStyleIsWithSpaces'] =
|
50
|
-
false
|
51
|
-
inspect_source(sihlb,
|
52
|
-
['h = {a: 1, b: 2}',
|
53
|
-
'h = {a => 1}'])
|
54
|
-
expect(sihlb.offences.map(&:message)).to be_empty
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'accepts multiline hashes even if configured for no space' do
|
58
|
-
SpaceInsideHashLiteralBraces.config['EnforcedStyleIsWithSpaces'] =
|
59
|
-
false
|
60
|
-
inspect_source(sihlb,
|
61
|
-
['h = {',
|
62
|
-
' a: 1,',
|
63
|
-
' b: 2,',
|
64
|
-
'}'])
|
65
|
-
expect(sihlb.offences).to be_empty
|
58
|
+
expect(cop.offences).to be_empty
|
66
59
|
end
|
67
60
|
|
68
61
|
it 'accepts empty hashes without spaces by default' do
|
69
|
-
inspect_source(
|
70
|
-
expect(
|
71
|
-
end
|
72
|
-
|
73
|
-
it 'accepts empty hashes without spaces if configured false' do
|
74
|
-
SpaceInsideHashLiteralBraces.config['EnforcedStyleIsWithSpaces'] =
|
75
|
-
false
|
76
|
-
inspect_source(sihlb, ['h = {}'])
|
77
|
-
expect(sihlb.offences).to be_empty
|
62
|
+
inspect_source(cop, ['h = {}'])
|
63
|
+
expect(cop.offences).to be_empty
|
78
64
|
end
|
79
65
|
|
80
66
|
it 'accepts empty hashes without spaces even if configured true' do
|
81
|
-
inspect_source(
|
82
|
-
expect(
|
67
|
+
inspect_source(cop, ['h = {}'])
|
68
|
+
expect(cop.offences).to be_empty
|
83
69
|
end
|
84
70
|
|
85
71
|
it 'accepts hash literals with no braces' do
|
86
|
-
inspect_source(
|
87
|
-
expect(
|
72
|
+
inspect_source(cop, ['x(a: b.c)'])
|
73
|
+
expect(cop.offences).to be_empty
|
88
74
|
end
|
89
75
|
|
90
76
|
it 'can handle interpolation in a braceless hash literal' do
|
91
77
|
# A tricky special case where the closing brace of the
|
92
78
|
# interpolation risks getting confused for a hash literal brace.
|
93
|
-
inspect_source(
|
94
|
-
expect(
|
79
|
+
inspect_source(cop, ['f(get: "#{x}")'])
|
80
|
+
expect(cop.offences).to be_empty
|
95
81
|
end
|
96
82
|
end
|
97
83
|
end
|
@@ -6,12 +6,12 @@ module Rubocop
|
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
8
|
describe SpaceInsideParens do
|
9
|
-
|
9
|
+
subject(:space) { SpaceInsideParens.new }
|
10
10
|
|
11
11
|
it 'registers an offence for spaces inside parens' do
|
12
12
|
inspect_source(space, ['f( 3)',
|
13
13
|
'g(3 )'])
|
14
|
-
expect(space.
|
14
|
+
expect(space.messages).to eq(
|
15
15
|
['Space inside parentheses detected.',
|
16
16
|
'Space inside parentheses detected.'])
|
17
17
|
end
|
@@ -20,12 +20,12 @@ module Rubocop
|
|
20
20
|
inspect_source(space,
|
21
21
|
['list.inject(Tms.new) { |sum, (label, item)|',
|
22
22
|
'}'])
|
23
|
-
expect(space.
|
23
|
+
expect(space.messages).to be_empty
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'accepts parentheses with no spaces' do
|
27
27
|
inspect_source(space, ['split("\n")'])
|
28
|
-
expect(space.
|
28
|
+
expect(space.messages).to be_empty
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe SpecialGlobalVars do
|
9
|
+
subject(:cop) { described_class.new }
|
10
|
+
|
11
|
+
it 'registers an offence for $:' do
|
12
|
+
inspect_source(cop, ['puts $:'])
|
13
|
+
expect(cop.offences.size).to eq(1)
|
14
|
+
expect(cop.messages)
|
15
|
+
.to eq(['Prefer $LOAD_PATH over $:.'])
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'registers an offence for $"' do
|
19
|
+
inspect_source(cop, ['puts $"'])
|
20
|
+
expect(cop.offences.size).to eq(1)
|
21
|
+
expect(cop.messages)
|
22
|
+
.to eq(['Prefer $LOADED_FEATURES over $".'])
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'registers an offence for $0' do
|
26
|
+
inspect_source(cop, ['puts $0'])
|
27
|
+
expect(cop.offences.size).to eq(1)
|
28
|
+
expect(cop.messages)
|
29
|
+
.to eq(['Prefer $PROGRAM_NAME over $0.'])
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'registers an offence for $$' do
|
33
|
+
inspect_source(cop, ['puts $$'])
|
34
|
+
expect(cop.offences.size).to eq(1)
|
35
|
+
expect(cop.messages)
|
36
|
+
.to eq(['Prefer $PID or $PROCESS_ID from English library' +
|
37
|
+
' over $$.'])
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'does not register an offence for backrefs like $1' do
|
41
|
+
inspect_source(cop, ['puts $1'])
|
42
|
+
expect(cop.offences).to be_empty
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'auto-corrects $: to $LOAD_PATH' do
|
46
|
+
new_source = autocorrect_source(cop, '$:')
|
47
|
+
expect(new_source).to eq('$LOAD_PATH')
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -6,13 +6,13 @@ module Rubocop
|
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
8
|
describe StringLiterals do
|
9
|
-
|
9
|
+
subject(:cop) { StringLiterals.new }
|
10
10
|
|
11
11
|
it 'registers offence for double quotes when single quotes suffice' do
|
12
12
|
inspect_source(cop, ['s = "abc"',
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
'x = "a\\\\b"',
|
14
|
+
'y ="\\\\b"',
|
15
|
+
'z = "a\\\\"'])
|
16
16
|
expect(cop.offences.size).to eq(4)
|
17
17
|
end
|
18
18
|
|
@@ -23,7 +23,7 @@ module Rubocop
|
|
23
23
|
'c = "\'"',
|
24
24
|
'd = "#@test"',
|
25
25
|
'e = "#$test"',
|
26
|
-
|
26
|
+
'f = "\e"',
|
27
27
|
'g = "#@@test"']
|
28
28
|
inspect_source(cop, src)
|
29
29
|
expect(cop.offences).to be_empty
|
@@ -5,20 +5,12 @@ require 'spec_helper'
|
|
5
5
|
module Rubocop
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
|
-
describe SymbolName do
|
9
|
-
|
10
|
-
|
11
|
-
before do
|
12
|
-
SymbolName.config =
|
13
|
-
Config.default_configuration.for_cop('SymbolName')
|
14
|
-
end
|
8
|
+
describe SymbolName, :config do
|
9
|
+
subject(:symbol_name) { SymbolName.new(config) }
|
10
|
+
let(:cop_config) { { 'AllowCamelCase' => true } }
|
15
11
|
|
16
12
|
context 'when AllowCamelCase is true' do
|
17
|
-
|
18
|
-
SymbolName.config = {
|
19
|
-
'AllowCamelCase' => true
|
20
|
-
}
|
21
|
-
end
|
13
|
+
let(:cop_config) { { 'AllowCamelCase' => true } }
|
22
14
|
|
23
15
|
it 'does not register an offence for camel case in names' do
|
24
16
|
inspect_source(symbol_name,
|
@@ -28,15 +20,32 @@ module Rubocop
|
|
28
20
|
end
|
29
21
|
|
30
22
|
context 'when AllowCamelCase is false' do
|
31
|
-
|
32
|
-
SymbolName.config = {
|
33
|
-
'AllowCamelCase' => false
|
34
|
-
}
|
35
|
-
end
|
23
|
+
let(:cop_config) { { 'AllowCamelCase' => false } }
|
36
24
|
|
37
25
|
it 'registers an offence for camel case in names' do
|
38
26
|
inspect_source(symbol_name,
|
39
27
|
['test = :BadIdea'])
|
28
|
+
expect(symbol_name.messages).to eq(
|
29
|
+
['Use snake_case for symbols.'])
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'when AllowDots is true' do
|
34
|
+
let(:cop_config) { { 'AllowDots' => true } }
|
35
|
+
|
36
|
+
it 'does not register an offence for dots in names' do
|
37
|
+
inspect_source(symbol_name,
|
38
|
+
['test = :"bad.idea"'])
|
39
|
+
expect(symbol_name.offences).to be_empty
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'when AllowDots is false' do
|
44
|
+
let(:cop_config) { { 'AllowDots' => false } }
|
45
|
+
|
46
|
+
it 'registers an offence for dots in names' do
|
47
|
+
inspect_source(symbol_name,
|
48
|
+
['test = :"bad.idea"'])
|
40
49
|
expect(symbol_name.offences.map(&:message)).to eq(
|
41
50
|
['Use snake_case for symbols.'])
|
42
51
|
end
|
@@ -45,7 +54,7 @@ module Rubocop
|
|
45
54
|
it 'registers an offence for symbol used as hash label' do
|
46
55
|
inspect_source(symbol_name,
|
47
56
|
['{ KEY_ONE: 1, KEY_TWO: 2 }'])
|
48
|
-
expect(symbol_name.
|
57
|
+
expect(symbol_name.messages).to eq(
|
49
58
|
['Use snake_case for symbols.'] * 2)
|
50
59
|
end
|
51
60
|
|
@@ -6,7 +6,7 @@ module Rubocop
|
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
8
|
describe MultilineTernaryOperator do
|
9
|
-
|
9
|
+
subject(:op) { MultilineTernaryOperator.new }
|
10
10
|
|
11
11
|
it 'registers offence for a multiline ternary operator expression' do
|
12
12
|
inspect_source(op, ['a = cond ?',
|
@@ -21,7 +21,7 @@ module Rubocop
|
|
21
21
|
end
|
22
22
|
|
23
23
|
describe NestedTernaryOperator do
|
24
|
-
|
24
|
+
subject(:op) { NestedTernaryOperator.new }
|
25
25
|
|
26
26
|
it 'registers an offence for a nested ternary operator expression' do
|
27
27
|
inspect_source(op, ['a ? (b ? b1 : b2) : a2'])
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe TrailingBlankLines do
|
9
|
+
subject(:cop) { described_class.new }
|
10
|
+
|
11
|
+
it 'accepts final newline' do
|
12
|
+
inspect_source(cop, ['x = 0', ''])
|
13
|
+
expect(cop.offences).to be_empty
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'registers an offence for multiple trailing blank lines' do
|
17
|
+
inspect_source(cop, ['x = 0', '', '', '', ''])
|
18
|
+
expect(cop.offences.size).to eq(1)
|
19
|
+
expect(cop.messages).to eq(['3 trailing blank lines detected.'])
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -6,22 +6,22 @@ module Rubocop
|
|
6
6
|
module Cop
|
7
7
|
module Style
|
8
8
|
describe TrailingWhitespace do
|
9
|
-
|
9
|
+
subject(:cop) { described_class.new }
|
10
10
|
|
11
11
|
it 'registers an offence for a line ending with space' do
|
12
12
|
source = ['x = 0 ']
|
13
|
-
inspect_source(
|
14
|
-
expect(
|
13
|
+
inspect_source(cop, source)
|
14
|
+
expect(cop.offences.size).to eq(1)
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'registers an offence for a line ending with tab' do
|
18
|
-
inspect_source(
|
19
|
-
expect(
|
18
|
+
inspect_source(cop, ["x = 0\t"])
|
19
|
+
expect(cop.offences.size).to eq(1)
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'accepts a line without trailing whitespace' do
|
23
|
-
inspect_source(
|
24
|
-
expect(
|
23
|
+
inspect_source(cop, ["x = 0\n"])
|
24
|
+
expect(cop.offences).to be_empty
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|