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
@@ -5,10 +5,10 @@ require 'spec_helper'
|
|
5
5
|
describe Rubocop::Cop::Style::Alias do
|
6
6
|
subject(:cop) { described_class.new }
|
7
7
|
|
8
|
-
it 'registers an
|
8
|
+
it 'registers an offense for alias with symbol args' do
|
9
9
|
inspect_source(cop,
|
10
10
|
['alias :ala :bala'])
|
11
|
-
expect(cop.
|
11
|
+
expect(cop.offenses.size).to eq(1)
|
12
12
|
expect(cop.messages)
|
13
13
|
.to eq(['Use alias_method instead of alias.'])
|
14
14
|
end
|
@@ -18,10 +18,10 @@ describe Rubocop::Cop::Style::Alias do
|
|
18
18
|
expect(corrected).to eq 'alias_method :ala, :bala'
|
19
19
|
end
|
20
20
|
|
21
|
-
it 'registers an
|
21
|
+
it 'registers an offense for alias with bareword args' do
|
22
22
|
inspect_source(cop,
|
23
23
|
['alias ala bala'])
|
24
|
-
expect(cop.
|
24
|
+
expect(cop.offenses.size).to eq(1)
|
25
25
|
expect(cop.messages)
|
26
26
|
.to eq(['Use alias_method instead of alias.'])
|
27
27
|
end
|
@@ -31,22 +31,22 @@ describe Rubocop::Cop::Style::Alias do
|
|
31
31
|
expect(corrected).to eq 'alias_method :ala, :bala'
|
32
32
|
end
|
33
33
|
|
34
|
-
it 'does not register an
|
34
|
+
it 'does not register an offense for alias_method' do
|
35
35
|
inspect_source(cop,
|
36
36
|
['alias_method :ala, :bala'])
|
37
|
-
expect(cop.
|
37
|
+
expect(cop.offenses).to be_empty
|
38
38
|
end
|
39
39
|
|
40
|
-
it 'does not register an
|
40
|
+
it 'does not register an offense for :alias' do
|
41
41
|
inspect_source(cop,
|
42
42
|
['[:alias, :ala, :bala]'])
|
43
|
-
expect(cop.
|
43
|
+
expect(cop.offenses).to be_empty
|
44
44
|
end
|
45
45
|
|
46
|
-
it 'does not register an
|
46
|
+
it 'does not register an offense for alias with gvars' do
|
47
47
|
inspect_source(cop,
|
48
48
|
['alias $ala $bala'])
|
49
|
-
expect(cop.
|
49
|
+
expect(cop.offenses).to be_empty
|
50
50
|
end
|
51
51
|
|
52
52
|
it 'accepts alias in an instance_exec block' do
|
@@ -54,6 +54,6 @@ describe Rubocop::Cop::Style::Alias do
|
|
54
54
|
['cli.instance_exec do',
|
55
55
|
' alias :old_trap_interrupt :trap_interrupt',
|
56
56
|
'end'])
|
57
|
-
expect(cop.
|
57
|
+
expect(cop.offenses).to be_empty
|
58
58
|
end
|
59
59
|
end
|
@@ -5,7 +5,7 @@ require 'spec_helper'
|
|
5
5
|
describe Rubocop::Cop::Style::AlignArray do
|
6
6
|
subject(:cop) { described_class.new }
|
7
7
|
|
8
|
-
it 'registers an
|
8
|
+
it 'registers an offense for misaligned array elements' do
|
9
9
|
inspect_source(cop, ['array = [',
|
10
10
|
' a,',
|
11
11
|
' b,',
|
@@ -13,7 +13,7 @@ describe Rubocop::Cop::Style::AlignArray do
|
|
13
13
|
' d',
|
14
14
|
']'])
|
15
15
|
expect(cop.messages).to eq(['Align the elements of an array ' \
|
16
|
-
'literal if they span more than '
|
16
|
+
'literal if they span more than ' \
|
17
17
|
'one line.'] * 2)
|
18
18
|
expect(cop.highlights).to eq(%w(b d))
|
19
19
|
end
|
@@ -25,18 +25,18 @@ describe Rubocop::Cop::Style::AlignArray do
|
|
25
25
|
' c,',
|
26
26
|
' d',
|
27
27
|
']'])
|
28
|
-
expect(cop.
|
28
|
+
expect(cop.offenses).to be_empty
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'accepts single line array' do
|
32
32
|
inspect_source(cop, 'array = [ a, b ]')
|
33
|
-
expect(cop.
|
33
|
+
expect(cop.offenses).to be_empty
|
34
34
|
end
|
35
35
|
|
36
36
|
it 'accepts several elements per line' do
|
37
37
|
inspect_source(cop, ['array = [ a, b,',
|
38
38
|
' c, d ]'])
|
39
|
-
expect(cop.
|
39
|
+
expect(cop.offenses).to be_empty
|
40
40
|
end
|
41
41
|
|
42
42
|
it 'auto-corrects alignment' do
|
@@ -54,14 +54,30 @@ describe Rubocop::Cop::Style::AlignArray do
|
|
54
54
|
']'].join("\n"))
|
55
55
|
end
|
56
56
|
|
57
|
-
it 'auto-corrects array within array' do
|
57
|
+
it 'auto-corrects array within array with too much indentation' do
|
58
58
|
original_source = ['[:l1,',
|
59
59
|
' [:l2,',
|
60
|
+
'',
|
60
61
|
' [:l3,',
|
61
|
-
'
|
62
|
+
' [:l4]]]]']
|
62
63
|
new_source = autocorrect_source(cop, original_source)
|
63
64
|
expect(new_source).to eq(['[:l1,',
|
64
65
|
' [:l2,',
|
66
|
+
'',
|
67
|
+
' [:l3,',
|
68
|
+
' [:l4]]]]'].join("\n"))
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'auto-corrects array within array with too little indentation' do
|
72
|
+
original_source = ['[:l1,',
|
73
|
+
'[:l2,',
|
74
|
+
'',
|
75
|
+
' [:l3,',
|
76
|
+
' [:l4]]]]']
|
77
|
+
new_source = autocorrect_source(cop, original_source)
|
78
|
+
expect(new_source).to eq(['[:l1,',
|
79
|
+
' [:l2,',
|
80
|
+
'',
|
65
81
|
' [:l3,',
|
66
82
|
' [:l4]]]]'].join("\n"))
|
67
83
|
end
|
@@ -3,20 +3,101 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Rubocop::Cop::Style::AlignHash, :config do
|
6
|
+
subject(:cop) { described_class.new(config) }
|
7
|
+
|
6
8
|
shared_examples 'not on separate lines' do
|
7
9
|
it 'accepts single line hash' do
|
8
10
|
inspect_source(cop, 'func(a: 0, bb: 1)')
|
9
|
-
expect(cop.
|
11
|
+
expect(cop.offenses).to be_empty
|
10
12
|
end
|
11
13
|
|
12
14
|
it 'accepts several pairs per line' do
|
13
15
|
inspect_source(cop, ['func(a: 1, bb: 2,',
|
14
16
|
' ccc: 3, dddd: 4)'])
|
15
|
-
expect(cop.
|
17
|
+
expect(cop.offenses).to be_empty
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'always inspect last argument hash' do
|
22
|
+
let(:cop_config) do
|
23
|
+
{
|
24
|
+
'EnforcedLastArgumentHashStyle' => 'always_inspect'
|
25
|
+
}
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'registers offence for misaligned keys in implicit hash' do
|
29
|
+
inspect_source(cop, ['func(a: 0,',
|
30
|
+
' b: 1)'])
|
31
|
+
expect(cop.offenses.size).to eq(1)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'registers offence for misaligned keys in explicit hash' do
|
35
|
+
inspect_source(cop, ['func({a: 0,',
|
36
|
+
' b: 1})'])
|
37
|
+
expect(cop.offenses.size).to eq(1)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'always ignore last argument hash' do
|
42
|
+
let(:cop_config) do
|
43
|
+
{
|
44
|
+
'EnforcedLastArgumentHashStyle' => 'always_ignore'
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'accepts misaligned keys in implicit hash' do
|
49
|
+
inspect_source(cop, ['func(a: 0,',
|
50
|
+
' b: 1)'])
|
51
|
+
expect(cop.offenses).to be_empty
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'accepts misaligned keys in explicit hash' do
|
55
|
+
inspect_source(cop, ['func({a: 0,',
|
56
|
+
' b: 1})'])
|
57
|
+
expect(cop.offenses).to be_empty
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'ignore implicit last argument hash' do
|
62
|
+
let(:cop_config) do
|
63
|
+
{
|
64
|
+
'EnforcedLastArgumentHashStyle' => 'ignore_implicit'
|
65
|
+
}
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'accepts misaligned keys in implicit hash' do
|
69
|
+
inspect_source(cop, ['func(a: 0,',
|
70
|
+
' b: 1)'])
|
71
|
+
expect(cop.offenses).to be_empty
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'registers offence for misaligned keys in explicit hash' do
|
75
|
+
inspect_source(cop, ['func({a: 0,',
|
76
|
+
' b: 1})'])
|
77
|
+
expect(cop.offenses.size).to eq(1)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'ignore explicit last argument hash' do
|
82
|
+
let(:cop_config) do
|
83
|
+
{
|
84
|
+
'EnforcedLastArgumentHashStyle' => 'ignore_explicit'
|
85
|
+
}
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'registers offence for misaligned keys in implicit hash' do
|
89
|
+
inspect_source(cop, ['func(a: 0,',
|
90
|
+
' b: 1)'])
|
91
|
+
expect(cop.offenses.size).to eq(1)
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'accepts misaligned keys in explicit hash' do
|
95
|
+
inspect_source(cop, ['func({a: 0,',
|
96
|
+
' b: 1})'])
|
97
|
+
expect(cop.offenses).to be_empty
|
16
98
|
end
|
17
99
|
end
|
18
100
|
|
19
|
-
subject(:cop) { described_class.new(config) }
|
20
101
|
let(:cop_config) do
|
21
102
|
{
|
22
103
|
'EnforcedHashRocketStyle' => 'key',
|
@@ -25,7 +106,7 @@ describe Rubocop::Cop::Style::AlignHash, :config do
|
|
25
106
|
end
|
26
107
|
|
27
108
|
context 'with default configuration' do
|
28
|
-
it 'registers an
|
109
|
+
it 'registers an offense for misaligned hash keys' do
|
29
110
|
inspect_source(cop, ['hash1 = {',
|
30
111
|
' a: 0,',
|
31
112
|
' bb: 1',
|
@@ -35,7 +116,7 @@ describe Rubocop::Cop::Style::AlignHash, :config do
|
|
35
116
|
" 'dddd' => 2",
|
36
117
|
'}'])
|
37
118
|
expect(cop.messages).to eq(['Align the elements of a hash ' \
|
38
|
-
'literal if they span more than '
|
119
|
+
'literal if they span more than ' \
|
39
120
|
'one line.'] * 2)
|
40
121
|
expect(cop.highlights).to eq(['bb: 1',
|
41
122
|
"'dddd' => 2"])
|
@@ -50,40 +131,40 @@ describe Rubocop::Cop::Style::AlignHash, :config do
|
|
50
131
|
" 'ccc' => 2,",
|
51
132
|
" 'dddd' => 2",
|
52
133
|
'}'])
|
53
|
-
expect(cop.
|
134
|
+
expect(cop.offenses).to be_empty
|
54
135
|
end
|
55
136
|
|
56
|
-
it 'registers an
|
137
|
+
it 'registers an offense for separator alignment' do
|
57
138
|
inspect_source(cop, ['hash = {',
|
58
139
|
" 'a' => 0,",
|
59
140
|
" 'bbb' => 1",
|
60
141
|
'}'])
|
61
|
-
expect(cop.
|
142
|
+
expect(cop.offenses.size).to eq(1)
|
62
143
|
expect(cop.highlights).to eq(["'bbb' => 1"])
|
63
144
|
end
|
64
145
|
|
65
|
-
context 'with
|
66
|
-
it 'registers an
|
146
|
+
context 'with implicit hash as last argument' do
|
147
|
+
it 'registers an offense for misaligned hash keys' do
|
67
148
|
inspect_source(cop, ['func(a: 0,',
|
68
149
|
' b: 1)'])
|
69
|
-
expect(cop.
|
150
|
+
expect(cop.offenses.size).to eq(1)
|
70
151
|
end
|
71
152
|
|
72
|
-
it 'registers an
|
153
|
+
it 'registers an offense for right alignment of keys' do
|
73
154
|
inspect_source(cop, ['func(a: 0,',
|
74
155
|
' bbb: 1)'])
|
75
|
-
expect(cop.
|
156
|
+
expect(cop.offenses.size).to eq(1)
|
76
157
|
end
|
77
158
|
|
78
159
|
it 'accepts aligned hash keys' do
|
79
160
|
inspect_source(cop, ['func(a: 0,',
|
80
161
|
' b: 1)'])
|
81
|
-
expect(cop.
|
162
|
+
expect(cop.offenses).to be_empty
|
82
163
|
end
|
83
164
|
|
84
165
|
it 'accepts an empty hash' do
|
85
166
|
inspect_source(cop, 'h = {}')
|
86
|
-
expect(cop.
|
167
|
+
expect(cop.offenses).to be_empty
|
87
168
|
end
|
88
169
|
end
|
89
170
|
|
@@ -128,12 +209,12 @@ describe Rubocop::Cop::Style::AlignHash, :config do
|
|
128
209
|
' bbb: 1',
|
129
210
|
'}'
|
130
211
|
])
|
131
|
-
expect(cop.
|
212
|
+
expect(cop.offenses).to be_empty
|
132
213
|
end
|
133
214
|
|
134
215
|
it 'accepts an empty hash' do
|
135
216
|
inspect_source(cop, 'h = {}')
|
136
|
-
expect(cop.
|
217
|
+
expect(cop.offenses).to be_empty
|
137
218
|
end
|
138
219
|
|
139
220
|
it 'accepts a multiline array of single line hashes' do
|
@@ -145,10 +226,10 @@ describe Rubocop::Cop::Style::AlignHash, :config do
|
|
145
226
|
' { after: %w( n o ) }',
|
146
227
|
' ]',
|
147
228
|
' end'])
|
148
|
-
expect(cop.
|
229
|
+
expect(cop.offenses).to be_empty
|
149
230
|
end
|
150
231
|
|
151
|
-
it 'registers an
|
232
|
+
it 'registers an offense for misaligned hash values' do
|
152
233
|
inspect_source(cop, ['hash1 = {',
|
153
234
|
" 'a' => 0,",
|
154
235
|
" 'bbb' => 1",
|
@@ -162,12 +243,12 @@ describe Rubocop::Cop::Style::AlignHash, :config do
|
|
162
243
|
'bbb:1'])
|
163
244
|
end
|
164
245
|
|
165
|
-
it 'registers an
|
246
|
+
it 'registers an offense for misaligned hash rockets' do
|
166
247
|
inspect_source(cop, ['hash = {',
|
167
248
|
" 'a' => 0,",
|
168
249
|
" 'bbb' => 1",
|
169
250
|
'}'])
|
170
|
-
expect(cop.
|
251
|
+
expect(cop.offenses.size).to eq(1)
|
171
252
|
end
|
172
253
|
|
173
254
|
it 'auto-corrects alignment' do
|
@@ -196,7 +277,7 @@ describe Rubocop::Cop::Style::AlignHash, :config do
|
|
196
277
|
|
197
278
|
it 'accepts a single method argument entry with colon' do
|
198
279
|
inspect_source(cop, ['merge(parent: nil)'])
|
199
|
-
expect(cop.
|
280
|
+
expect(cop.offenses).to be_empty
|
200
281
|
end
|
201
282
|
end
|
202
283
|
|
@@ -233,28 +314,28 @@ describe Rubocop::Cop::Style::AlignHash, :config do
|
|
233
314
|
" 'a' => 0,",
|
234
315
|
" 'bbb' => 1",
|
235
316
|
'}'])
|
236
|
-
expect(cop.
|
317
|
+
expect(cop.offenses).to be_empty
|
237
318
|
end
|
238
319
|
|
239
320
|
it 'accepts an empty hash' do
|
240
321
|
inspect_source(cop, 'h = {}')
|
241
|
-
expect(cop.
|
322
|
+
expect(cop.offenses).to be_empty
|
242
323
|
end
|
243
324
|
|
244
|
-
it 'registers an
|
325
|
+
it 'registers an offense for misaligned hash values' do
|
245
326
|
inspect_source(cop, ['hash = {',
|
246
327
|
" 'a' => 0,",
|
247
328
|
" 'bbb' => 1",
|
248
329
|
'}'])
|
249
|
-
expect(cop.
|
330
|
+
expect(cop.offenses.size).to eq(1)
|
250
331
|
end
|
251
332
|
|
252
|
-
it 'registers an
|
333
|
+
it 'registers an offense for misaligned hash rockets' do
|
253
334
|
inspect_source(cop, ['hash = {',
|
254
335
|
" 'a' => 0,",
|
255
336
|
" 'bbb' => 1",
|
256
337
|
'}'])
|
257
|
-
expect(cop.
|
338
|
+
expect(cop.offenses.size).to eq(1)
|
258
339
|
end
|
259
340
|
|
260
341
|
include_examples 'not on separate lines'
|
@@ -283,7 +364,7 @@ describe Rubocop::Cop::Style::AlignHash, :config do
|
|
283
364
|
}
|
284
365
|
end
|
285
366
|
|
286
|
-
it 'registers
|
367
|
+
it 'registers offenses for misaligned entries' do
|
287
368
|
inspect_source(cop, ['hash1 = {',
|
288
369
|
' a: 0,',
|
289
370
|
' bbb: 1',
|
@@ -304,7 +385,7 @@ describe Rubocop::Cop::Style::AlignHash, :config do
|
|
304
385
|
" 'a' => 0,",
|
305
386
|
" 'bbb' => 1",
|
306
387
|
'}'])
|
307
|
-
expect(cop.
|
388
|
+
expect(cop.offenses).to be_empty
|
308
389
|
end
|
309
390
|
end
|
310
391
|
end
|
@@ -2,221 +2,294 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
describe Rubocop::Cop::Style::AlignParameters do
|
6
|
-
subject(:cop) { described_class.new }
|
7
|
-
|
8
|
-
it 'registers an offence for parameters with single indent' do
|
9
|
-
inspect_source(cop, ['function(a,',
|
10
|
-
' if b then c else d end)'])
|
11
|
-
expect(cop.offences.size).to eq(1)
|
12
|
-
expect(cop.highlights).to eq(['if b then c else d end'])
|
13
|
-
end
|
5
|
+
describe Rubocop::Cop::Style::AlignParameters, :config do
|
6
|
+
subject(:cop) { described_class.new(config) }
|
14
7
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
8
|
+
context 'aligned with first parameter' do
|
9
|
+
let(:cop_config) do
|
10
|
+
{
|
11
|
+
'EnforcedStyle' => 'with_first_parameter'
|
12
|
+
}
|
13
|
+
end
|
20
14
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
15
|
+
it 'registers an offense for parameters with single indent' do
|
16
|
+
inspect_source(cop, ['function(a,',
|
17
|
+
' if b then c else d end)'])
|
18
|
+
expect(cop.offenses.size).to eq(1)
|
19
|
+
expect(cop.highlights).to eq(['if b then c else d end'])
|
20
|
+
end
|
26
21
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
expect(cop.offences).to be_empty
|
33
|
-
end
|
22
|
+
it 'registers an offense for parameters with double indent' do
|
23
|
+
inspect_source(cop, ['function(a,',
|
24
|
+
' if b then c else d end)'])
|
25
|
+
expect(cop.offenses.size).to eq(1)
|
26
|
+
end
|
34
27
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
28
|
+
it 'accepts multiline []= method call' do
|
29
|
+
inspect_source(cop, ['Test.config["something"] =',
|
30
|
+
' true'])
|
31
|
+
expect(cop.offenses).to be_empty
|
32
|
+
end
|
39
33
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
34
|
+
it 'accepts correctly aligned parameters' do
|
35
|
+
inspect_source(cop, ['function(a,',
|
36
|
+
' 0, 1,',
|
37
|
+
' (x + y),',
|
38
|
+
' if b then c else d end)'])
|
39
|
+
expect(cop.offenses).to be_empty
|
40
|
+
end
|
45
41
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
'func2(a,',
|
51
|
-
' *b,',
|
52
|
-
' c)',
|
53
|
-
'func3(*a)'
|
54
|
-
])
|
55
|
-
expect(cop.offences.map(&:to_s))
|
56
|
-
.to eq(['C: 5: 6: Align the parameters of a method call if ' \
|
57
|
-
'they span more than one line.'])
|
58
|
-
expect(cop.highlights).to eq(['*b'])
|
59
|
-
end
|
42
|
+
it 'accepts calls that only span one line' do
|
43
|
+
inspect_source(cop, ['find(path, s, @special[sexp[0]])'])
|
44
|
+
expect(cop.offenses).to be_empty
|
45
|
+
end
|
60
46
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
'they span more than one line.'])
|
67
|
-
expect(cop.highlights).to eq(['b'])
|
68
|
-
end
|
47
|
+
it "doesn't get confused by a symbol argument" do
|
48
|
+
inspect_source(cop, ['add_offense(index,',
|
49
|
+
' MSG % kind)'])
|
50
|
+
expect(cop.offenses).to be_empty
|
51
|
+
end
|
69
52
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
53
|
+
it "doesn't get confused by splat operator" do
|
54
|
+
inspect_source(cop, ['func1(*a,',
|
55
|
+
' *b,',
|
56
|
+
' c)',
|
57
|
+
'func2(a,',
|
58
|
+
' *b,',
|
59
|
+
' c)',
|
60
|
+
'func3(*a)'
|
61
|
+
])
|
62
|
+
expect(cop.offenses.map(&:to_s))
|
63
|
+
.to eq(['C: 5: 6: Align the parameters of a method call if ' \
|
64
|
+
'they span more than one line.'])
|
65
|
+
expect(cop.highlights).to eq(['*b'])
|
66
|
+
end
|
75
67
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
68
|
+
it "doesn't get confused by extra comma at the end" do
|
69
|
+
inspect_source(cop, ['func1(a,',
|
70
|
+
' b,)'])
|
71
|
+
expect(cop.offenses.map(&:to_s))
|
72
|
+
.to eq(['C: 2: 6: Align the parameters of a method call if ' \
|
73
|
+
'they span more than one line.'])
|
74
|
+
expect(cop.highlights).to eq(['b'])
|
75
|
+
end
|
81
76
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
77
|
+
it 'can handle a correctly aligned string literal as first argument' do
|
78
|
+
inspect_source(cop, ['add_offense(x,',
|
79
|
+
' a)'])
|
80
|
+
expect(cop.offenses).to be_empty
|
81
|
+
end
|
87
82
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
83
|
+
it 'can handle a string literal as other argument' do
|
84
|
+
inspect_source(cop, ['add_offense(',
|
85
|
+
' "", a)'])
|
86
|
+
expect(cop.offenses).to be_empty
|
87
|
+
end
|
92
88
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
89
|
+
it "doesn't get confused by a line break inside a parameter" do
|
90
|
+
inspect_source(cop, ['read(path, { headers: true,',
|
91
|
+
' converters: :numeric })'])
|
92
|
+
expect(cop.offenses).to be_empty
|
93
|
+
end
|
97
94
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
end
|
95
|
+
it "doesn't get confused by symbols with embedded expressions" do
|
96
|
+
inspect_source(cop, ['send(:"#{name}_comments_path")'])
|
97
|
+
expect(cop.offenses).to be_empty
|
98
|
+
end
|
103
99
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
' )'])
|
109
|
-
expect(cop.offences).to be_empty
|
110
|
-
end
|
100
|
+
it "doesn't get confused by regexen with embedded expressions" do
|
101
|
+
inspect_source(cop, ['a(/#{name}/)'])
|
102
|
+
expect(cop.offenses).to be_empty
|
103
|
+
end
|
111
104
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
' end',
|
118
|
-
' EOS'])
|
119
|
-
expect(cop.offences).to be_empty
|
120
|
-
end
|
105
|
+
it 'accepts braceless hashes' do
|
106
|
+
inspect_source(cop, ['run(collection, :entry_name => label,',
|
107
|
+
' :paginator => paginator)'])
|
108
|
+
expect(cop.offenses).to be_empty
|
109
|
+
end
|
121
110
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
111
|
+
it 'accepts the first parameter being on a new row' do
|
112
|
+
inspect_source(cop, [' match(',
|
113
|
+
' a,',
|
114
|
+
' b',
|
115
|
+
' )'])
|
116
|
+
expect(cop.offenses).to be_empty
|
117
|
+
end
|
129
118
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
119
|
+
it 'can handle heredoc strings' do
|
120
|
+
inspect_source(cop, ['class_eval(<<-EOS, __FILE__, __LINE__ + 1)',
|
121
|
+
' def run_#{name}_callbacks(*args)',
|
122
|
+
' a = 1',
|
123
|
+
' return value',
|
124
|
+
' end',
|
125
|
+
' EOS'])
|
126
|
+
expect(cop.offenses).to be_empty
|
127
|
+
end
|
134
128
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
129
|
+
it 'can handle a method call within a method call' do
|
130
|
+
inspect_source(cop, ['a(a1,',
|
131
|
+
' b(b1,',
|
132
|
+
' b2),',
|
133
|
+
' a2)'])
|
134
|
+
expect(cop.offenses).to be_empty
|
135
|
+
end
|
141
136
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
' })']
|
147
|
-
inspect_source(cop, src)
|
148
|
-
expect(cop.offences).to be_empty
|
149
|
-
end
|
137
|
+
it 'can handle a call embedded in a string' do
|
138
|
+
inspect_source(cop, ['model("#{index(name)}", child)'])
|
139
|
+
expect(cop.offenses).to be_empty
|
140
|
+
end
|
150
141
|
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
142
|
+
it 'can handle do-end' do
|
143
|
+
inspect_source(cop, [' run(lambda do |e|',
|
144
|
+
" w = e['warden']",
|
145
|
+
' end)'])
|
146
|
+
expect(cop.offenses).to be_empty
|
147
|
+
end
|
155
148
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
149
|
+
it 'can handle a call with a block inside another call' do
|
150
|
+
src = ['new(table_name,',
|
151
|
+
' exec_query("info(\'#{row[\'name\']}\')").map { |col|',
|
152
|
+
" col['name']",
|
153
|
+
' })']
|
154
|
+
inspect_source(cop, src)
|
155
|
+
expect(cop.offenses).to be_empty
|
156
|
+
end
|
160
157
|
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
expect(cop.offences).to be_empty
|
166
|
-
end
|
158
|
+
it 'can handle a ternary condition with a block reference' do
|
159
|
+
inspect_source(cop, ['cond ? a : func(&b)'])
|
160
|
+
expect(cop.offenses).to be_empty
|
161
|
+
end
|
167
162
|
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
163
|
+
it 'can handle parentheses used with no parameters' do
|
164
|
+
inspect_source(cop, ['func()'])
|
165
|
+
expect(cop.offenses).to be_empty
|
166
|
+
end
|
172
167
|
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
168
|
+
it 'can handle a multiline hash as second parameter' do
|
169
|
+
inspect_source(cop, ['tag(:input, {',
|
170
|
+
' :value => value',
|
171
|
+
'})'])
|
172
|
+
expect(cop.offenses).to be_empty
|
173
|
+
end
|
178
174
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
expect(new_source).to eq(['func(a,',
|
184
|
-
' b,',
|
185
|
-
' c)'].join("\n"))
|
186
|
-
end
|
175
|
+
it 'can handle method calls without parentheses' do
|
176
|
+
inspect_source(cop, ['a(b c, d)'])
|
177
|
+
expect(cop.offenses).to be_empty
|
178
|
+
end
|
187
179
|
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
180
|
+
it 'can handle other method calls without parentheses' do
|
181
|
+
src = ['chars(Unicode.apply_mapping @wrapped_string, :uppercase)']
|
182
|
+
inspect_source(cop, src)
|
183
|
+
expect(cop.offenses).to be_empty
|
184
|
+
end
|
185
|
+
|
186
|
+
it 'auto-corrects alignment' do
|
187
|
+
new_source = autocorrect_source(cop, ['func(a,',
|
188
|
+
' b,',
|
189
|
+
'c)'])
|
190
|
+
expect(new_source).to eq(['func(a,',
|
191
|
+
' b,',
|
192
|
+
' c)'].join("\n"))
|
193
|
+
end
|
194
|
+
|
195
|
+
it 'auto-corrects each line of a multi-line parameter to the right' do
|
196
|
+
new_source =
|
197
|
+
autocorrect_source(cop,
|
198
|
+
['create :transaction, :closed,',
|
199
|
+
' account: account,',
|
200
|
+
' open_price: 1.29,',
|
201
|
+
' close_price: 1.30'])
|
202
|
+
expect(new_source)
|
203
|
+
.to eq(['create :transaction, :closed,',
|
204
|
+
' account: account,',
|
205
|
+
' open_price: 1.29,',
|
206
|
+
' close_price: 1.30'].join("\n"))
|
207
|
+
end
|
208
|
+
|
209
|
+
it 'auto-corrects each line of a multi-line parameter to the left' do
|
210
|
+
new_source =
|
211
|
+
autocorrect_source(cop,
|
212
|
+
['create :transaction, :closed,',
|
213
|
+
' account: account,',
|
214
|
+
' open_price: 1.29,',
|
215
|
+
' close_price: 1.30'])
|
216
|
+
expect(new_source)
|
217
|
+
.to eq(['create :transaction, :closed,',
|
218
|
+
' account: account,',
|
219
|
+
' open_price: 1.29,',
|
220
|
+
' close_price: 1.30'].join("\n"))
|
221
|
+
end
|
201
222
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
' close_price: 1.30'])
|
209
|
-
expect(new_source)
|
210
|
-
.to eq(['create :transaction, :closed,',
|
211
|
-
' account: account,',
|
212
|
-
' open_price: 1.29,',
|
213
|
-
' close_price: 1.30'].join("\n"))
|
223
|
+
it 'auto-corrects only parameters that begin a line' do
|
224
|
+
original_source = ['foo(:bar, {',
|
225
|
+
' whiz: 2, bang: 3 }, option: 3)']
|
226
|
+
new_source = autocorrect_source(cop, original_source)
|
227
|
+
expect(new_source).to eq(original_source.join("\n"))
|
228
|
+
end
|
214
229
|
end
|
215
230
|
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
231
|
+
context 'aligned with fixed indentation' do
|
232
|
+
let(:cop_config) do
|
233
|
+
{
|
234
|
+
'EnforcedStyle' => 'with_fixed_indentation'
|
235
|
+
}
|
236
|
+
end
|
237
|
+
|
238
|
+
let(:correct_source) do
|
239
|
+
[
|
240
|
+
'create :transaction, :closed,',
|
241
|
+
' account: account,',
|
242
|
+
' open_price: 1.29,',
|
243
|
+
' close_price: 1.30'
|
244
|
+
]
|
245
|
+
end
|
246
|
+
|
247
|
+
it 'does not autocorrect correct source' do
|
248
|
+
expect(autocorrect_source(cop, correct_source))
|
249
|
+
.to eq(correct_source.join("\n"))
|
250
|
+
end
|
251
|
+
|
252
|
+
it 'autocorrects by outdenting when indented too far' do
|
253
|
+
original_source = [
|
254
|
+
'create :transaction, :closed,',
|
255
|
+
' account: account,',
|
256
|
+
' open_price: 1.29,',
|
257
|
+
' close_price: 1.30'
|
258
|
+
]
|
259
|
+
|
260
|
+
expect(autocorrect_source(cop, original_source))
|
261
|
+
.to eq(correct_source.join("\n"))
|
262
|
+
end
|
263
|
+
|
264
|
+
it 'autocorrects by indenting when not indented' do
|
265
|
+
original_source = [
|
266
|
+
'create :transaction, :closed,',
|
267
|
+
'account: account,',
|
268
|
+
'open_price: 1.29,',
|
269
|
+
'close_price: 1.30'
|
270
|
+
]
|
271
|
+
|
272
|
+
expect(autocorrect_source(cop, original_source))
|
273
|
+
.to eq(correct_source.join("\n"))
|
274
|
+
end
|
275
|
+
|
276
|
+
it 'autocorrects when first line is indented' do
|
277
|
+
original_source = [
|
278
|
+
' create :transaction, :closed,',
|
279
|
+
' account: account,',
|
280
|
+
' open_price: 1.29,',
|
281
|
+
' close_price: 1.30'
|
282
|
+
]
|
283
|
+
|
284
|
+
correct_source = [
|
285
|
+
' create :transaction, :closed,',
|
286
|
+
' account: account,',
|
287
|
+
' open_price: 1.29,',
|
288
|
+
' close_price: 1.30'
|
289
|
+
]
|
290
|
+
|
291
|
+
expect(autocorrect_source(cop, original_source))
|
292
|
+
.to eq(correct_source.join("\n"))
|
293
|
+
end
|
221
294
|
end
|
222
295
|
end
|