rubocop 0.18.1 → 0.19.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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/CHANGELOG.md +65 -1
- data/Gemfile +0 -3
- data/LICENSE.txt +1 -1
- data/README.md +179 -77
- data/Rakefile +8 -0
- data/config/default.yml +151 -14
- data/config/enabled.yml +65 -8
- data/lib/rubocop.rb +19 -4
- data/lib/rubocop/cli.rb +2 -1
- data/lib/rubocop/comment_config.rb +97 -0
- data/lib/rubocop/config.rb +1 -1
- data/lib/rubocop/config_loader.rb +3 -2
- data/lib/rubocop/config_store.rb +6 -2
- data/lib/rubocop/cop/commissioner.rb +2 -2
- data/lib/rubocop/cop/cop.rb +22 -26
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +2 -2
- data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +1 -1
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +1 -1
- data/lib/rubocop/cop/lint/block_alignment.rb +6 -6
- data/lib/rubocop/cop/lint/condition_position.rb +1 -1
- data/lib/rubocop/cop/lint/debugger.rb +1 -1
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +60 -0
- data/lib/rubocop/cop/lint/else_layout.rb +1 -1
- data/lib/rubocop/cop/lint/empty_ensure.rb +1 -1
- data/lib/rubocop/cop/lint/end_alignment.rb +14 -12
- 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 -1
- data/lib/rubocop/cop/lint/handle_exceptions.rb +1 -1
- data/lib/rubocop/cop/lint/literal_in_condition.rb +13 -2
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +28 -0
- data/lib/rubocop/cop/lint/loop.rb +4 -4
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -1
- data/lib/rubocop/cop/lint/require_parentheses.rb +6 -6
- data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +2 -2
- data/lib/rubocop/cop/lint/string_conversion_in_interpolation.rb +30 -0
- data/lib/rubocop/cop/lint/syntax.rb +5 -5
- data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
- data/lib/rubocop/cop/lint/useless_assignment.rb +5 -5
- data/lib/rubocop/cop/lint/useless_comparison.rb +1 -1
- data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -1
- data/lib/rubocop/cop/lint/void.rb +5 -5
- data/lib/rubocop/cop/mixin/autocorrect_alignment.rb +8 -5
- data/lib/rubocop/cop/mixin/code_length.rb +2 -2
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +7 -7
- data/lib/rubocop/cop/mixin/configurable_max.rb +1 -1
- data/lib/rubocop/cop/mixin/configurable_naming.rb +1 -1
- data/lib/rubocop/cop/mixin/if_then_else.rb +1 -1
- data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -1
- data/lib/rubocop/cop/mixin/parser_diagnostic.rb +2 -2
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +3 -2
- data/lib/rubocop/cop/mixin/space_inside.rb +1 -1
- data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -0
- data/lib/rubocop/cop/mixin/string_help.rb +4 -4
- data/lib/rubocop/cop/{offence.rb → offense.rb} +7 -7
- data/lib/rubocop/cop/rails/action_filter.rb +73 -0
- data/lib/rubocop/cop/rails/default_scope.rb +1 -1
- data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +1 -1
- data/lib/rubocop/cop/rails/output.rb +1 -10
- data/lib/rubocop/cop/rails/read_attribute.rb +1 -1
- data/lib/rubocop/cop/rails/scope_args.rb +33 -0
- data/lib/rubocop/cop/rails/validation.rb +1 -1
- data/lib/rubocop/cop/style/access_modifier_indentation.rb +1 -1
- data/lib/rubocop/cop/style/accessor_method_name.rb +2 -2
- data/lib/rubocop/cop/style/alias.rb +2 -2
- data/lib/rubocop/cop/style/align_array.rb +1 -1
- data/lib/rubocop/cop/style/align_hash.rb +29 -2
- data/lib/rubocop/cop/style/align_parameters.rb +16 -2
- data/lib/rubocop/cop/style/and_or.rb +2 -2
- data/lib/rubocop/cop/style/ascii_comments.rb +1 -1
- data/lib/rubocop/cop/style/ascii_identifiers.rb +1 -1
- data/lib/rubocop/cop/style/attr.rb +1 -1
- 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 +1 -1
- data/lib/rubocop/cop/style/blocks.rb +2 -2
- data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +2 -2
- data/lib/rubocop/cop/style/case_equality.rb +1 -1
- data/lib/rubocop/cop/style/case_indentation.rb +2 -2
- data/lib/rubocop/cop/style/character_literal.rb +2 -2
- data/lib/rubocop/cop/style/class_and_module_camel_case.rb +1 -1
- data/lib/rubocop/cop/style/class_and_module_children.rb +69 -0
- data/lib/rubocop/cop/style/class_methods.rb +1 -1
- data/lib/rubocop/cop/style/class_vars.rb +3 -3
- data/lib/rubocop/cop/style/collection_methods.rb +4 -4
- data/lib/rubocop/cop/style/colon_method_call.rb +1 -1
- data/lib/rubocop/cop/style/comment_annotation.rb +1 -1
- data/lib/rubocop/cop/style/constant_name.rb +1 -1
- data/lib/rubocop/cop/style/cyclomatic_complexity.rb +2 -2
- data/lib/rubocop/cop/style/def_parentheses.rb +2 -2
- data/lib/rubocop/cop/style/documentation.rb +1 -1
- data/lib/rubocop/cop/style/dot_position.rb +10 -11
- data/lib/rubocop/cop/style/double_negation.rb +40 -0
- data/lib/rubocop/cop/style/empty_line_between_defs.rb +8 -1
- data/lib/rubocop/cop/style/empty_lines.rb +3 -2
- data/lib/rubocop/cop/style/empty_lines_around_access_modifier.rb +1 -1
- data/lib/rubocop/cop/style/empty_lines_around_body.rb +1 -1
- data/lib/rubocop/cop/style/empty_literal.rb +3 -3
- data/lib/rubocop/cop/style/encoding.rb +1 -1
- data/lib/rubocop/cop/style/end_block.rb +1 -1
- data/lib/rubocop/cop/style/end_of_line.rb +2 -2
- data/lib/rubocop/cop/style/even_odd.rb +2 -2
- data/lib/rubocop/cop/style/favor_join.rb +1 -1
- data/lib/rubocop/cop/style/file_name.rb +29 -0
- data/lib/rubocop/cop/style/final_newline.rb +1 -1
- data/lib/rubocop/cop/style/flip_flop.rb +2 -2
- data/lib/rubocop/cop/style/for.rb +2 -2
- data/lib/rubocop/cop/style/format_string.rb +66 -0
- data/lib/rubocop/cop/style/global_vars.rb +2 -2
- data/lib/rubocop/cop/style/hash_methods.rb +1 -1
- data/lib/rubocop/cop/style/hash_syntax.rb +3 -3
- data/lib/rubocop/cop/style/if_unless_modifier.rb +2 -1
- data/lib/rubocop/cop/style/indent_array.rb +41 -0
- data/lib/rubocop/cop/style/indent_hash.rb +119 -0
- data/lib/rubocop/cop/style/indentation_consistency.rb +3 -11
- data/lib/rubocop/cop/style/indentation_width.rb +44 -23
- data/lib/rubocop/cop/style/lambda.rb +2 -2
- data/lib/rubocop/cop/style/lambda_call.rb +3 -3
- data/lib/rubocop/cop/style/leading_comment_space.rb +1 -1
- data/lib/rubocop/cop/style/line_end_concatenation.rb +7 -3
- data/lib/rubocop/cop/style/line_length.rb +2 -2
- data/lib/rubocop/cop/style/method_call_parentheses.rb +2 -2
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -2
- data/lib/rubocop/cop/style/method_def_parentheses.rb +9 -7
- data/lib/rubocop/cop/style/module_function.rb +1 -1
- data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -1
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -1
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -2
- data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
- data/lib/rubocop/cop/style/not.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literals.rb +5 -5
- data/lib/rubocop/cop/style/op_method.rb +2 -2
- data/lib/rubocop/cop/style/parameter_lists.rb +1 -1
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +5 -4
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +143 -0
- data/lib/rubocop/cop/style/perl_backrefs.rb +1 -1
- data/lib/rubocop/cop/style/predicate_name.rb +1 -1
- data/lib/rubocop/cop/style/proc.rb +1 -1
- data/lib/rubocop/cop/style/raise_args.rb +2 -2
- data/lib/rubocop/cop/style/redundant_begin.rb +1 -1
- data/lib/rubocop/cop/style/redundant_exception.rb +1 -1
- data/lib/rubocop/cop/style/redundant_return.rb +1 -1
- data/lib/rubocop/cop/style/redundant_self.rb +2 -2
- data/lib/rubocop/cop/style/regexp_literal.rb +45 -19
- data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
- data/lib/rubocop/cop/style/self_assignment.rb +73 -0
- data/lib/rubocop/cop/style/semicolon.rb +12 -8
- data/lib/rubocop/cop/style/signal_exception.rb +2 -2
- data/lib/rubocop/cop/style/single_line_block_params.rb +1 -1
- data/lib/rubocop/cop/style/single_line_methods.rb +38 -1
- data/lib/rubocop/cop/style/space_after_colon.rb +3 -3
- data/lib/rubocop/cop/style/space_after_comma.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 +11 -3
- data/lib/rubocop/cop/style/space_after_not.rb +1 -1
- data/lib/rubocop/cop/style/space_after_semicolon.rb +1 -1
- data/lib/rubocop/cop/style/space_around_equals_in_parameter_default.rb +41 -6
- data/lib/rubocop/cop/style/space_around_operators.rb +4 -4
- data/lib/rubocop/cop/style/space_before_block_braces.rb +63 -0
- data/lib/rubocop/cop/style/space_before_modifier_keyword.rb +1 -1
- data/lib/rubocop/cop/style/{space_around_block_braces.rb → space_inside_block_braces.rb} +15 -24
- data/lib/rubocop/cop/style/space_inside_hash_literal_braces.rb +14 -7
- data/lib/rubocop/cop/style/special_global_vars.rb +1 -1
- data/lib/rubocop/cop/style/string_literals.rb +1 -1
- data/lib/rubocop/cop/style/symbol_array.rb +1 -1
- data/lib/rubocop/cop/style/tab.rb +1 -1
- data/lib/rubocop/cop/style/trailing_blank_lines.rb +2 -2
- data/lib/rubocop/cop/style/trailing_comma.rb +4 -4
- data/lib/rubocop/cop/style/trailing_whitespace.rb +1 -1
- data/lib/rubocop/cop/style/trivial_accessors.rb +2 -2
- data/lib/rubocop/cop/style/unless_else.rb +1 -1
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
- data/lib/rubocop/cop/style/when_then.rb +1 -1
- data/lib/rubocop/cop/style/while_until_do.rb +1 -1
- data/lib/rubocop/cop/style/while_until_modifier.rb +2 -1
- data/lib/rubocop/cop/style/word_array.rb +2 -2
- data/lib/rubocop/cop/team.rb +24 -7
- data/lib/rubocop/cop/util.rb +3 -3
- data/lib/rubocop/cop/variable_inspector.rb +25 -13
- data/lib/rubocop/cop/variable_inspector/assignment.rb +1 -1
- data/lib/rubocop/cop/variable_inspector/reference.rb +1 -1
- data/lib/rubocop/cop/variable_inspector/scope.rb +1 -1
- data/lib/rubocop/cop/variable_inspector/variable.rb +2 -2
- data/lib/rubocop/cop/variable_inspector/variable_table.rb +1 -1
- data/lib/rubocop/file_inspector.rb +12 -13
- data/lib/rubocop/formatter/base_formatter.rb +4 -4
- data/lib/rubocop/formatter/clang_style_formatter.rb +2 -2
- data/lib/rubocop/formatter/disabled_config_formatter.rb +12 -12
- data/lib/rubocop/formatter/emacs_style_formatter.rb +3 -2
- data/lib/rubocop/formatter/file_list_formatter.rb +4 -4
- data/lib/rubocop/formatter/formatter_set.rb +2 -1
- data/lib/rubocop/formatter/fuubar_style_formatter.rb +76 -0
- data/lib/rubocop/formatter/json_formatter.rb +17 -16
- data/lib/rubocop/formatter/offense_count_formatter.rb +54 -0
- data/lib/rubocop/formatter/progress_formatter.rb +16 -16
- data/lib/rubocop/formatter/simple_text_formatter.rb +25 -25
- data/lib/rubocop/options.rb +8 -7
- data/lib/rubocop/processed_source.rb +3 -2
- data/lib/rubocop/source_parser.rb +1 -59
- data/lib/rubocop/version.rb +3 -3
- data/relnotes/0.19.0.md +70 -0
- data/rubocop-todo.yml +6 -6
- data/rubocop.gemspec +2 -1
- data/spec/rubocop/cli_spec.rb +431 -268
- data/spec/rubocop/comment_config_spec.rb +103 -0
- data/spec/rubocop/config_loader_spec.rb +4 -4
- data/spec/rubocop/cop/commissioner_spec.rb +7 -7
- data/spec/rubocop/cop/cop_spec.rb +17 -17
- data/spec/rubocop/cop/lint/ambiguous_operator_spec.rb +16 -16
- data/spec/rubocop/cop/lint/ambiguous_regexp_literal_spec.rb +5 -5
- data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +19 -19
- data/spec/rubocop/cop/lint/block_alignment_spec.rb +52 -52
- data/spec/rubocop/cop/lint/condition_position_spec.rb +7 -7
- data/spec/rubocop/cop/lint/debugger_spec.rb +10 -10
- data/spec/rubocop/cop/lint/deprecated_class_methods_spec.rb +33 -0
- data/spec/rubocop/cop/lint/else_layout_spec.rb +7 -7
- data/spec/rubocop/cop/lint/empty_ensure_spec.rb +4 -4
- data/spec/rubocop/cop/lint/end_alignment_spec.rb +33 -34
- data/spec/rubocop/cop/lint/end_in_method_spec.rb +5 -5
- data/spec/rubocop/cop/lint/ensure_return_spec.rb +4 -4
- data/spec/rubocop/cop/lint/eval_spec.rb +8 -8
- data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +4 -4
- data/spec/rubocop/cop/lint/invalid_character_literal_spec.rb +3 -3
- data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +65 -10
- data/spec/rubocop/cop/lint/literal_in_interpolation_spec.rb +21 -0
- data/spec/rubocop/cop/lint/loop_spec.rb +6 -6
- data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +14 -14
- data/spec/rubocop/cop/lint/require_parentheses_spec.rb +15 -15
- data/spec/rubocop/cop/lint/rescue_exception_spec.rb +21 -21
- data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +16 -16
- data/spec/rubocop/cop/lint/string_conversion_in_interpolation_spec.rb +27 -0
- data/spec/rubocop/cop/lint/syntax_spec.rb +11 -11
- data/spec/rubocop/cop/lint/unreachable_code_spec.rb +8 -8
- data/spec/rubocop/cop/lint/useless_assignment_spec.rb +207 -169
- data/spec/rubocop/cop/lint/useless_comparison_spec.rb +5 -5
- data/spec/rubocop/cop/lint/useless_else_without_rescue_spec.rb +4 -4
- data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +17 -17
- data/spec/rubocop/cop/lint/void_spec.rb +8 -8
- data/spec/rubocop/cop/{offence_spec.rb → offense_spec.rb} +17 -17
- data/spec/rubocop/cop/rails/action_filter_spec.rb +69 -0
- data/spec/rubocop/cop/rails/default_scope_spec.rb +9 -9
- data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +2 -2
- data/spec/rubocop/cop/rails/output_spec.rb +8 -18
- data/spec/rubocop/cop/rails/read_attribute_spec.rb +2 -2
- data/spec/rubocop/cop/rails/scope_args_spec.rb +25 -0
- data/spec/rubocop/cop/rails/validation_spec.rb +3 -3
- data/spec/rubocop/cop/style/access_modifier_indentation_spec.rb +38 -38
- data/spec/rubocop/cop/style/accessor_method_name_spec.rb +14 -14
- data/spec/rubocop/cop/style/alias_spec.rb +11 -11
- data/spec/rubocop/cop/style/align_array_spec.rb +23 -7
- data/spec/rubocop/cop/style/align_hash_spec.rb +111 -30
- data/spec/rubocop/cop/style/align_parameters_spec.rb +260 -187
- data/spec/rubocop/cop/style/and_or_spec.rb +6 -6
- data/spec/rubocop/cop/style/ascii_comments_spec.rb +3 -3
- data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +5 -5
- data/spec/rubocop/cop/style/attr_spec.rb +2 -2
- data/spec/rubocop/cop/style/begin_block_spec.rb +2 -2
- data/spec/rubocop/cop/style/block_comments_spec.rb +3 -3
- data/spec/rubocop/cop/style/block_nesting_spec.rb +26 -26
- data/spec/rubocop/cop/style/blocks_spec.rb +8 -8
- data/spec/rubocop/cop/style/braces_around_hash_parameters_spec.rb +8 -8
- data/spec/rubocop/cop/style/case_equality_spec.rb +2 -2
- data/spec/rubocop/cop/style/case_indentation_spec.rb +21 -21
- data/spec/rubocop/cop/style/character_literal_spec.rb +6 -6
- data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +4 -4
- data/spec/rubocop/cop/style/class_and_module_children_spec.rb +129 -0
- data/spec/rubocop/cop/style/class_length_spec.rb +9 -9
- data/spec/rubocop/cop/style/class_methods_spec.rb +8 -8
- data/spec/rubocop/cop/style/class_vars_spec.rb +4 -4
- data/spec/rubocop/cop/style/collection_methods_spec.rb +6 -6
- data/spec/rubocop/cop/style/colon_method_call_spec.rb +16 -16
- data/spec/rubocop/cop/style/comment_annotation_spec.rb +16 -16
- data/spec/rubocop/cop/style/constant_name_spec.rb +12 -12
- data/spec/rubocop/cop/style/cyclomatic_complexity_spec.rb +16 -16
- data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +6 -6
- data/spec/rubocop/cop/style/documentation_spec.rb +14 -14
- data/spec/rubocop/cop/style/dot_position_spec.rb +23 -26
- data/spec/rubocop/cop/style/double_negation_spec.rb +22 -0
- data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +22 -14
- data/spec/rubocop/cop/style/empty_lines_around_access_modifier_spec.rb +4 -4
- data/spec/rubocop/cop/style/empty_lines_around_body_spec.rb +20 -20
- data/spec/rubocop/cop/style/empty_lines_spec.rb +17 -6
- data/spec/rubocop/cop/style/empty_literal_spec.rb +20 -20
- data/spec/rubocop/cop/style/encoding_spec.rb +5 -5
- data/spec/rubocop/cop/style/end_block_spec.rb +2 -2
- data/spec/rubocop/cop/style/end_of_line_spec.rb +4 -4
- data/spec/rubocop/cop/style/even_odd_spec.rb +18 -18
- data/spec/rubocop/cop/style/favor_join_spec.rb +7 -7
- data/spec/rubocop/cop/style/favor_unless_over_negated_if_spec.rb +7 -7
- data/spec/rubocop/cop/style/favor_until_over_negated_while_spec.rb +3 -3
- data/spec/rubocop/cop/style/file_name_spec.rb +71 -0
- data/spec/rubocop/cop/style/final_newline_spec.rb +4 -4
- data/spec/rubocop/cop/style/flip_flop_spec.rb +4 -4
- data/spec/rubocop/cop/style/for_spec.rb +13 -13
- data/spec/rubocop/cop/style/format_string_spec.rb +136 -0
- data/spec/rubocop/cop/style/global_vars_spec.rb +7 -7
- data/spec/rubocop/cop/style/hash_methods_spec.rb +6 -6
- data/spec/rubocop/cop/style/hash_syntax_spec.rb +11 -11
- data/spec/rubocop/cop/style/if_unless_modifier_spec.rb +29 -11
- data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +1 -1
- data/spec/rubocop/cop/style/indent_array_spec.rb +136 -0
- data/spec/rubocop/cop/style/indent_hash_spec.rb +238 -0
- data/spec/rubocop/cop/style/indentation_consistency_spec.rb +69 -49
- data/spec/rubocop/cop/style/indentation_width_spec.rb +264 -128
- data/spec/rubocop/cop/style/lambda_call_spec.rb +14 -14
- data/spec/rubocop/cop/style/lambda_spec.rb +7 -7
- data/spec/rubocop/cop/style/leading_comment_space_spec.rb +15 -15
- data/spec/rubocop/cop/style/line_end_concatenation_spec.rb +11 -4
- data/spec/rubocop/cop/style/line_length_spec.rb +5 -5
- data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +5 -5
- data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +9 -9
- data/spec/rubocop/cop/style/method_def_parentheses_spec.rb +19 -19
- data/spec/rubocop/cop/style/method_length_spec.rb +17 -17
- data/spec/rubocop/cop/style/method_name_spec.rb +21 -21
- data/spec/rubocop/cop/style/module_function_spec.rb +3 -3
- data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +13 -13
- data/spec/rubocop/cop/style/multiline_if_then_spec.rb +10 -10
- data/spec/rubocop/cop/style/multiline_ternary_operator_spec.rb +3 -3
- data/spec/rubocop/cop/style/nested_ternary_operator_spec.rb +3 -3
- data/spec/rubocop/cop/style/nil_comparison_spec.rb +7 -7
- data/spec/rubocop/cop/style/not_spec.rb +6 -11
- data/spec/rubocop/cop/style/numeric_literals_spec.rb +8 -8
- data/spec/rubocop/cop/style/one_line_conditional_spec.rb +1 -1
- data/spec/rubocop/cop/style/op_method_spec.rb +13 -13
- data/spec/rubocop/cop/style/parameter_lists_spec.rb +6 -6
- data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +11 -10
- data/spec/rubocop/cop/style/percent_literal_delimiters_spec.rb +250 -0
- data/spec/rubocop/cop/style/perl_backrefs_spec.rb +2 -2
- data/spec/rubocop/cop/style/predicate_name_spec.rb +3 -3
- data/spec/rubocop/cop/style/proc_spec.rb +4 -4
- data/spec/rubocop/cop/style/raise_args_spec.rb +20 -20
- data/spec/rubocop/cop/style/redundant_begin_spec.rb +6 -6
- data/spec/rubocop/cop/style/redundant_exception_spec.rb +6 -6
- data/spec/rubocop/cop/style/redundant_return_spec.rb +22 -22
- data/spec/rubocop/cop/style/redundant_self_spec.rb +14 -14
- data/spec/rubocop/cop/style/regexp_literal_spec.rb +88 -67
- data/spec/rubocop/cop/style/rescue_modifier_spec.rb +17 -17
- data/spec/rubocop/cop/style/self_assignment_spec.rb +43 -0
- data/spec/rubocop/cop/style/semicolon_spec.rb +31 -17
- data/spec/rubocop/cop/style/signal_exception_spec.rb +29 -29
- data/spec/rubocop/cop/style/single_line_block_params_spec.rb +6 -6
- data/spec/rubocop/cop/style/single_line_methods_spec.rb +44 -6
- data/spec/rubocop/cop/style/space_after_colon_spec.rb +1 -1
- data/spec/rubocop/cop/style/space_after_comma_spec.rb +3 -3
- data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +12 -12
- data/spec/rubocop/cop/style/space_after_method_name_spec.rb +8 -8
- data/spec/rubocop/cop/style/space_after_not_spec.rb +3 -3
- data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +1 -1
- data/spec/rubocop/cop/style/space_around_equals_in_parameter_default_spec.rb +63 -21
- data/spec/rubocop/cop/style/space_around_operators_spec.rb +24 -24
- data/spec/rubocop/cop/style/space_before_block_braces_spec.rb +72 -0
- data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +4 -4
- data/spec/rubocop/cop/style/{space_around_block_braces_spec.rb → space_inside_block_braces_spec.rb} +39 -41
- data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +1 -1
- data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +15 -15
- data/spec/rubocop/cop/style/space_inside_parens_spec.rb +1 -1
- data/spec/rubocop/cop/style/special_global_vars_spec.rb +10 -10
- data/spec/rubocop/cop/style/string_literals_spec.rb +31 -31
- data/spec/rubocop/cop/style/symbol_array_spec.rb +9 -9
- data/spec/rubocop/cop/style/tab_spec.rb +3 -3
- data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +3 -3
- data/spec/rubocop/cop/style/trailing_comma_spec.rb +32 -32
- data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +5 -5
- data/spec/rubocop/cop/style/trivial_accessors_spec.rb +39 -39
- data/spec/rubocop/cop/style/unless_else_spec.rb +1 -1
- data/spec/rubocop/cop/style/variable_interpolation_spec.rb +12 -12
- data/spec/rubocop/cop/style/variable_name_spec.rb +21 -21
- data/spec/rubocop/cop/style/when_then_spec.rb +1 -1
- data/spec/rubocop/cop/style/while_until_do_spec.rb +8 -8
- data/spec/rubocop/cop/style/while_until_modifier_spec.rb +25 -7
- data/spec/rubocop/cop/style/word_array_spec.rb +23 -23
- data/spec/rubocop/cop/team_spec.rb +14 -14
- data/spec/rubocop/file_inspector_spec.rb +14 -12
- data/spec/rubocop/formatter/base_formatter_spec.rb +19 -19
- data/spec/rubocop/formatter/clang_style_formatter_spec.rb +14 -14
- data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +7 -7
- data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +7 -7
- data/spec/rubocop/formatter/file_list_formatter_spec.rb +4 -4
- data/spec/rubocop/formatter/fuubar_style_formatter_spec.rb +129 -0
- data/spec/rubocop/formatter/json_formatter_spec.rb +23 -19
- data/spec/rubocop/formatter/offense_count_formatter_spec.rb +77 -0
- data/spec/rubocop/formatter/progress_formatter_spec.rb +27 -27
- data/spec/rubocop/formatter/simple_text_formatter_spec.rb +16 -16
- data/spec/rubocop/options_spec.rb +7 -8
- data/spec/rubocop/source_parser_spec.rb +0 -54
- data/spec/spec_helper.rb +11 -7
- data/spec/support/file_helper.rb +1 -1
- data/spec/support/mri_syntax_checker.rb +4 -4
- data/spec/support/shared_examples.rb +6 -6
- data/spec/support/statement_modifier_helper.rb +3 -3
- metadata +76 -16
- data/lib/rubocop/cop/style/favor_sprintf.rb +0 -26
- data/lib/rubocop/formatter/offence_count_formatter.rb +0 -49
- data/spec/rubocop/cop/style/favor_sprintf_spec.rb +0 -47
- data/spec/rubocop/formatter/offence_count_formatter_spec.rb +0 -52
@@ -0,0 +1,103 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Rubocop::CommentConfig do
|
6
|
+
subject(:comment_config) { Rubocop::CommentConfig.new(parse_source(source)) }
|
7
|
+
|
8
|
+
describe '#cop_enabled_at_line?' do
|
9
|
+
let(:source) do
|
10
|
+
[
|
11
|
+
'# encoding: utf-8',
|
12
|
+
'',
|
13
|
+
'# rubocop:disable MethodLength',
|
14
|
+
'def some_method',
|
15
|
+
" puts 'foo'",
|
16
|
+
'end',
|
17
|
+
'# rubocop:enable MethodLength',
|
18
|
+
'',
|
19
|
+
'# rubocop:disable all',
|
20
|
+
'some_method',
|
21
|
+
'# rubocop:enable all',
|
22
|
+
'',
|
23
|
+
"code = 'This is evil.'",
|
24
|
+
'eval(code) # rubocop:disable Eval',
|
25
|
+
"puts 'This is not evil.'",
|
26
|
+
'',
|
27
|
+
'def some_method',
|
28
|
+
" puts 'Disabling indented single line' # rubocop:disable LineLength",
|
29
|
+
'end',
|
30
|
+
'',
|
31
|
+
'string = <<END',
|
32
|
+
'This is a string not a real comment # rubocop:disable Loop',
|
33
|
+
'END',
|
34
|
+
'',
|
35
|
+
'foo # rubocop:disable MethodCallParentheses',
|
36
|
+
'',
|
37
|
+
'# rubocop:enable Void',
|
38
|
+
'',
|
39
|
+
'# rubocop:disable For',
|
40
|
+
'foo'
|
41
|
+
]
|
42
|
+
end
|
43
|
+
|
44
|
+
def disabled_lines_of_cop(cop)
|
45
|
+
(1..source.size).each_with_object([]) do |line_number, disabled_lines|
|
46
|
+
enabled = comment_config.cop_enabled_at_line?(cop, line_number)
|
47
|
+
disabled_lines << line_number unless enabled
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'supports disabling multiple lines with a pair of directive' do
|
52
|
+
method_length_disabled_lines = disabled_lines_of_cop('MethodLength')
|
53
|
+
expected_part = (3..6).to_a
|
54
|
+
expect(method_length_disabled_lines & expected_part)
|
55
|
+
.to eq(expected_part)
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'supports disabling all lines after a directive' do
|
59
|
+
for_disabled_lines = disabled_lines_of_cop('For')
|
60
|
+
expected_part = (29..source.size).to_a
|
61
|
+
expect(for_disabled_lines & expected_part)
|
62
|
+
.to eq(expected_part)
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'just ignores unpaired enabling directives' do
|
66
|
+
void_disabled_lines = disabled_lines_of_cop('Void')
|
67
|
+
expected_part = (27..source.size).to_a
|
68
|
+
expect(void_disabled_lines & expected_part).to be_empty
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'supports disabling single line with a direcive at end of line' do
|
72
|
+
eval_disabled_lines = disabled_lines_of_cop('Eval')
|
73
|
+
expect(eval_disabled_lines).to include(14)
|
74
|
+
expect(eval_disabled_lines).not_to include(15)
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'handles indented single line' do
|
78
|
+
line_length_disabled_lines = disabled_lines_of_cop('LineLength')
|
79
|
+
expect(line_length_disabled_lines).to include(18)
|
80
|
+
expect(line_length_disabled_lines).not_to include(19)
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'does not confuse a comment directive embedded in a string literal ' \
|
84
|
+
'with a real comment' do
|
85
|
+
loop_disabled_lines = disabled_lines_of_cop('Loop')
|
86
|
+
expect(loop_disabled_lines).not_to include(22)
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'supports disabling all cops with keyword all' do
|
90
|
+
expected_part = (9..10).to_a
|
91
|
+
|
92
|
+
Rubocop::Cop::Cop.all.each do |cop|
|
93
|
+
disabled_lines = disabled_lines_of_cop(cop)
|
94
|
+
expect(disabled_lines & expected_part).to eq(expected_part)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'does not confuse a cop name including "all" with all cops' do
|
99
|
+
alias_disabled_lines = disabled_lines_of_cop('Alias')
|
100
|
+
expect(alias_disabled_lines).not_to include(25)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -188,10 +188,10 @@ describe Rubocop::ConfigLoader do
|
|
188
188
|
it 'returns the ancestor configuration plus local overrides' do
|
189
189
|
config = default_config
|
190
190
|
.merge('LineLength' => {
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
191
|
+
'Description' =>
|
192
|
+
default_config['LineLength']['Description'],
|
193
|
+
'Enabled' => true,
|
194
|
+
'Max' => 77
|
195
195
|
},
|
196
196
|
'MethodLength' => {
|
197
197
|
'Description' =>
|
@@ -5,10 +5,10 @@ require 'spec_helper'
|
|
5
5
|
|
6
6
|
describe Rubocop::Cop::Commissioner do
|
7
7
|
describe '#investigate' do
|
8
|
-
let(:cop) { double(Rubocop::Cop,
|
8
|
+
let(:cop) { double(Rubocop::Cop, offenses: []).as_null_object }
|
9
9
|
|
10
|
-
it 'returns all
|
11
|
-
allow(cop).to receive(:
|
10
|
+
it 'returns all offenses found by the cops' do
|
11
|
+
allow(cop).to receive(:offenses).and_return([1])
|
12
12
|
|
13
13
|
commissioner = described_class.new([cop])
|
14
14
|
source = []
|
@@ -18,11 +18,11 @@ describe Rubocop::Cop::Commissioner do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
context 'when a cop has no interest in the file' do
|
21
|
-
it 'returns all
|
21
|
+
it 'returns all offenses except the ones of the cop' do
|
22
22
|
cops = []
|
23
|
-
cops << double('cop A',
|
24
|
-
cops << double('cop B',
|
25
|
-
cops << double('cop C',
|
23
|
+
cops << double('cop A', offenses: %w(foo), relevant_file?: true)
|
24
|
+
cops << double('cop B', offenses: %w(bar), relevant_file?: false)
|
25
|
+
cops << double('cop C', offenses: %w(baz), relevant_file?: true)
|
26
26
|
cops.each(&:as_null_object)
|
27
27
|
|
28
28
|
commissioner = described_class.new(cops)
|
@@ -10,45 +10,45 @@ describe Rubocop::Cop::Cop do
|
|
10
10
|
Parser::Source::Range.new(source_buffer, 0, 1)
|
11
11
|
end
|
12
12
|
|
13
|
-
it 'initially has 0
|
14
|
-
expect(cop.
|
13
|
+
it 'initially has 0 offenses' do
|
14
|
+
expect(cop.offenses).to be_empty
|
15
15
|
end
|
16
16
|
|
17
|
-
it 'keeps track of
|
18
|
-
cop.
|
17
|
+
it 'keeps track of offenses' do
|
18
|
+
cop.add_offense(nil, location, 'message')
|
19
19
|
|
20
|
-
expect(cop.
|
20
|
+
expect(cop.offenses.size).to eq(1)
|
21
21
|
end
|
22
22
|
|
23
|
-
it 'will report registered
|
24
|
-
cop.
|
23
|
+
it 'will report registered offenses' do
|
24
|
+
cop.add_offense(nil, location, 'message')
|
25
25
|
|
26
|
-
expect(cop.
|
26
|
+
expect(cop.offenses).not_to be_empty
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'will set default severity' do
|
30
|
-
cop.
|
30
|
+
cop.add_offense(nil, location, 'message')
|
31
31
|
|
32
|
-
expect(cop.
|
32
|
+
expect(cop.offenses.first.severity).to eq(:convention)
|
33
33
|
end
|
34
34
|
|
35
35
|
it 'will set custom severity if present' do
|
36
36
|
cop.config[cop.name] = { 'Severity' => 'warning' }
|
37
|
-
cop.
|
37
|
+
cop.add_offense(nil, location, 'message')
|
38
38
|
|
39
|
-
expect(cop.
|
39
|
+
expect(cop.offenses.first.severity).to eq(:warning)
|
40
40
|
end
|
41
41
|
|
42
42
|
it 'will warn if custom severity is invalid' do
|
43
43
|
cop.config[cop.name] = { 'Severity' => 'superbad' }
|
44
44
|
expect(cop).to receive(:warn)
|
45
|
-
cop.
|
45
|
+
cop.add_offense(nil, location, 'message')
|
46
46
|
end
|
47
47
|
|
48
|
-
it 'registers
|
48
|
+
it 'registers offense with its name' do
|
49
49
|
cop = Rubocop::Cop::Style::For.new
|
50
|
-
cop.
|
51
|
-
expect(cop.
|
50
|
+
cop.add_offense(nil, location, 'message')
|
51
|
+
expect(cop.offenses.first.cop_name).to eq('For')
|
52
52
|
end
|
53
53
|
|
54
54
|
context 'with no submodule' do
|
@@ -101,7 +101,7 @@ describe Rubocop::Cop::Cop do
|
|
101
101
|
it 'has each cop in exactly one type' do
|
102
102
|
sum = 0
|
103
103
|
types.each do |c|
|
104
|
-
sum
|
104
|
+
sum += described_class.all.with_type(c).length
|
105
105
|
end
|
106
106
|
expect(sum).to be described_class.all.length
|
107
107
|
end
|
@@ -19,13 +19,13 @@ describe Rubocop::Cop::Lint::AmbiguousOperator do
|
|
19
19
|
]
|
20
20
|
end
|
21
21
|
|
22
|
-
it 'registers an
|
23
|
-
expect(cop.
|
24
|
-
expect(cop.
|
22
|
+
it 'registers an offense' do
|
23
|
+
expect(cop.offenses.size).to eq(1)
|
24
|
+
expect(cop.offenses.first.message).to eq(
|
25
25
|
'Ambiguous splat operator. ' \
|
26
|
-
"Parenthesize the method arguments if it's surely a splat "
|
27
|
-
'operator, '
|
28
|
-
'or add a whitespace to the right of the * if it should be a '
|
26
|
+
"Parenthesize the method arguments if it's surely a splat " \
|
27
|
+
'operator, ' \
|
28
|
+
'or add a whitespace to the right of the * if it should be a ' \
|
29
29
|
'multiplication.'
|
30
30
|
)
|
31
31
|
expect(cop.highlights).to eq(['*'])
|
@@ -41,7 +41,7 @@ describe Rubocop::Cop::Lint::AmbiguousOperator do
|
|
41
41
|
end
|
42
42
|
|
43
43
|
it 'accepts' do
|
44
|
-
expect(cop.
|
44
|
+
expect(cop.offenses).to be_empty
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
@@ -55,7 +55,7 @@ describe Rubocop::Cop::Lint::AmbiguousOperator do
|
|
55
55
|
end
|
56
56
|
|
57
57
|
it 'accepts' do
|
58
|
-
expect(cop.
|
58
|
+
expect(cop.offenses).to be_empty
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
@@ -70,13 +70,13 @@ describe Rubocop::Cop::Lint::AmbiguousOperator do
|
|
70
70
|
]
|
71
71
|
end
|
72
72
|
|
73
|
-
it 'registers an
|
74
|
-
expect(cop.
|
75
|
-
expect(cop.
|
73
|
+
it 'registers an offense' do
|
74
|
+
expect(cop.offenses.size).to eq(1)
|
75
|
+
expect(cop.offenses.first.message).to eq(
|
76
76
|
'Ambiguous block operator. ' \
|
77
|
-
"Parenthesize the method arguments if it's surely a block "
|
78
|
-
'operator, '
|
79
|
-
'or add a whitespace to the right of the & if it should be a '
|
77
|
+
"Parenthesize the method arguments if it's surely a block " \
|
78
|
+
'operator, ' \
|
79
|
+
'or add a whitespace to the right of the & if it should be a ' \
|
80
80
|
'binary AND.'
|
81
81
|
)
|
82
82
|
expect(cop.highlights).to eq(['&'])
|
@@ -92,7 +92,7 @@ describe Rubocop::Cop::Lint::AmbiguousOperator do
|
|
92
92
|
end
|
93
93
|
|
94
94
|
it 'accepts' do
|
95
|
-
expect(cop.
|
95
|
+
expect(cop.offenses).to be_empty
|
96
96
|
end
|
97
97
|
end
|
98
98
|
end
|
@@ -106,7 +106,7 @@ describe Rubocop::Cop::Lint::AmbiguousOperator do
|
|
106
106
|
end
|
107
107
|
|
108
108
|
it 'accepts' do
|
109
|
-
expect(cop.
|
109
|
+
expect(cop.offenses).to be_empty
|
110
110
|
end
|
111
111
|
end
|
112
112
|
end
|
@@ -13,11 +13,11 @@ describe Rubocop::Cop::Lint::AmbiguousRegexpLiteral do
|
|
13
13
|
context 'without parentheses' do
|
14
14
|
let(:source) { 'p /pattern/' }
|
15
15
|
|
16
|
-
it 'registers an
|
17
|
-
expect(cop.
|
18
|
-
expect(cop.
|
16
|
+
it 'registers an offense' do
|
17
|
+
expect(cop.offenses.size).to eq(1)
|
18
|
+
expect(cop.offenses.first.message).to eq(
|
19
19
|
'Ambiguous regexp literal. Parenthesize the method arguments ' \
|
20
|
-
"if it's surely a regexp literal, or add a whitespace to the "
|
20
|
+
"if it's surely a regexp literal, or add a whitespace to the " \
|
21
21
|
'right of the / if it should be a division.'
|
22
22
|
)
|
23
23
|
expect(cop.highlights).to eq(['/'])
|
@@ -28,7 +28,7 @@ describe Rubocop::Cop::Lint::AmbiguousRegexpLiteral do
|
|
28
28
|
let(:source) { 'p(/pattern/)' }
|
29
29
|
|
30
30
|
it 'accepts' do
|
31
|
-
expect(cop.
|
31
|
+
expect(cop.offenses).to be_empty
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
@@ -6,60 +6,60 @@ describe Rubocop::Cop::Lint::AssignmentInCondition, :config do
|
|
6
6
|
subject(:cop) { described_class.new(config) }
|
7
7
|
let(:cop_config) { { 'AllowSafeAssignment' => true } }
|
8
8
|
|
9
|
-
it 'registers an
|
9
|
+
it 'registers an offense for lvar assignment in condition' do
|
10
10
|
inspect_source(cop,
|
11
11
|
['if test = 10',
|
12
12
|
'end'
|
13
13
|
])
|
14
|
-
expect(cop.
|
14
|
+
expect(cop.offenses.size).to eq(1)
|
15
15
|
end
|
16
16
|
|
17
|
-
it 'registers an
|
17
|
+
it 'registers an offense for lvar assignment in while condition' do
|
18
18
|
inspect_source(cop,
|
19
19
|
['while test = 10',
|
20
20
|
'end'
|
21
21
|
])
|
22
|
-
expect(cop.
|
22
|
+
expect(cop.offenses.size).to eq(1)
|
23
23
|
end
|
24
24
|
|
25
|
-
it 'registers an
|
25
|
+
it 'registers an offense for lvar assignment in until condition' do
|
26
26
|
inspect_source(cop,
|
27
27
|
['until test = 10',
|
28
28
|
'end'
|
29
29
|
])
|
30
|
-
expect(cop.
|
30
|
+
expect(cop.offenses.size).to eq(1)
|
31
31
|
end
|
32
32
|
|
33
|
-
it 'registers an
|
33
|
+
it 'registers an offense for ivar assignment in condition' do
|
34
34
|
inspect_source(cop,
|
35
35
|
['if @test = 10',
|
36
36
|
'end'
|
37
37
|
])
|
38
|
-
expect(cop.
|
38
|
+
expect(cop.offenses.size).to eq(1)
|
39
39
|
end
|
40
40
|
|
41
|
-
it 'registers an
|
41
|
+
it 'registers an offense for clvar assignment in condition' do
|
42
42
|
inspect_source(cop,
|
43
43
|
['if @@test = 10',
|
44
44
|
'end'
|
45
45
|
])
|
46
|
-
expect(cop.
|
46
|
+
expect(cop.offenses.size).to eq(1)
|
47
47
|
end
|
48
48
|
|
49
|
-
it 'registers an
|
49
|
+
it 'registers an offense for gvar assignment in condition' do
|
50
50
|
inspect_source(cop,
|
51
51
|
['if $test = 10',
|
52
52
|
'end'
|
53
53
|
])
|
54
|
-
expect(cop.
|
54
|
+
expect(cop.offenses.size).to eq(1)
|
55
55
|
end
|
56
56
|
|
57
|
-
it 'registers an
|
57
|
+
it 'registers an offense for constant assignment in condition' do
|
58
58
|
inspect_source(cop,
|
59
59
|
['if TEST = 10',
|
60
60
|
'end'
|
61
61
|
])
|
62
|
-
expect(cop.
|
62
|
+
expect(cop.offenses.size).to eq(1)
|
63
63
|
end
|
64
64
|
|
65
65
|
it 'accepts == in condition' do
|
@@ -67,19 +67,19 @@ describe Rubocop::Cop::Lint::AssignmentInCondition, :config do
|
|
67
67
|
['if test == 10',
|
68
68
|
'end'
|
69
69
|
])
|
70
|
-
expect(cop.
|
70
|
+
expect(cop.offenses).to be_empty
|
71
71
|
end
|
72
72
|
|
73
73
|
it 'accepts = in a block that is called in a condition' do
|
74
74
|
inspect_source(cop,
|
75
75
|
['return 1 if any_errors? { o = inspect(file) }'])
|
76
|
-
expect(cop.
|
76
|
+
expect(cop.offenses).to be_empty
|
77
77
|
end
|
78
78
|
|
79
79
|
it 'accepts ||= in condition' do
|
80
80
|
inspect_source(cop,
|
81
81
|
['raise StandardError unless foo ||= bar'])
|
82
|
-
expect(cop.
|
82
|
+
expect(cop.offenses).to be_empty
|
83
83
|
end
|
84
84
|
|
85
85
|
context 'safe assignment is allowed' do
|
@@ -88,7 +88,7 @@ describe Rubocop::Cop::Lint::AssignmentInCondition, :config do
|
|
88
88
|
['if (test = 10)',
|
89
89
|
'end'
|
90
90
|
])
|
91
|
-
expect(cop.
|
91
|
+
expect(cop.offenses).to be_empty
|
92
92
|
end
|
93
93
|
|
94
94
|
end
|
@@ -101,7 +101,7 @@ describe Rubocop::Cop::Lint::AssignmentInCondition, :config do
|
|
101
101
|
['if (test = 10)',
|
102
102
|
'end'
|
103
103
|
])
|
104
|
-
expect(cop.
|
104
|
+
expect(cop.offenses.size).to eq(1)
|
105
105
|
end
|
106
106
|
end
|
107
107
|
end
|
@@ -6,7 +6,7 @@ require 'spec_helper'
|
|
6
6
|
describe Rubocop::Cop::Lint::BlockAlignment do
|
7
7
|
subject(:cop) { described_class.new }
|
8
8
|
|
9
|
-
it 'registers an
|
9
|
+
it 'registers an offense for mismatched block end' do
|
10
10
|
inspect_source(cop,
|
11
11
|
['test do |ala|',
|
12
12
|
' end'
|
@@ -24,7 +24,7 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
24
24
|
'a || b do',
|
25
25
|
'end'
|
26
26
|
])
|
27
|
-
expect(cop.
|
27
|
+
expect(cop.offenses).to be_empty
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -33,11 +33,11 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
33
33
|
['variable = test do |ala|',
|
34
34
|
'end'
|
35
35
|
])
|
36
|
-
expect(cop.
|
36
|
+
expect(cop.offenses).to be_empty
|
37
37
|
end
|
38
38
|
|
39
39
|
context 'when there is an assignment chain' do
|
40
|
-
it 'registers an
|
40
|
+
it 'registers an offense for an end aligned with the 2nd variable' do
|
41
41
|
inspect_source(cop,
|
42
42
|
['a = b = c = test do |ala|',
|
43
43
|
' end'
|
@@ -51,7 +51,7 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
51
51
|
['a = b = c = test do |ala|',
|
52
52
|
'end'
|
53
53
|
])
|
54
|
-
expect(cop.
|
54
|
+
expect(cop.offenses).to be_empty
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
@@ -62,11 +62,11 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
62
62
|
' a + e.length + newline_length',
|
63
63
|
'end + 1'
|
64
64
|
])
|
65
|
-
expect(cop.
|
65
|
+
expect(cop.offenses).to be_empty
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
-
it 'registers an
|
69
|
+
it 'registers an offense for mismatched block end with a variable' do
|
70
70
|
inspect_source(cop,
|
71
71
|
['variable = test do |ala|',
|
72
72
|
' end'
|
@@ -83,10 +83,10 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
83
83
|
' v.foo',
|
84
84
|
' end'
|
85
85
|
])
|
86
|
-
expect(cop.
|
86
|
+
expect(cop.offenses).to be_empty
|
87
87
|
end
|
88
88
|
|
89
|
-
it 'registers an
|
89
|
+
it 'registers an offenses for mismatched end alignment' do
|
90
90
|
inspect_source(cop,
|
91
91
|
['variable =',
|
92
92
|
' a_long_method_that_dont_fit_on_the_line do |v|',
|
@@ -114,10 +114,10 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
114
114
|
' end',
|
115
115
|
'end']
|
116
116
|
inspect_source(cop, src)
|
117
|
-
expect(cop.
|
117
|
+
expect(cop.offenses).to be_empty
|
118
118
|
end
|
119
119
|
|
120
|
-
it 'registers
|
120
|
+
it 'registers offenses for misaligned ends' do
|
121
121
|
src = ['def foo(bar)',
|
122
122
|
' bar.get_stuffs',
|
123
123
|
' .reject do |stuff|',
|
@@ -151,27 +151,27 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
151
151
|
' do_something',
|
152
152
|
'end']
|
153
153
|
inspect_source(cop, src)
|
154
|
-
expect(cop.
|
154
|
+
expect(cop.offenses).to be_empty
|
155
155
|
end
|
156
156
|
|
157
157
|
# Example from issue 447 of bbatsov/rubocop on github:
|
158
158
|
it 'accepts two kinds of end alignment' do
|
159
159
|
src = [
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
160
|
+
# Aligned with start of line where do is:
|
161
|
+
'params = default_options.merge(options)',
|
162
|
+
' .delete_if { |k, v| v.nil? }',
|
163
|
+
' .each_with_object({}) do |(k, v), new_hash|',
|
164
|
+
' new_hash[k.to_s] = v.to_s',
|
165
|
+
' end',
|
166
|
+
# Aligned with start of the whole expression:
|
167
|
+
'params = default_options.merge(options)',
|
168
|
+
' .delete_if { |k, v| v.nil? }',
|
169
|
+
' .each_with_object({}) do |(k, v), new_hash|',
|
170
|
+
' new_hash[k.to_s] = v.to_s',
|
171
|
+
'end'
|
172
|
+
]
|
173
173
|
inspect_source(cop, src)
|
174
|
-
expect(cop.
|
174
|
+
expect(cop.offenses).to be_empty
|
175
175
|
end
|
176
176
|
end
|
177
177
|
|
@@ -182,10 +182,10 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
182
182
|
' i - 5',
|
183
183
|
'end']
|
184
184
|
inspect_source(cop, src)
|
185
|
-
expect(cop.
|
185
|
+
expect(cop.offenses).to be_empty
|
186
186
|
end
|
187
187
|
|
188
|
-
it 'registers an
|
188
|
+
it 'registers an offense for end aligned with the block' do
|
189
189
|
src = ['e,',
|
190
190
|
'f = [5, 6].map do |i|',
|
191
191
|
' i - 5',
|
@@ -201,10 +201,10 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
201
201
|
['@variable = test do |ala|',
|
202
202
|
'end'
|
203
203
|
])
|
204
|
-
expect(cop.
|
204
|
+
expect(cop.offenses).to be_empty
|
205
205
|
end
|
206
206
|
|
207
|
-
it 'registers an
|
207
|
+
it 'registers an offense for mismatched block end with an instance variable' do
|
208
208
|
inspect_source(cop,
|
209
209
|
['@variable = test do |ala|',
|
210
210
|
' end'
|
@@ -218,10 +218,10 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
218
218
|
['@@variable = test do |ala|',
|
219
219
|
'end'
|
220
220
|
])
|
221
|
-
expect(cop.
|
221
|
+
expect(cop.offenses).to be_empty
|
222
222
|
end
|
223
223
|
|
224
|
-
it 'registers an
|
224
|
+
it 'registers an offense for mismatched block end with a class variable' do
|
225
225
|
inspect_source(cop,
|
226
226
|
['@@variable = test do |ala|',
|
227
227
|
' end'
|
@@ -235,10 +235,10 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
235
235
|
['$variable = test do |ala|',
|
236
236
|
'end'
|
237
237
|
])
|
238
|
-
expect(cop.
|
238
|
+
expect(cop.offenses).to be_empty
|
239
239
|
end
|
240
240
|
|
241
|
-
it 'registers an
|
241
|
+
it 'registers an offense for mismatched block end with a global variable' do
|
242
242
|
inspect_source(cop,
|
243
243
|
['$variable = test do |ala|',
|
244
244
|
' end'
|
@@ -252,10 +252,10 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
252
252
|
['CONSTANT = test do |ala|',
|
253
253
|
'end'
|
254
254
|
])
|
255
|
-
expect(cop.
|
255
|
+
expect(cop.offenses).to be_empty
|
256
256
|
end
|
257
257
|
|
258
|
-
it 'registers an
|
258
|
+
it 'registers an offense for mismatched block end with a constant' do
|
259
259
|
inspect_source(cop,
|
260
260
|
['Module::CONSTANT = test do |ala|',
|
261
261
|
' end'
|
@@ -270,10 +270,10 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
270
270
|
' token << 1',
|
271
271
|
'end'
|
272
272
|
])
|
273
|
-
expect(cop.
|
273
|
+
expect(cop.offenses).to be_empty
|
274
274
|
end
|
275
275
|
|
276
|
-
it 'registers an
|
276
|
+
it 'registers an offense for mismatched block end with a method call' do
|
277
277
|
inspect_source(cop,
|
278
278
|
['parser.childs << lambda do |token|',
|
279
279
|
' token << 1',
|
@@ -289,10 +289,10 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
289
289
|
' v = 1',
|
290
290
|
'end'
|
291
291
|
])
|
292
|
-
expect(cop.
|
292
|
+
expect(cop.offenses).to be_empty
|
293
293
|
end
|
294
294
|
|
295
|
-
it 'registers an
|
295
|
+
it 'registers an offense for mismatched end with a method call with arguments' do
|
296
296
|
inspect_source(cop,
|
297
297
|
['@h[:f] = f.each_pair.map do |f, v|',
|
298
298
|
' v = 1',
|
@@ -306,7 +306,7 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
306
306
|
inspect_source(cop,
|
307
307
|
['expect(arr.all? { |o| o.valid? })'
|
308
308
|
])
|
309
|
-
expect(cop.
|
309
|
+
expect(cop.offenses).to be_empty
|
310
310
|
end
|
311
311
|
|
312
312
|
it 'accepts end aligned with the block when the block is a method argument' do
|
@@ -315,10 +315,10 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
315
315
|
' o.valid?',
|
316
316
|
' end)'
|
317
317
|
])
|
318
|
-
expect(cop.
|
318
|
+
expect(cop.offenses).to be_empty
|
319
319
|
end
|
320
320
|
|
321
|
-
it 'registers an
|
321
|
+
it 'registers an offense for mismatched end not aligned with the block that is an argument' do
|
322
322
|
inspect_source(cop,
|
323
323
|
['expect(arr.all? do |o|',
|
324
324
|
' o.valid?',
|
@@ -335,10 +335,10 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
335
335
|
' file << something',
|
336
336
|
'end'
|
337
337
|
])
|
338
|
-
expect(cop.
|
338
|
+
expect(cop.offenses).to be_empty
|
339
339
|
end
|
340
340
|
|
341
|
-
it 'registers an
|
341
|
+
it 'registers an offense for mismatched block end with an op-asgn (+=, -=)' do
|
342
342
|
inspect_source(cop,
|
343
343
|
['rb += files.select do |file|',
|
344
344
|
' file << something',
|
@@ -353,10 +353,10 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
353
353
|
['variable &&= test do |ala|',
|
354
354
|
'end'
|
355
355
|
])
|
356
|
-
expect(cop.
|
356
|
+
expect(cop.offenses).to be_empty
|
357
357
|
end
|
358
358
|
|
359
|
-
it 'registers an
|
359
|
+
it 'registers an offense for mismatched block end with an and-asgn (&&=)' do
|
360
360
|
inspect_source(cop,
|
361
361
|
['variable &&= test do |ala|',
|
362
362
|
' end'
|
@@ -370,10 +370,10 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
370
370
|
['variable ||= test do |ala|',
|
371
371
|
'end'
|
372
372
|
])
|
373
|
-
expect(cop.
|
373
|
+
expect(cop.offenses).to be_empty
|
374
374
|
end
|
375
375
|
|
376
|
-
it 'registers an
|
376
|
+
it 'registers an offense for mismatched block end with an or-asgn (||=)' do
|
377
377
|
inspect_source(cop,
|
378
378
|
['variable ||= test do |ala|',
|
379
379
|
' end'
|
@@ -388,7 +388,7 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
388
388
|
' [1, 2]',
|
389
389
|
'end'
|
390
390
|
])
|
391
|
-
expect(cop.
|
391
|
+
expect(cop.offenses).to be_empty
|
392
392
|
end
|
393
393
|
|
394
394
|
it 'accepts end aligned with a call chain left hand side' do
|
@@ -396,10 +396,10 @@ describe Rubocop::Cop::Lint::BlockAlignment do
|
|
396
396
|
['parser.diagnostics.consumer = lambda do |diagnostic|',
|
397
397
|
' diagnostics << diagnostic',
|
398
398
|
'end'])
|
399
|
-
expect(cop.
|
399
|
+
expect(cop.offenses).to be_empty
|
400
400
|
end
|
401
401
|
|
402
|
-
it 'registers an
|
402
|
+
it 'registers an offense for mismatched block end with a mass assignment' do
|
403
403
|
inspect_source(cop,
|
404
404
|
['var1, var2 = lambda do |test|',
|
405
405
|
' [1, 2]',
|