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,7 +5,7 @@ require 'spec_helper'
|
|
5
5
|
describe Rubocop::Cop::Style::OneLineConditional do
|
6
6
|
subject(:cop) { described_class.new }
|
7
7
|
|
8
|
-
it 'registers an
|
8
|
+
it 'registers an offense for one line if/then/end' do
|
9
9
|
inspect_source(cop, ['if cond then run else dont end'])
|
10
10
|
expect(cop.messages).to eq(['Favor the ternary operator (?:)' \
|
11
11
|
' over if/then/else/end constructs.'])
|
@@ -5,12 +5,12 @@ require 'spec_helper'
|
|
5
5
|
describe Rubocop::Cop::Style::OpMethod do
|
6
6
|
subject(:cop) { described_class.new }
|
7
7
|
|
8
|
-
it 'registers an
|
8
|
+
it 'registers an offense for arg not named other' do
|
9
9
|
inspect_source(cop,
|
10
10
|
['def +(another)',
|
11
11
|
' another',
|
12
12
|
'end'])
|
13
|
-
expect(cop.
|
13
|
+
expect(cop.offenses.size).to eq(1)
|
14
14
|
expect(cop.messages)
|
15
15
|
.to eq(['When defining the + operator, name its argument *other*.'])
|
16
16
|
end
|
@@ -20,44 +20,44 @@ describe Rubocop::Cop::Style::OpMethod do
|
|
20
20
|
['def + another',
|
21
21
|
' another',
|
22
22
|
'end'])
|
23
|
-
expect(cop.
|
23
|
+
expect(cop.offenses.size).to eq(1)
|
24
24
|
expect(cop.messages)
|
25
25
|
.to eq(['When defining the + operator, name its argument *other*.'])
|
26
26
|
end
|
27
27
|
|
28
|
-
it 'does not register an
|
28
|
+
it 'does not register an offense for arg named other' do
|
29
29
|
inspect_source(cop,
|
30
30
|
['def +(other)',
|
31
31
|
' other',
|
32
32
|
'end'])
|
33
|
-
expect(cop.
|
33
|
+
expect(cop.offenses).to be_empty
|
34
34
|
end
|
35
35
|
|
36
|
-
it 'does not register an
|
36
|
+
it 'does not register an offense for []' do
|
37
37
|
inspect_source(cop,
|
38
38
|
['def [](index)',
|
39
39
|
' other',
|
40
40
|
'end'])
|
41
|
-
expect(cop.
|
41
|
+
expect(cop.offenses).to be_empty
|
42
42
|
end
|
43
43
|
|
44
|
-
it 'does not register an
|
44
|
+
it 'does not register an offense for []=' do
|
45
45
|
inspect_source(cop,
|
46
46
|
['def []=(index, value)',
|
47
47
|
' other',
|
48
48
|
'end'])
|
49
|
-
expect(cop.
|
49
|
+
expect(cop.offenses).to be_empty
|
50
50
|
end
|
51
51
|
|
52
|
-
it 'does not register an
|
52
|
+
it 'does not register an offense for <<' do
|
53
53
|
inspect_source(cop,
|
54
54
|
['def <<(cop)',
|
55
55
|
' other',
|
56
56
|
'end'])
|
57
|
-
expect(cop.
|
57
|
+
expect(cop.offenses).to be_empty
|
58
58
|
end
|
59
59
|
|
60
|
-
it 'does not register an
|
60
|
+
it 'does not register an offense for non binary operators' do
|
61
61
|
inspect_source(cop,
|
62
62
|
['def -@', # Unary minus
|
63
63
|
'end',
|
@@ -69,6 +69,6 @@ describe Rubocop::Cop::Style::OpMethod do
|
|
69
69
|
'',
|
70
70
|
'def *(a, b)', # Quite strange, but legal ruby.
|
71
71
|
'end'])
|
72
|
-
expect(cop.
|
72
|
+
expect(cop.offenses).to be_empty
|
73
73
|
end
|
74
74
|
end
|
@@ -11,24 +11,24 @@ describe Rubocop::Cop::Style::ParameterLists, :config do
|
|
11
11
|
}
|
12
12
|
end
|
13
13
|
|
14
|
-
it 'registers an
|
14
|
+
it 'registers an offense for a method def with 5 parameters' do
|
15
15
|
inspect_source(cop, ['def meth(a, b, c, d, e)',
|
16
16
|
'end'])
|
17
|
-
expect(cop.
|
18
|
-
expect(cop.
|
17
|
+
expect(cop.offenses.size).to eq(1)
|
18
|
+
expect(cop.config_to_allow_offenses).to eq('Max' => 5)
|
19
19
|
end
|
20
20
|
|
21
21
|
it 'accepts a method def with 4 parameters' do
|
22
22
|
inspect_source(cop, ['def meth(a, b, c, d)',
|
23
23
|
'end'])
|
24
|
-
expect(cop.
|
24
|
+
expect(cop.offenses).to be_empty
|
25
25
|
end
|
26
26
|
|
27
27
|
context 'When CountKeywordArgs is true' do
|
28
28
|
it 'counts keyword arguments as well', ruby: 2.0 do
|
29
29
|
inspect_source(cop, ['def meth(a, b, c, d: 1, e: 2)',
|
30
30
|
'end'])
|
31
|
-
expect(cop.
|
31
|
+
expect(cop.offenses.size).to eq(1)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
@@ -38,7 +38,7 @@ describe Rubocop::Cop::Style::ParameterLists, :config do
|
|
38
38
|
it 'it does not count keyword arguments', ruby: 2.0 do
|
39
39
|
inspect_source(cop, ['def meth(a, b, c, d: 1, e: 2)',
|
40
40
|
'end'])
|
41
|
-
expect(cop.
|
41
|
+
expect(cop.offenses).to be_empty
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
@@ -6,7 +6,7 @@ describe Rubocop::Cop::Style::ParenthesesAroundCondition, :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 parentheses around condition' do
|
10
10
|
inspect_source(cop, ['if (x > 10)',
|
11
11
|
'elsif (x < 3)',
|
12
12
|
'end',
|
@@ -21,7 +21,7 @@ describe Rubocop::Cop::Style::ParenthesesAroundCondition, :config do
|
|
21
21
|
'x += 1 until (x < 10)',
|
22
22
|
'x += 1 while (x < 10)'
|
23
23
|
])
|
24
|
-
expect(cop.
|
24
|
+
expect(cop.offenses.size).to eq(9)
|
25
25
|
expect(cop.messages.first)
|
26
26
|
.to eq("Don't use parentheses around the condition of an if.")
|
27
27
|
expect(cop.messages.last)
|
@@ -29,8 +29,9 @@ describe Rubocop::Cop::Style::ParenthesesAroundCondition, :config do
|
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'accepts parentheses if there is no space between the keyword and (.' do
|
32
|
-
inspect_source(cop, ['if(x > 5) then something end'
|
33
|
-
|
32
|
+
inspect_source(cop, ['if(x > 5) then something end',
|
33
|
+
'do_something until(x > 5)'])
|
34
|
+
expect(cop.offenses).to be_empty
|
34
35
|
end
|
35
36
|
|
36
37
|
it 'auto-corrects parentheses around condition' do
|
@@ -78,23 +79,23 @@ describe Rubocop::Cop::Style::ParenthesesAroundCondition, :config do
|
|
78
79
|
'x += 1 while x < 10',
|
79
80
|
'x += 1 until x < 10'
|
80
81
|
])
|
81
|
-
expect(cop.
|
82
|
+
expect(cop.offenses).to be_empty
|
82
83
|
end
|
83
84
|
|
84
85
|
it 'accepts parentheses around condition in a ternary' do
|
85
86
|
inspect_source(cop, '(a == 0) ? b : a')
|
86
|
-
expect(cop.
|
87
|
+
expect(cop.offenses).to be_empty
|
87
88
|
end
|
88
89
|
|
89
90
|
it 'is not confused by leading parenthesis in subexpression' do
|
90
91
|
inspect_source(cop, ['(a > b) && other ? one : two'])
|
91
|
-
expect(cop.
|
92
|
+
expect(cop.offenses).to be_empty
|
92
93
|
end
|
93
94
|
|
94
95
|
it 'is not confused by unbalanced parentheses' do
|
95
96
|
inspect_source(cop, ['if (a + b).c()',
|
96
97
|
'end'])
|
97
|
-
expect(cop.
|
98
|
+
expect(cop.offenses).to be_empty
|
98
99
|
end
|
99
100
|
|
100
101
|
context 'safe assignment is allowed' do
|
@@ -103,7 +104,7 @@ describe Rubocop::Cop::Style::ParenthesesAroundCondition, :config do
|
|
103
104
|
['if (test = 10)',
|
104
105
|
'end'
|
105
106
|
])
|
106
|
-
expect(cop.
|
107
|
+
expect(cop.offenses).to be_empty
|
107
108
|
end
|
108
109
|
|
109
110
|
end
|
@@ -116,7 +117,7 @@ describe Rubocop::Cop::Style::ParenthesesAroundCondition, :config do
|
|
116
117
|
['if (test = 10)',
|
117
118
|
'end'
|
118
119
|
])
|
119
|
-
expect(cop.
|
120
|
+
expect(cop.offenses.size).to eq(1)
|
120
121
|
end
|
121
122
|
end
|
122
123
|
end
|
@@ -0,0 +1,250 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Rubocop::Cop::Style::PercentLiteralDelimiters, :config do
|
6
|
+
subject(:cop) { described_class.new(config) }
|
7
|
+
|
8
|
+
let(:cop_config) do
|
9
|
+
{
|
10
|
+
'PreferredDelimiters' => {
|
11
|
+
'%' => '[]',
|
12
|
+
'%i' => '[]',
|
13
|
+
'%q' => '[]',
|
14
|
+
'%Q' => '[]',
|
15
|
+
'%r' => '[]',
|
16
|
+
'%s' => '[]',
|
17
|
+
'%w' => '[]',
|
18
|
+
'%W' => '[]',
|
19
|
+
'%x' => '[]'
|
20
|
+
}
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
context '`%` interpolated string' do
|
25
|
+
it 'does not register an offense for preferred delimiters' do
|
26
|
+
inspect_source(cop, ['%[string]'])
|
27
|
+
expect(cop.offenses).to be_empty
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'registers an offense for other delimiters' do
|
31
|
+
inspect_source(cop, ['%(string)'])
|
32
|
+
expect(cop.messages).to eq([
|
33
|
+
'`%`-literals should be delimited by `[` and `]`'
|
34
|
+
])
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'does not register an offense for other delimiters ' \
|
38
|
+
'when containing preferred delimiter characters' do
|
39
|
+
inspect_source(cop, ['%([string])'])
|
40
|
+
expect(cop.offenses).to be_empty
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'registers an offense for other delimiters ' \
|
44
|
+
'when containing preferred delimiter characters in interpolation' do
|
45
|
+
inspect_source(cop, ['%(#{[1].first})'])
|
46
|
+
expect(cop.messages.size).to eq(1)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context '`%q` string' do
|
51
|
+
it 'does not register an offense for preferred delimiters' do
|
52
|
+
inspect_source(cop, ['%q[string]'])
|
53
|
+
expect(cop.offenses).to be_empty
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'registers an offense for other delimiters' do
|
57
|
+
inspect_source(cop, ['%q(string)'])
|
58
|
+
expect(cop.messages).to eq([
|
59
|
+
'`%q`-literals should be delimited by `[` and `]`'
|
60
|
+
])
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'does not register an offense for other delimiters ' \
|
64
|
+
'when containing preferred delimiter characters' do
|
65
|
+
inspect_source(cop, ['%q([string])'])
|
66
|
+
expect(cop.offenses).to be_empty
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context '`%Q` interpolated string' do
|
71
|
+
it 'does not register an offense for preferred delimiters' do
|
72
|
+
inspect_source(cop, ['%Q[string]'])
|
73
|
+
expect(cop.offenses).to be_empty
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'registers an offense for other delimiters' do
|
77
|
+
inspect_source(cop, ['%Q(string)'])
|
78
|
+
expect(cop.messages).to eq([
|
79
|
+
'`%Q`-literals should be delimited by `[` and `]`'
|
80
|
+
])
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'does not register an offense for other delimiters ' \
|
84
|
+
'when containing preferred delimiter characters' do
|
85
|
+
inspect_source(cop, ['%Q([string])'])
|
86
|
+
expect(cop.offenses).to be_empty
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'registers an offense for other delimiters ' \
|
90
|
+
'when containing preferred delimiter characters in interpolation' do
|
91
|
+
inspect_source(cop, ['%Q(#{[1].first})'])
|
92
|
+
expect(cop.messages.size).to eq(1)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
context '`%w` string array' do
|
97
|
+
it 'does not register an offense for preferred delimiters' do
|
98
|
+
inspect_source(cop, ['%w[some words]'])
|
99
|
+
expect(cop.offenses).to be_empty
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'registers an offense for other delimiters' do
|
103
|
+
inspect_source(cop, ['%w(some words)'])
|
104
|
+
expect(cop.messages).to eq([
|
105
|
+
'`%w`-literals should be delimited by `[` and `]`'
|
106
|
+
])
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'does not register an offense for other delimiters ' \
|
110
|
+
'when containing preferred delimiter characters' do
|
111
|
+
inspect_source(cop, ['%w([some] [words])'])
|
112
|
+
expect(cop.offenses).to be_empty
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
context '`%W` interpolated string array' do
|
117
|
+
it 'does not register an offense for preferred delimiters' do
|
118
|
+
inspect_source(cop, ['%W[some words]'])
|
119
|
+
expect(cop.offenses).to be_empty
|
120
|
+
end
|
121
|
+
|
122
|
+
it 'registers an offense for other delimiters' do
|
123
|
+
inspect_source(cop, ['%W(some words)'])
|
124
|
+
expect(cop.messages).to eq([
|
125
|
+
'`%W`-literals should be delimited by `[` and `]`'
|
126
|
+
])
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'does not register an offense for other delimiters ' \
|
130
|
+
'when containing preferred delimiter characters' do
|
131
|
+
inspect_source(cop, ['%W([some] [words])'])
|
132
|
+
expect(cop.offenses).to be_empty
|
133
|
+
end
|
134
|
+
|
135
|
+
it 'registers an offense for other delimiters ' \
|
136
|
+
'when containing preferred delimiter characters in interpolation' do
|
137
|
+
inspect_source(cop, ['%W(#{[1].first})'])
|
138
|
+
expect(cop.messages.size).to eq(1)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
context '`%r` interpolated regular expression' do
|
143
|
+
it 'does not register an offense for preferred delimiters' do
|
144
|
+
inspect_source(cop, ['%r[regexp]'])
|
145
|
+
expect(cop.offenses).to be_empty
|
146
|
+
end
|
147
|
+
|
148
|
+
it 'registers an offense for other delimiters' do
|
149
|
+
inspect_source(cop, ['%r(regexp)'])
|
150
|
+
expect(cop.messages).to eq([
|
151
|
+
'`%r`-literals should be delimited by `[` and `]`'
|
152
|
+
])
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'does not register an offense for other delimiters ' \
|
156
|
+
'when containing preferred delimiter characters' do
|
157
|
+
inspect_source(cop, ['%r([regexp])'])
|
158
|
+
expect(cop.offenses).to be_empty
|
159
|
+
end
|
160
|
+
|
161
|
+
it 'registers an offense for other delimiters ' \
|
162
|
+
'when containing preferred delimiter characters in interpolation' do
|
163
|
+
inspect_source(cop, ['%r(#{[1].first})'])
|
164
|
+
expect(cop.messages.size).to eq(1)
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
context '`%i` symbol array', ruby: 2.0 do
|
169
|
+
it 'does not register an offense for preferred delimiters' do
|
170
|
+
inspect_source(cop, ['%i[some symbols]'])
|
171
|
+
expect(cop.offenses).to be_empty
|
172
|
+
end
|
173
|
+
|
174
|
+
it 'registers an offense for other delimiters' do
|
175
|
+
inspect_source(cop, ['%i(some symbols)'])
|
176
|
+
expect(cop.messages).to eq([
|
177
|
+
'`%i`-literals should be delimited by `[` and `]`'
|
178
|
+
])
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
context '`%s` symbol' do
|
183
|
+
it 'does not register an offense for preferred delimiters' do
|
184
|
+
inspect_source(cop, ['%s[symbol]'])
|
185
|
+
expect(cop.offenses).to be_empty
|
186
|
+
end
|
187
|
+
|
188
|
+
it 'registers an offense for other delimiters' do
|
189
|
+
inspect_source(cop, ['%s(symbol)'])
|
190
|
+
expect(cop.messages).to eq([
|
191
|
+
'`%s`-literals should be delimited by `[` and `]`'
|
192
|
+
])
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
context '`%x` interpolated system call' do
|
197
|
+
it 'does not register an offense for preferred delimiters' do
|
198
|
+
inspect_source(cop, ['%x[command]'])
|
199
|
+
expect(cop.offenses).to be_empty
|
200
|
+
end
|
201
|
+
|
202
|
+
it 'registers an offense for other delimiters' do
|
203
|
+
inspect_source(cop, ['%x(command)'])
|
204
|
+
expect(cop.messages).to eq([
|
205
|
+
'`%x`-literals should be delimited by `[` and `]`'
|
206
|
+
])
|
207
|
+
end
|
208
|
+
|
209
|
+
it 'does not register an offense for other delimiters ' \
|
210
|
+
'when containing preferred delimiter characters' do
|
211
|
+
inspect_source(cop, ['%x([command])'])
|
212
|
+
expect(cop.offenses).to be_empty
|
213
|
+
end
|
214
|
+
|
215
|
+
it 'registers an offense for other delimiters ' \
|
216
|
+
'when containing preferred delimiter characters in interpolation' do
|
217
|
+
inspect_source(cop, ['%x(#{[1].first})'])
|
218
|
+
expect(cop.messages.size).to eq(1)
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
context 'auto-correct' do
|
223
|
+
it 'fixes a string' do
|
224
|
+
new_source = autocorrect_source(cop, '%(string)')
|
225
|
+
expect(new_source).to eq('%[string]')
|
226
|
+
end
|
227
|
+
|
228
|
+
it 'fixes a string array' do
|
229
|
+
new_source = autocorrect_source(cop, '%w(some words)')
|
230
|
+
expect(new_source).to eq('%w[some words]')
|
231
|
+
end
|
232
|
+
|
233
|
+
it 'fixes a regular expression' do
|
234
|
+
original_source = '%r(.*)'
|
235
|
+
new_source = autocorrect_source(cop, original_source)
|
236
|
+
expect(new_source).to eq('%r[.*]')
|
237
|
+
end
|
238
|
+
|
239
|
+
it 'fixes a regular expression with option' do
|
240
|
+
original_source = '%r(.*)i'
|
241
|
+
new_source = autocorrect_source(cop, original_source)
|
242
|
+
expect(new_source).to eq('%r[.*]i')
|
243
|
+
end
|
244
|
+
|
245
|
+
it 'preserves line breaks when fixing a multiline array' do
|
246
|
+
new_source = autocorrect_source(cop, ['%w(', 'some', 'words', ')'])
|
247
|
+
expect(new_source).to eq("%w[\nsome\nwords\n]")
|
248
|
+
end
|
249
|
+
end
|
250
|
+
end
|