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,136 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Rubocop::Cop::Style::FormatString, :config do
|
6
|
+
subject(:cop) { described_class.new(config) }
|
7
|
+
|
8
|
+
context 'when enforced style is sprintf' do
|
9
|
+
let(:cop_config) { { 'EnforcedStyle' => 'sprintf' } }
|
10
|
+
it 'registers an offense for a string followed by something' do
|
11
|
+
inspect_source(cop,
|
12
|
+
['puts "%d" % 10'])
|
13
|
+
expect(cop.offenses.size).to eq(1)
|
14
|
+
expect(cop.messages)
|
15
|
+
.to eq(['Favor sprintf over String#%.'])
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'registers an offense for something followed by an array' do
|
19
|
+
inspect_source(cop,
|
20
|
+
['puts x % [10, 11]'])
|
21
|
+
expect(cop.offenses.size).to eq(1)
|
22
|
+
expect(cop.messages)
|
23
|
+
.to eq(['Favor sprintf over String#%.'])
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'does not register an offense for numbers' do
|
27
|
+
inspect_source(cop,
|
28
|
+
['puts 10 % 4'])
|
29
|
+
expect(cop.offenses).to be_empty
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'does not register an offense for ambiguous cases' do
|
33
|
+
inspect_source(cop,
|
34
|
+
['puts x % 4'])
|
35
|
+
expect(cop.offenses).to be_empty
|
36
|
+
|
37
|
+
inspect_source(cop,
|
38
|
+
['puts x % Y'])
|
39
|
+
expect(cop.offenses).to be_empty
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'works if the first operand contains embedded expressions' do
|
43
|
+
inspect_source(cop,
|
44
|
+
['puts "#{x * 5} %d #{@test}" % 10'])
|
45
|
+
expect(cop.offenses.size).to eq(1)
|
46
|
+
expect(cop.messages)
|
47
|
+
.to eq(['Favor sprintf over String#%.'])
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'registers an offense for format' do
|
51
|
+
inspect_source(cop,
|
52
|
+
['format(something, a, b)'])
|
53
|
+
expect(cop.offenses.size).to eq(1)
|
54
|
+
expect(cop.messages)
|
55
|
+
.to eq(['Favor sprintf over format.'])
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context 'when enforced style is format' do
|
60
|
+
let(:cop_config) { { 'EnforcedStyle' => 'format' } }
|
61
|
+
|
62
|
+
it 'registers an offense for a string followed by something' do
|
63
|
+
inspect_source(cop,
|
64
|
+
['puts "%d" % 10'])
|
65
|
+
expect(cop.offenses.size).to eq(1)
|
66
|
+
expect(cop.messages)
|
67
|
+
.to eq(['Favor format over String#%.'])
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'registers an offense for something followed by an array' do
|
71
|
+
inspect_source(cop,
|
72
|
+
['puts x % [10, 11]'])
|
73
|
+
expect(cop.offenses.size).to eq(1)
|
74
|
+
expect(cop.messages)
|
75
|
+
.to eq(['Favor format over String#%.'])
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'does not register an offense for numbers' do
|
79
|
+
inspect_source(cop,
|
80
|
+
['puts 10 % 4'])
|
81
|
+
expect(cop.offenses).to be_empty
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'does not register an offense for ambiguous cases' do
|
85
|
+
inspect_source(cop,
|
86
|
+
['puts x % 4'])
|
87
|
+
expect(cop.offenses).to be_empty
|
88
|
+
|
89
|
+
inspect_source(cop,
|
90
|
+
['puts x % Y'])
|
91
|
+
expect(cop.offenses).to be_empty
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'works if the first operand contains embedded expressions' do
|
95
|
+
inspect_source(cop,
|
96
|
+
['puts "#{x * 5} %d #{@test}" % 10'])
|
97
|
+
expect(cop.offenses.size).to eq(1)
|
98
|
+
expect(cop.messages)
|
99
|
+
.to eq(['Favor format over String#%.'])
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'registers an offense for sprintf' do
|
103
|
+
inspect_source(cop,
|
104
|
+
['sprintf(something, a, b)'])
|
105
|
+
expect(cop.offenses.size).to eq(1)
|
106
|
+
expect(cop.messages)
|
107
|
+
.to eq(['Favor format over sprintf.'])
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
context 'when enforced style is percent' do
|
112
|
+
let(:cop_config) { { 'EnforcedStyle' => 'percent' } }
|
113
|
+
|
114
|
+
it 'registers an offense for format' do
|
115
|
+
inspect_source(cop,
|
116
|
+
['format(something, a, b)'])
|
117
|
+
expect(cop.offenses.size).to eq(1)
|
118
|
+
expect(cop.messages)
|
119
|
+
.to eq(['Favor String#% over format.'])
|
120
|
+
end
|
121
|
+
|
122
|
+
it 'registers an offense for sprintf' do
|
123
|
+
inspect_source(cop,
|
124
|
+
['sprintf(something, a, b)'])
|
125
|
+
expect(cop.offenses.size).to eq(1)
|
126
|
+
expect(cop.messages)
|
127
|
+
.to eq(['Favor String#% over sprintf.'])
|
128
|
+
end
|
129
|
+
|
130
|
+
it 'accepts String#%' do
|
131
|
+
inspect_source(cop,
|
132
|
+
['puts "%d" % 10'])
|
133
|
+
expect(cop.offenses).to be_empty
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
@@ -10,25 +10,25 @@ describe Rubocop::Cop::Style::GlobalVars, :config do
|
|
10
10
|
subject(:cop) { described_class.new(config) }
|
11
11
|
let(:cop_config) { cop_config }
|
12
12
|
|
13
|
-
it 'registers an
|
13
|
+
it 'registers an offense for $custom' do
|
14
14
|
inspect_source(cop, ['puts $custom'])
|
15
|
-
expect(cop.
|
15
|
+
expect(cop.offenses.size).to eq(1)
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'allows user whitelisted variables' do
|
19
19
|
inspect_source(cop, ['puts $allowed'])
|
20
|
-
expect(cop.
|
20
|
+
expect(cop.offenses).to be_empty
|
21
21
|
end
|
22
22
|
|
23
23
|
described_class::BUILT_IN_VARS.each do |var|
|
24
|
-
it "does not register an
|
24
|
+
it "does not register an offense for built-in variable #{var}" do
|
25
25
|
inspect_source(cop, ["puts #{var}"])
|
26
|
-
expect(cop.
|
26
|
+
expect(cop.offenses).to be_empty
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
it 'does not register an
|
30
|
+
it 'does not register an offense for backrefs like $1' do
|
31
31
|
inspect_source(cop, ['puts $1'])
|
32
|
-
expect(cop.
|
32
|
+
expect(cop.offenses).to be_empty
|
33
33
|
end
|
34
34
|
end
|
@@ -5,10 +5,10 @@ require 'spec_helper'
|
|
5
5
|
describe Rubocop::Cop::Style::HashMethods do
|
6
6
|
subject(:cop) { described_class.new }
|
7
7
|
|
8
|
-
it 'registers an
|
8
|
+
it 'registers an offense for has_key? with one arg' do
|
9
9
|
inspect_source(cop,
|
10
10
|
['o.has_key?(o)'])
|
11
|
-
expect(cop.
|
11
|
+
expect(cop.offenses.size).to eq(1)
|
12
12
|
expect(cop.messages)
|
13
13
|
.to eq(['has_key? is deprecated in favor of key?.'])
|
14
14
|
end
|
@@ -16,13 +16,13 @@ describe Rubocop::Cop::Style::HashMethods do
|
|
16
16
|
it 'accepts has_key? with no args' do
|
17
17
|
inspect_source(cop,
|
18
18
|
['o.has_key?'])
|
19
|
-
expect(cop.
|
19
|
+
expect(cop.offenses).to be_empty
|
20
20
|
end
|
21
21
|
|
22
|
-
it 'registers an
|
22
|
+
it 'registers an offense for has_value? with one arg' do
|
23
23
|
inspect_source(cop,
|
24
24
|
['o.has_value?(o)'])
|
25
|
-
expect(cop.
|
25
|
+
expect(cop.offenses.size).to eq(1)
|
26
26
|
expect(cop.messages)
|
27
27
|
.to eq(['has_value? is deprecated in favor of value?.'])
|
28
28
|
end
|
@@ -30,7 +30,7 @@ describe Rubocop::Cop::Style::HashMethods do
|
|
30
30
|
it 'accepts has_value? with no args' do
|
31
31
|
inspect_source(cop,
|
32
32
|
['o.has_value?'])
|
33
|
-
expect(cop.
|
33
|
+
expect(cop.offenses).to be_empty
|
34
34
|
end
|
35
35
|
|
36
36
|
it 'auto-corrects has_key? with key?' do
|
@@ -14,20 +14,20 @@ describe Rubocop::Cop::Style::HashSyntax, :config do
|
|
14
14
|
'SpaceAroundOperators' => { 'Enabled' => true })
|
15
15
|
end
|
16
16
|
|
17
|
-
it 'registers
|
17
|
+
it 'registers offense for hash rocket syntax when new is possible' do
|
18
18
|
inspect_source(cop, ['x = { :a => 0 }'])
|
19
19
|
expect(cop.messages).to eq(['Use the new Ruby 1.9 hash syntax.'])
|
20
|
-
expect(cop.
|
20
|
+
expect(cop.config_to_allow_offenses)
|
21
21
|
.to eq('EnforcedStyle' => 'hash_rockets')
|
22
22
|
end
|
23
23
|
|
24
|
-
it 'registers an
|
24
|
+
it 'registers an offense for mixed syntax when new is possible' do
|
25
25
|
inspect_source(cop, ['x = { :a => 0, b: 1 }'])
|
26
26
|
expect(cop.messages).to eq(['Use the new Ruby 1.9 hash syntax.'])
|
27
|
-
expect(cop.
|
27
|
+
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
|
28
28
|
end
|
29
29
|
|
30
|
-
it 'registers an
|
30
|
+
it 'registers an offense for hash rockets in method calls' do
|
31
31
|
inspect_source(cop, ['func(3, :a => 0)'])
|
32
32
|
expect(cop.messages).to eq(['Use the new Ruby 1.9 hash syntax.'])
|
33
33
|
end
|
@@ -52,7 +52,7 @@ describe Rubocop::Cop::Style::HashSyntax, :config do
|
|
52
52
|
expect(cop.messages).to be_empty
|
53
53
|
end
|
54
54
|
|
55
|
-
it 'registers
|
55
|
+
it 'registers offense when keys start with an uppercase letter' do
|
56
56
|
inspect_source(cop, ['x = { :A => 0 }'])
|
57
57
|
expect(cop.messages).to eq(['Use the new Ruby 1.9 hash syntax.'])
|
58
58
|
end
|
@@ -96,19 +96,19 @@ describe Rubocop::Cop::Style::HashSyntax, :config do
|
|
96
96
|
context 'configured to enforce hash rockets style' do
|
97
97
|
let(:cop_config) { { 'EnforcedStyle' => 'hash_rockets' } }
|
98
98
|
|
99
|
-
it 'registers
|
99
|
+
it 'registers offense for Ruby 1.9 style' do
|
100
100
|
inspect_source(cop, ['x = { a: 0 }'])
|
101
101
|
expect(cop.messages).to eq(['Always use hash rockets in hashes.'])
|
102
|
-
expect(cop.
|
102
|
+
expect(cop.config_to_allow_offenses).to eq('EnforcedStyle' => 'ruby19')
|
103
103
|
end
|
104
104
|
|
105
|
-
it 'registers an
|
105
|
+
it 'registers an offense for mixed syntax' do
|
106
106
|
inspect_source(cop, ['x = { :a => 0, b: 1 }'])
|
107
107
|
expect(cop.messages).to eq(['Always use hash rockets in hashes.'])
|
108
|
-
expect(cop.
|
108
|
+
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
|
109
109
|
end
|
110
110
|
|
111
|
-
it 'registers an
|
111
|
+
it 'registers an offense for 1.9 style in method calls' do
|
112
112
|
inspect_source(cop, ['func(3, a: 0)'])
|
113
113
|
expect(cop.messages).to eq(['Always use hash rockets in hashes.'])
|
114
114
|
end
|
@@ -11,7 +11,7 @@ describe Rubocop::Cop::Style::IfUnlessModifier do
|
|
11
11
|
Rubocop::Config.new(hash)
|
12
12
|
end
|
13
13
|
|
14
|
-
it 'registers an
|
14
|
+
it 'registers an offense for multiline if that fits on one line' do
|
15
15
|
# This if statement fits exactly on one line if written as a
|
16
16
|
# modifier.
|
17
17
|
condition = 'a' * 38
|
@@ -24,11 +24,11 @@ describe Rubocop::Cop::Style::IfUnlessModifier do
|
|
24
24
|
' end'])
|
25
25
|
expect(cop.messages).to eq(
|
26
26
|
['Favor modifier if usage when you have a single-line' \
|
27
|
-
' body. Another good alternative is the usage of control flow'
|
27
|
+
' body. Another good alternative is the usage of control flow' \
|
28
28
|
' &&/||.'])
|
29
29
|
end
|
30
30
|
|
31
|
-
it 'registers an
|
31
|
+
it 'registers an offense for short multiline if near an else etc' do
|
32
32
|
inspect_source(cop,
|
33
33
|
['if x',
|
34
34
|
' y',
|
@@ -43,7 +43,7 @@ describe Rubocop::Cop::Style::IfUnlessModifier do
|
|
43
43
|
'if a',
|
44
44
|
' b',
|
45
45
|
'end'])
|
46
|
-
expect(cop.
|
46
|
+
expect(cop.offenses.size).to eq(1)
|
47
47
|
end
|
48
48
|
|
49
49
|
it "accepts multiline if that doesn't fit on one line" do
|
@@ -54,13 +54,13 @@ describe Rubocop::Cop::Style::IfUnlessModifier do
|
|
54
54
|
check_short_multiline(cop, 'if')
|
55
55
|
end
|
56
56
|
|
57
|
-
it 'registers an
|
57
|
+
it 'registers an offense for multiline unless that fits on one line' do
|
58
58
|
inspect_source(cop, ['unless a',
|
59
59
|
' b',
|
60
60
|
'end'])
|
61
61
|
expect(cop.messages).to eq(
|
62
62
|
['Favor modifier unless usage when you have a single-line' \
|
63
|
-
' body. Another good alternative is the usage of control flow'
|
63
|
+
' body. Another good alternative is the usage of control flow' \
|
64
64
|
' &&/||.'])
|
65
65
|
end
|
66
66
|
|
@@ -68,7 +68,7 @@ describe Rubocop::Cop::Style::IfUnlessModifier do
|
|
68
68
|
inspect_source(cop, ['unless a',
|
69
69
|
' b # A comment',
|
70
70
|
'end'])
|
71
|
-
expect(cop.
|
71
|
+
expect(cop.offenses).to be_empty
|
72
72
|
end
|
73
73
|
|
74
74
|
it 'accepts if-else-end' do
|
@@ -89,7 +89,7 @@ describe Rubocop::Cop::Style::IfUnlessModifier do
|
|
89
89
|
'elsif test2',
|
90
90
|
' something_else',
|
91
91
|
'end'])
|
92
|
-
expect(cop.
|
92
|
+
expect(cop.offenses).to be_empty
|
93
93
|
end
|
94
94
|
|
95
95
|
context 'with implicit match conditional' do
|
@@ -106,11 +106,11 @@ describe Rubocop::Cop::Style::IfUnlessModifier do
|
|
106
106
|
context 'when a multiline if fits on one line' do
|
107
107
|
let(:conditional) { "/#{'a' * 36}/" }
|
108
108
|
|
109
|
-
it 'registers an
|
109
|
+
it 'registers an offense' do
|
110
110
|
expect(" #{body} if #{conditional}".length).to eq(79)
|
111
111
|
|
112
112
|
inspect_source(cop, source)
|
113
|
-
expect(cop.
|
113
|
+
expect(cop.offenses.size).to eq(1)
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
@@ -121,7 +121,25 @@ describe Rubocop::Cop::Style::IfUnlessModifier do
|
|
121
121
|
expect(" #{body} if #{conditional}".length).to eq(80)
|
122
122
|
|
123
123
|
inspect_source(cop, source)
|
124
|
-
expect(cop.
|
124
|
+
expect(cop.offenses).to be_empty
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
context 'when the maximum line length is specified by the cop itself' do
|
129
|
+
let(:config) do
|
130
|
+
hash = {
|
131
|
+
'LineLength' => { 'Max' => 100 },
|
132
|
+
'IfUnlessModifier' => { 'MaxLineLength' => 79 }
|
133
|
+
}
|
134
|
+
Rubocop::Config.new(hash)
|
135
|
+
end
|
136
|
+
|
137
|
+
it "accepts multiline if that doesn't fit on one line" do
|
138
|
+
check_too_long(cop, 'if')
|
139
|
+
end
|
140
|
+
|
141
|
+
it "accepts multiline unless that doesn't fit on one line" do
|
142
|
+
check_too_long(cop, 'unless')
|
125
143
|
end
|
126
144
|
end
|
127
145
|
end
|
@@ -5,7 +5,7 @@ require 'spec_helper'
|
|
5
5
|
describe Rubocop::Cop::Style::IfWithSemicolon do
|
6
6
|
subject(:cop) { described_class.new }
|
7
7
|
|
8
|
-
it 'registers an
|
8
|
+
it 'registers an offense for one line if/;/end' do
|
9
9
|
inspect_source(cop, ['if cond; run else dont end'])
|
10
10
|
expect(cop.messages).to eq(
|
11
11
|
['Never use if x; Use the ternary operator instead.'])
|
@@ -0,0 +1,136 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Rubocop::Cop::Style::IndentArray do
|
6
|
+
subject(:cop) { described_class.new }
|
7
|
+
|
8
|
+
it 'accepts multi-assignments' do
|
9
|
+
inspect_source(cop, 'a, b = b, a')
|
10
|
+
expect(cop.offenses).to be_empty
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'accepts correctly indented only element' do
|
14
|
+
inspect_source(cop,
|
15
|
+
['a << [',
|
16
|
+
' 1',
|
17
|
+
']'])
|
18
|
+
expect(cop.offenses).to be_empty
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'registers an offense for incorrectly indented only element' do
|
22
|
+
inspect_source(cop,
|
23
|
+
['a << [',
|
24
|
+
' 1',
|
25
|
+
']'])
|
26
|
+
expect(cop.highlights).to eq(['1'])
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'auto-corrects incorrectly indented only element' do
|
30
|
+
corrected = autocorrect_source(cop, ['a << [',
|
31
|
+
' 1',
|
32
|
+
']'])
|
33
|
+
expect(corrected).to eq ['a << [',
|
34
|
+
' 1',
|
35
|
+
']'].join("\n")
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'accepts correctly indented first element' do
|
39
|
+
inspect_source(cop,
|
40
|
+
['[',
|
41
|
+
' x,',
|
42
|
+
' y',
|
43
|
+
']'])
|
44
|
+
expect(cop.offenses).to be_empty
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'registers an offense for incorrectly indented first element' do
|
48
|
+
inspect_source(cop,
|
49
|
+
['[',
|
50
|
+
'x,',
|
51
|
+
' y',
|
52
|
+
']'])
|
53
|
+
expect(cop.highlights).to eq(['x'])
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'accepts several elements per line' do
|
57
|
+
inspect_source(cop,
|
58
|
+
['a = [',
|
59
|
+
' 1, 2',
|
60
|
+
']'])
|
61
|
+
expect(cop.offenses).to be_empty
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'accepts a first element on the same line as the left bracket' do
|
65
|
+
inspect_source(cop,
|
66
|
+
['a = ["a",',
|
67
|
+
' "b"]'])
|
68
|
+
expect(cop.offenses).to be_empty
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'accepts single line array' do
|
72
|
+
inspect_source(cop,
|
73
|
+
['a = [1, 2]'])
|
74
|
+
expect(cop.offenses).to be_empty
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'accepts an empty array' do
|
78
|
+
inspect_source(cop,
|
79
|
+
['a = []'])
|
80
|
+
expect(cop.offenses).to be_empty
|
81
|
+
end
|
82
|
+
|
83
|
+
context 'when array is method argument' do
|
84
|
+
context 'and arguments are surrounded by parentheses' do
|
85
|
+
it 'accepts normal indentation for first argument' do
|
86
|
+
inspect_source(cop,
|
87
|
+
['func([',
|
88
|
+
' 1',
|
89
|
+
'])'])
|
90
|
+
expect(cop.offenses).to be_empty
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'registers an offense for incorrect indentation' do
|
94
|
+
inspect_source(cop,
|
95
|
+
['func([',
|
96
|
+
' 1',
|
97
|
+
' ])'])
|
98
|
+
expect(cop.messages)
|
99
|
+
.to eq(['Use 2 spaces for indentation in an array, relative to ' \
|
100
|
+
'the start of the line where the left bracket is.'])
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'accepts normal indentation for second argument' do
|
104
|
+
inspect_source(cop,
|
105
|
+
['body.should have_tag("input", [',
|
106
|
+
' :name])'])
|
107
|
+
expect(cop.offenses).to be_empty
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
context 'and arguments are not surrounded by parentheses' do
|
112
|
+
it 'accepts single line array' do
|
113
|
+
inspect_source(cop,
|
114
|
+
['func x, [1, 2]'])
|
115
|
+
expect(cop.offenses).to be_empty
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'accepts a correctly indented multi-line array' do
|
119
|
+
inspect_source(cop,
|
120
|
+
['func x, [',
|
121
|
+
' 1, 2]'])
|
122
|
+
expect(cop.offenses).to be_empty
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'registers an offense for incorrectly indented multi-line array' do
|
126
|
+
inspect_source(cop,
|
127
|
+
['func x, [',
|
128
|
+
' 1, 2]'])
|
129
|
+
expect(cop.messages)
|
130
|
+
.to eq(['Use 2 spaces for indentation in an array, relative to ' \
|
131
|
+
'the start of the line where the left bracket is.'])
|
132
|
+
expect(cop.highlights).to eq(['1'])
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|