rubocop 0.29.1 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rubocop might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +73 -1
- data/README.md +11 -2
- data/config/default.yml +194 -6
- data/config/disabled.yml +25 -1
- data/config/enabled.yml +74 -12
- data/lib/rubocop.rb +19 -2
- data/lib/rubocop/config.rb +23 -3
- data/lib/rubocop/config_loader.rb +9 -1
- data/lib/rubocop/cop/autocorrect_logic.rb +26 -0
- data/lib/rubocop/cop/cop.rb +33 -17
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +16 -4
- data/lib/rubocop/cop/lint/block_alignment.rb +5 -14
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +61 -0
- data/lib/rubocop/cop/lint/void.rb +11 -3
- data/lib/rubocop/cop/mixin/on_normal_if_unless.rb +17 -0
- data/lib/rubocop/cop/performance/detect.rb +72 -0
- data/lib/rubocop/cop/performance/flat_map.rb +64 -0
- data/lib/rubocop/cop/performance/reverse_each.rb +43 -0
- data/lib/rubocop/cop/performance/sample.rb +58 -0
- data/lib/rubocop/cop/performance/size.rb +64 -0
- data/lib/rubocop/cop/rails/date.rb +121 -0
- data/lib/rubocop/cop/rails/find_by.rb +52 -0
- data/lib/rubocop/cop/rails/find_each.rb +41 -0
- data/lib/rubocop/cop/rails/time_zone.rb +93 -0
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +45 -0
- data/lib/rubocop/cop/style/block_delimiters.rb +186 -0
- data/lib/rubocop/cop/style/closing_parenthesis_indentation.rb +76 -0
- data/lib/rubocop/cop/style/command_literal.rb +120 -0
- data/lib/rubocop/cop/style/copyright.rb +87 -0
- data/lib/rubocop/cop/style/documentation.rb +32 -0
- data/lib/rubocop/cop/style/empty_else.rb +85 -16
- data/lib/rubocop/cop/style/encoding.rb +14 -2
- data/lib/rubocop/cop/style/end_of_line.rb +5 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +86 -23
- data/lib/rubocop/cop/style/if_unless_modifier.rb +15 -0
- data/lib/rubocop/cop/style/indentation_consistency.rb +13 -6
- data/lib/rubocop/cop/style/indentation_width.rb +34 -10
- data/lib/rubocop/cop/style/lambda.rb +32 -17
- data/lib/rubocop/cop/style/line_end_concatenation.rb +4 -0
- data/lib/rubocop/cop/style/missing_else.rb +72 -0
- data/lib/rubocop/cop/style/regexp_literal.rb +89 -58
- data/lib/rubocop/cop/style/space_around_operators.rb +13 -2
- data/lib/rubocop/cop/style/space_before_block_braces.rb +3 -3
- data/lib/rubocop/cop/style/space_inside_block_braces.rb +9 -5
- data/lib/rubocop/cop/style/symbol_literal.rb +36 -0
- data/lib/rubocop/cop/style/trailing_blank_lines.rb +7 -0
- data/lib/rubocop/cop/style/trailing_comma.rb +21 -7
- data/lib/rubocop/cop/style/trivial_accessors.rb +17 -3
- data/lib/rubocop/cop/style/unneeded_capital_w.rb +4 -6
- data/lib/rubocop/cop/style/while_until_modifier.rb +10 -0
- data/lib/rubocop/cop/util.rb +24 -19
- data/lib/rubocop/cop/variable_force.rb +14 -0
- data/lib/rubocop/cop/variable_force/reference.rb +10 -4
- data/lib/rubocop/formatter/html_formatter.rb +10 -4
- data/lib/rubocop/formatter/text_util.rb +5 -7
- data/lib/rubocop/options.rb +47 -45
- data/lib/rubocop/path_util.rb +12 -8
- data/lib/rubocop/processed_source.rb +12 -1
- data/lib/rubocop/rake_task.rb +2 -2
- data/lib/rubocop/version.rb +1 -1
- data/relnotes/v0.30.0.md +145 -0
- data/rubocop.gemspec +15 -3
- metadata +22 -545
- data/.gitignore +0 -54
- data/.rspec +0 -1
- data/.rubocop.yml +0 -11
- data/.rubocop_todo.yml +0 -28
- data/.travis.yml +0 -22
- data/Gemfile +0 -15
- data/Rakefile +0 -41
- data/lib/rubocop/cop/style/blocks.rb +0 -80
- data/lib/rubocop/cop/style/unneeded_percent_x.rb +0 -25
- data/logo/rubocop-final-logo.eps +0 -0
- data/spec/.rubocop.yml +0 -5
- data/spec/fixtures/html_formatter/expected.html +0 -495
- data/spec/fixtures/html_formatter/project/app/controllers/application_controller.rb +0 -5
- data/spec/fixtures/html_formatter/project/app/controllers/books_controller.rb +0 -74
- data/spec/fixtures/html_formatter/project/app/models/book.rb +0 -5
- data/spec/isolated_environment_spec.rb +0 -24
- data/spec/project_spec.rb +0 -119
- data/spec/rubocop/cli_spec.rb +0 -2740
- data/spec/rubocop/comment_config_spec.rb +0 -105
- data/spec/rubocop/config_loader_spec.rb +0 -377
- data/spec/rubocop/config_spec.rb +0 -235
- data/spec/rubocop/config_store_spec.rb +0 -53
- data/spec/rubocop/cop/commissioner_spec.rb +0 -85
- data/spec/rubocop/cop/cop_spec.rb +0 -135
- data/spec/rubocop/cop/corrector_spec.rb +0 -59
- data/spec/rubocop/cop/force_spec.rb +0 -29
- data/spec/rubocop/cop/lint/ambiguous_operator_spec.rb +0 -113
- data/spec/rubocop/cop/lint/ambiguous_regexp_literal_spec.rb +0 -35
- data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +0 -130
- data/spec/rubocop/cop/lint/block_alignment_spec.rb +0 -533
- data/spec/rubocop/cop/lint/condition_position_spec.rb +0 -51
- data/spec/rubocop/cop/lint/debugger_spec.rb +0 -73
- data/spec/rubocop/cop/lint/def_end_alignment_spec.rb +0 -108
- data/spec/rubocop/cop/lint/deprecated_class_methods_spec.rb +0 -38
- data/spec/rubocop/cop/lint/duplicate_methods_spec.rb +0 -189
- data/spec/rubocop/cop/lint/else_layout_spec.rb +0 -65
- data/spec/rubocop/cop/lint/empty_ensure_spec.rb +0 -27
- data/spec/rubocop/cop/lint/empty_interpolation_spec.rb +0 -18
- data/spec/rubocop/cop/lint/end_alignment_spec.rb +0 -91
- data/spec/rubocop/cop/lint/end_in_method_spec.rb +0 -29
- data/spec/rubocop/cop/lint/ensure_return_spec.rb +0 -39
- data/spec/rubocop/cop/lint/eval_spec.rb +0 -33
- data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +0 -30
- data/spec/rubocop/cop/lint/invalid_character_literal_spec.rb +0 -33
- data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +0 -172
- data/spec/rubocop/cop/lint/literal_in_interpolation_spec.rb +0 -31
- data/spec/rubocop/cop/lint/loop_spec.rb +0 -27
- data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +0 -57
- data/spec/rubocop/cop/lint/require_parentheses_spec.rb +0 -82
- data/spec/rubocop/cop/lint/rescue_exception_spec.rb +0 -123
- data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +0 -237
- data/spec/rubocop/cop/lint/space_before_first_arg_spec.rb +0 -66
- data/spec/rubocop/cop/lint/string_conversion_in_interpolation_spec.rb +0 -51
- data/spec/rubocop/cop/lint/syntax_spec.rb +0 -34
- data/spec/rubocop/cop/lint/underscore_prefixed_variable_name_spec.rb +0 -179
- data/spec/rubocop/cop/lint/unreachable_code_spec.rb +0 -63
- data/spec/rubocop/cop/lint/unused_block_argument_spec.rb +0 -231
- data/spec/rubocop/cop/lint/unused_method_argument_spec.rb +0 -278
- data/spec/rubocop/cop/lint/useless_access_modifier_spec.rb +0 -192
- data/spec/rubocop/cop/lint/useless_assignment_spec.rb +0 -1778
- data/spec/rubocop/cop/lint/useless_comparison_spec.rb +0 -30
- data/spec/rubocop/cop/lint/useless_else_without_rescue_spec.rb +0 -48
- data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +0 -211
- data/spec/rubocop/cop/lint/void_spec.rb +0 -64
- data/spec/rubocop/cop/metrics/abc_size_spec.rb +0 -109
- data/spec/rubocop/cop/metrics/block_nesting_spec.rb +0 -156
- data/spec/rubocop/cop/metrics/class_length_spec.rb +0 -131
- data/spec/rubocop/cop/metrics/cyclomatic_complexity_spec.rb +0 -204
- data/spec/rubocop/cop/metrics/line_length_spec.rb +0 -136
- data/spec/rubocop/cop/metrics/method_length_spec.rb +0 -147
- data/spec/rubocop/cop/metrics/parameter_lists_spec.rb +0 -44
- data/spec/rubocop/cop/metrics/perceived_complexity_spec.rb +0 -222
- data/spec/rubocop/cop/offense_spec.rb +0 -133
- data/spec/rubocop/cop/rails/action_filter_spec.rb +0 -64
- data/spec/rubocop/cop/rails/default_scope_spec.rb +0 -37
- data/spec/rubocop/cop/rails/delegate_spec.rb +0 -177
- data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +0 -13
- data/spec/rubocop/cop/rails/output_spec.rb +0 -37
- data/spec/rubocop/cop/rails/read_write_attribute_spec.rb +0 -130
- data/spec/rubocop/cop/rails/scope_args_spec.rb +0 -25
- data/spec/rubocop/cop/rails/validation_spec.rb +0 -28
- data/spec/rubocop/cop/severity_spec.rb +0 -113
- data/spec/rubocop/cop/style/access_modifier_indentation_spec.rb +0 -421
- data/spec/rubocop/cop/style/accessor_method_name_spec.rb +0 -81
- data/spec/rubocop/cop/style/alias_spec.rb +0 -59
- data/spec/rubocop/cop/style/align_array_spec.rb +0 -123
- data/spec/rubocop/cop/style/align_hash_spec.rb +0 -411
- data/spec/rubocop/cop/style/align_parameters_spec.rb +0 -431
- data/spec/rubocop/cop/style/and_or_spec.rb +0 -235
- data/spec/rubocop/cop/style/array_join_spec.rb +0 -29
- data/spec/rubocop/cop/style/ascii_comments_spec.rb +0 -21
- data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +0 -36
- data/spec/rubocop/cop/style/attr_spec.rb +0 -29
- data/spec/rubocop/cop/style/bare_percent_literals_spec.rb +0 -132
- data/spec/rubocop/cop/style/begin_block_spec.rb +0 -13
- data/spec/rubocop/cop/style/block_comments_spec.rb +0 -45
- data/spec/rubocop/cop/style/block_end_newline_spec.rb +0 -61
- data/spec/rubocop/cop/style/blocks_spec.rb +0 -121
- data/spec/rubocop/cop/style/braces_around_hash_parameters_spec.rb +0 -288
- data/spec/rubocop/cop/style/case_equality_spec.rb +0 -13
- data/spec/rubocop/cop/style/case_indentation_spec.rb +0 -293
- data/spec/rubocop/cop/style/character_literal_spec.rb +0 -37
- data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +0 -40
- data/spec/rubocop/cop/style/class_and_module_children_spec.rb +0 -133
- data/spec/rubocop/cop/style/class_check_spec.rb +0 -41
- data/spec/rubocop/cop/style/class_methods_spec.rb +0 -80
- data/spec/rubocop/cop/style/class_vars_spec.rb +0 -19
- data/spec/rubocop/cop/style/collection_methods_spec.rb +0 -48
- data/spec/rubocop/cop/style/colon_method_call_spec.rb +0 -65
- data/spec/rubocop/cop/style/comment_annotation_spec.rb +0 -86
- data/spec/rubocop/cop/style/comment_indentation_spec.rb +0 -179
- data/spec/rubocop/cop/style/constant_name_spec.rb +0 -65
- data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +0 -43
- data/spec/rubocop/cop/style/deprecated_hash_methods_spec.rb +0 -45
- data/spec/rubocop/cop/style/documentation_spec.rb +0 -146
- data/spec/rubocop/cop/style/dot_position_spec.rb +0 -132
- data/spec/rubocop/cop/style/double_negation_spec.rb +0 -22
- data/spec/rubocop/cop/style/each_with_object_spec.rb +0 -73
- data/spec/rubocop/cop/style/else_alignment_spec.rb +0 -506
- data/spec/rubocop/cop/style/empty_else_spec.rb +0 -100
- data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +0 -135
- data/spec/rubocop/cop/style/empty_lines_around_access_modifier_spec.rb +0 -178
- data/spec/rubocop/cop/style/empty_lines_around_block_body_spec.rb +0 -103
- data/spec/rubocop/cop/style/empty_lines_around_class_body_spec.rb +0 -135
- data/spec/rubocop/cop/style/empty_lines_around_method_body_spec.rb +0 -90
- data/spec/rubocop/cop/style/empty_lines_around_module_body_spec.rb +0 -79
- data/spec/rubocop/cop/style/empty_lines_spec.rb +0 -51
- data/spec/rubocop/cop/style/empty_literal_spec.rb +0 -117
- data/spec/rubocop/cop/style/encoding_spec.rb +0 -139
- data/spec/rubocop/cop/style/end_block_spec.rb +0 -13
- data/spec/rubocop/cop/style/end_of_line_spec.rb +0 -65
- data/spec/rubocop/cop/style/even_odd_spec.rb +0 -164
- data/spec/rubocop/cop/style/extra_spacing_spec.rb +0 -68
- data/spec/rubocop/cop/style/file_name_spec.rb +0 -84
- data/spec/rubocop/cop/style/first_parameter_indentation_spec.rb +0 -304
- data/spec/rubocop/cop/style/flip_flop_spec.rb +0 -23
- data/spec/rubocop/cop/style/for_spec.rb +0 -105
- data/spec/rubocop/cop/style/format_string_spec.rb +0 -184
- data/spec/rubocop/cop/style/global_vars_spec.rb +0 -34
- data/spec/rubocop/cop/style/guard_clause_spec.rb +0 -172
- data/spec/rubocop/cop/style/hash_syntax_spec.rb +0 -137
- data/spec/rubocop/cop/style/if_unless_modifier_spec.rb +0 -146
- data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +0 -24
- data/spec/rubocop/cop/style/indent_array_spec.rb +0 -173
- data/spec/rubocop/cop/style/indent_hash_spec.rb +0 -367
- data/spec/rubocop/cop/style/indentation_consistency_spec.rb +0 -509
- data/spec/rubocop/cop/style/indentation_width_spec.rb +0 -885
- data/spec/rubocop/cop/style/infinite_loop_spec.rb +0 -48
- data/spec/rubocop/cop/style/inline_comment_spec.rb +0 -13
- data/spec/rubocop/cop/style/lambda_call_spec.rb +0 -65
- data/spec/rubocop/cop/style/lambda_spec.rb +0 -76
- data/spec/rubocop/cop/style/leading_comment_space_spec.rb +0 -64
- data/spec/rubocop/cop/style/line_end_concatenation_spec.rb +0 -184
- data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +0 -59
- data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +0 -60
- data/spec/rubocop/cop/style/method_def_parentheses_spec.rb +0 -108
- data/spec/rubocop/cop/style/method_name_spec.rb +0 -125
- data/spec/rubocop/cop/style/module_function_spec.rb +0 -24
- data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +0 -78
- data/spec/rubocop/cop/style/multiline_block_layout_spec.rb +0 -199
- data/spec/rubocop/cop/style/multiline_if_then_spec.rb +0 -134
- data/spec/rubocop/cop/style/multiline_operation_indentation_spec.rb +0 -464
- data/spec/rubocop/cop/style/multiline_ternary_operator_spec.rb +0 -18
- data/spec/rubocop/cop/style/negated_if_spec.rb +0 -102
- data/spec/rubocop/cop/style/negated_while_spec.rb +0 -64
- data/spec/rubocop/cop/style/nested_ternary_operator_spec.rb +0 -21
- data/spec/rubocop/cop/style/next_spec.rb +0 -301
- data/spec/rubocop/cop/style/nil_comparison_spec.rb +0 -29
- data/spec/rubocop/cop/style/non_nil_check_spec.rb +0 -132
- data/spec/rubocop/cop/style/not_spec.rb +0 -28
- data/spec/rubocop/cop/style/numeric_literals_spec.rb +0 -80
- data/spec/rubocop/cop/style/one_line_conditional_spec.rb +0 -13
- data/spec/rubocop/cop/style/op_method_spec.rb +0 -85
- data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +0 -161
- data/spec/rubocop/cop/style/percent_literal_delimiters_spec.rb +0 -316
- data/spec/rubocop/cop/style/percent_q_literals_spec.rb +0 -122
- data/spec/rubocop/cop/style/perl_backrefs_spec.rb +0 -22
- data/spec/rubocop/cop/style/predicate_name_spec.rb +0 -57
- data/spec/rubocop/cop/style/proc_spec.rb +0 -27
- data/spec/rubocop/cop/style/raise_args_spec.rb +0 -87
- data/spec/rubocop/cop/style/redundant_begin_spec.rb +0 -121
- data/spec/rubocop/cop/style/redundant_exception_spec.rb +0 -59
- data/spec/rubocop/cop/style/redundant_return_spec.rb +0 -171
- data/spec/rubocop/cop/style/redundant_self_spec.rb +0 -186
- data/spec/rubocop/cop/style/regexp_literal_spec.rb +0 -188
- data/spec/rubocop/cop/style/rescue_modifier_spec.rb +0 -116
- data/spec/rubocop/cop/style/self_assignment_spec.rb +0 -49
- data/spec/rubocop/cop/style/semicolon_spec.rb +0 -114
- data/spec/rubocop/cop/style/signal_exception_spec.rb +0 -289
- data/spec/rubocop/cop/style/single_line_block_params_spec.rb +0 -82
- data/spec/rubocop/cop/style/single_line_methods_spec.rb +0 -94
- data/spec/rubocop/cop/style/single_space_before_first_arg_spec.rb +0 -63
- data/spec/rubocop/cop/style/space_after_colon_spec.rb +0 -55
- data/spec/rubocop/cop/style/space_after_comma_spec.rb +0 -30
- data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +0 -84
- data/spec/rubocop/cop/style/space_after_method_name_spec.rb +0 -70
- data/spec/rubocop/cop/style/space_after_not_spec.rb +0 -22
- data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +0 -23
- data/spec/rubocop/cop/style/space_around_block_parameters_spec.rb +0 -155
- data/spec/rubocop/cop/style/space_around_equals_in_parameter_default_spec.rb +0 -95
- data/spec/rubocop/cop/style/space_around_operators_spec.rb +0 -330
- data/spec/rubocop/cop/style/space_before_block_braces_spec.rb +0 -73
- data/spec/rubocop/cop/style/space_before_comma_spec.rb +0 -42
- data/spec/rubocop/cop/style/space_before_comment_spec.rb +0 -34
- data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +0 -70
- data/spec/rubocop/cop/style/space_before_semicolon_spec.rb +0 -28
- data/spec/rubocop/cop/style/space_inside_block_braces_spec.rb +0 -317
- data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +0 -83
- data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +0 -147
- data/spec/rubocop/cop/style/space_inside_parens_spec.rb +0 -44
- data/spec/rubocop/cop/style/space_inside_range_literal_spec.rb +0 -64
- data/spec/rubocop/cop/style/special_global_vars_spec.rb +0 -62
- data/spec/rubocop/cop/style/string_literals_in_interpolation_spec.rb +0 -99
- data/spec/rubocop/cop/style/string_literals_spec.rb +0 -228
- data/spec/rubocop/cop/style/struct_inheritance_spec.rb +0 -44
- data/spec/rubocop/cop/style/symbol_array_spec.rb +0 -37
- data/spec/rubocop/cop/style/symbol_proc_spec.rb +0 -100
- data/spec/rubocop/cop/style/tab_spec.rb +0 -47
- data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +0 -83
- data/spec/rubocop/cop/style/trailing_comma_spec.rb +0 -390
- data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +0 -31
- data/spec/rubocop/cop/style/trivial_accessors_spec.rb +0 -558
- data/spec/rubocop/cop/style/unless_else_spec.rb +0 -23
- data/spec/rubocop/cop/style/unneeded_capital_w_spec.rb +0 -90
- data/spec/rubocop/cop/style/unneeded_percent_q_spec.rb +0 -127
- data/spec/rubocop/cop/style/unneeded_percent_x_spec.rb +0 -34
- data/spec/rubocop/cop/style/variable_interpolation_spec.rb +0 -76
- data/spec/rubocop/cop/style/variable_name_spec.rb +0 -107
- data/spec/rubocop/cop/style/when_then_spec.rb +0 -42
- data/spec/rubocop/cop/style/while_until_do_spec.rb +0 -55
- data/spec/rubocop/cop/style/while_until_modifier_spec.rb +0 -93
- data/spec/rubocop/cop/style/word_array_spec.rb +0 -117
- data/spec/rubocop/cop/team_spec.rb +0 -190
- data/spec/rubocop/cop/util_spec.rb +0 -102
- data/spec/rubocop/cop/variable_force/assignment_spec.rb +0 -200
- data/spec/rubocop/cop/variable_force/locatable_spec.rb +0 -699
- data/spec/rubocop/cop/variable_force/reference_spec.rb +0 -19
- data/spec/rubocop/cop/variable_force/scope_spec.rb +0 -319
- data/spec/rubocop/cop/variable_force/variable_spec.rb +0 -59
- data/spec/rubocop/cop/variable_force/variable_table_spec.rb +0 -276
- data/spec/rubocop/cop/variable_force_spec.rb +0 -26
- data/spec/rubocop/formatter/base_formatter_spec.rb +0 -191
- data/spec/rubocop/formatter/clang_style_formatter_spec.rb +0 -114
- data/spec/rubocop/formatter/colorizable_spec.rb +0 -107
- data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +0 -50
- data/spec/rubocop/formatter/disabled_lines_formatter_spec.rb +0 -67
- data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +0 -63
- data/spec/rubocop/formatter/file_list_formatter_spec.rb +0 -33
- data/spec/rubocop/formatter/formatter_set_spec.rb +0 -141
- data/spec/rubocop/formatter/fuubar_style_formatter_spec.rb +0 -129
- data/spec/rubocop/formatter/html_formatter_spec.rb +0 -48
- data/spec/rubocop/formatter/json_formatter_spec.rb +0 -152
- data/spec/rubocop/formatter/offense_count_formatter_spec.rb +0 -75
- data/spec/rubocop/formatter/progress_formatter_spec.rb +0 -182
- data/spec/rubocop/formatter/simple_text_formatter_spec.rb +0 -135
- data/spec/rubocop/formatter/text_util_spec.rb +0 -55
- data/spec/rubocop/options_spec.rb +0 -181
- data/spec/rubocop/path_util_spec.rb +0 -77
- data/spec/rubocop/processed_source_spec.rb +0 -184
- data/spec/rubocop/rake_task_spec.rb +0 -122
- data/spec/rubocop/runner_spec.rb +0 -99
- data/spec/rubocop/string_util_spec.rb +0 -46
- data/spec/rubocop/target_finder_spec.rb +0 -245
- data/spec/rubocop/token_spec.rb +0 -29
- data/spec/spec_helper.rb +0 -39
- data/spec/support/cop_helper.rb +0 -75
- data/spec/support/cops/class_must_be_a_module_cop.rb +0 -19
- data/spec/support/cops/module_must_be_a_class_cop.rb +0 -19
- data/spec/support/coverage.rb +0 -15
- data/spec/support/custom_matchers.rb +0 -58
- data/spec/support/file_helper.rb +0 -23
- data/spec/support/jruby_workaround.rb +0 -15
- data/spec/support/mri_syntax_checker.rb +0 -73
- data/spec/support/shared_contexts.rb +0 -53
- data/spec/support/shared_examples.rb +0 -55
- data/spec/support/statement_modifier_helper.rb +0 -41
@@ -1,199 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::MultilineBlockLayout do
|
6
|
-
subject(:cop) { described_class.new }
|
7
|
-
|
8
|
-
it 'registers an offense for missing newline in do/end block w/o params' do
|
9
|
-
inspect_source(cop,
|
10
|
-
['test do foo',
|
11
|
-
'end'
|
12
|
-
])
|
13
|
-
expect(cop.messages)
|
14
|
-
.to eq(['Block body expression is on the same line as the block start.'])
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'registers an offense for missing newline in {} block w/o params' do
|
18
|
-
inspect_source(cop,
|
19
|
-
['test { foo',
|
20
|
-
'}'
|
21
|
-
])
|
22
|
-
expect(cop.messages)
|
23
|
-
.to eq(['Block body expression is on the same line as the block start.'])
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'registers an offense for missing newline in do/end block with params' do
|
27
|
-
inspect_source(cop,
|
28
|
-
['test do |x| foo',
|
29
|
-
'end'
|
30
|
-
])
|
31
|
-
expect(cop.messages)
|
32
|
-
.to eq(['Block body expression is on the same line as the block start.'])
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'registers an offense for missing newline in {} block with params' do
|
36
|
-
inspect_source(cop,
|
37
|
-
['test { |x| foo',
|
38
|
-
'}'
|
39
|
-
])
|
40
|
-
expect(cop.messages)
|
41
|
-
.to eq(['Block body expression is on the same line as the block start.'])
|
42
|
-
end
|
43
|
-
|
44
|
-
it 'does not register an offense for one-line do/end blocks' do
|
45
|
-
inspect_source(cop, 'test do foo end')
|
46
|
-
expect(cop.offenses).to be_empty
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'does not register an offense for one-line {} blocks' do
|
50
|
-
inspect_source(cop, 'test { foo }')
|
51
|
-
expect(cop.offenses).to be_empty
|
52
|
-
end
|
53
|
-
|
54
|
-
it 'does not register offenses when there is a newline for do/end block' do
|
55
|
-
inspect_source(cop,
|
56
|
-
['test do',
|
57
|
-
' foo',
|
58
|
-
'end'
|
59
|
-
])
|
60
|
-
expect(cop.offenses).to be_empty
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'does not error out when the block is empty' do
|
64
|
-
inspect_source(cop,
|
65
|
-
['test do |x|',
|
66
|
-
'end'
|
67
|
-
])
|
68
|
-
expect(cop.offenses).to be_empty
|
69
|
-
end
|
70
|
-
|
71
|
-
it 'does not register offenses when there is a newline for {} block' do
|
72
|
-
inspect_source(cop,
|
73
|
-
['test {',
|
74
|
-
' foo',
|
75
|
-
'}'
|
76
|
-
])
|
77
|
-
expect(cop.offenses).to be_empty
|
78
|
-
end
|
79
|
-
|
80
|
-
it 'registers offenses for lambdas as expected' do
|
81
|
-
inspect_source(cop,
|
82
|
-
['-> (x) do foo',
|
83
|
-
' bar',
|
84
|
-
'end'
|
85
|
-
])
|
86
|
-
expect(cop.messages)
|
87
|
-
.to eq(['Block body expression is on the same line as the block start.'])
|
88
|
-
end
|
89
|
-
|
90
|
-
it 'registers an offense for line-break before arguments' do
|
91
|
-
inspect_source(cop,
|
92
|
-
['test do',
|
93
|
-
' |x| play_with(x)',
|
94
|
-
'end'])
|
95
|
-
expect(cop.messages)
|
96
|
-
.to eq(['Block argument expression is not on the same line as the ' \
|
97
|
-
'block start.'])
|
98
|
-
end
|
99
|
-
|
100
|
-
it 'registers an offense for line-break before arguments with empty block' do
|
101
|
-
inspect_source(cop,
|
102
|
-
['test do',
|
103
|
-
' |x|',
|
104
|
-
'end'])
|
105
|
-
expect(cop.messages)
|
106
|
-
.to eq(['Block argument expression is not on the same line as the ' \
|
107
|
-
'block start.'])
|
108
|
-
end
|
109
|
-
|
110
|
-
it 'registers an offense for line-break within arguments' do
|
111
|
-
inspect_source(cop,
|
112
|
-
['test do |x,',
|
113
|
-
' y|',
|
114
|
-
'end'])
|
115
|
-
expect(cop.messages)
|
116
|
-
.to eq(['Block argument expression is not on the same line as the ' \
|
117
|
-
'block start.'])
|
118
|
-
end
|
119
|
-
|
120
|
-
it 'auto-corrects a do/end block with params that is missing newlines' do
|
121
|
-
src = ['test do |foo| bar',
|
122
|
-
'end']
|
123
|
-
|
124
|
-
new_source = autocorrect_source(cop, src)
|
125
|
-
|
126
|
-
expect(new_source).to eq(['test do |foo| ',
|
127
|
-
' bar',
|
128
|
-
'end'].join("\n"))
|
129
|
-
end
|
130
|
-
|
131
|
-
it 'auto-corrects a do/end block with a mult-line body' do
|
132
|
-
src = ['test do |foo| bar',
|
133
|
-
' test',
|
134
|
-
'end']
|
135
|
-
|
136
|
-
new_source = autocorrect_source(cop, src)
|
137
|
-
|
138
|
-
expect(new_source).to eq(['test do |foo| ',
|
139
|
-
' bar',
|
140
|
-
' test',
|
141
|
-
'end'].join("\n"))
|
142
|
-
end
|
143
|
-
|
144
|
-
it 'auto-corrects a {} block with params that is missing newlines' do
|
145
|
-
src = ['test { |foo| bar',
|
146
|
-
'}']
|
147
|
-
|
148
|
-
new_source = autocorrect_source(cop, src)
|
149
|
-
|
150
|
-
expect(new_source).to eq(['test { |foo| ',
|
151
|
-
' bar',
|
152
|
-
'}'].join("\n"))
|
153
|
-
end
|
154
|
-
|
155
|
-
it 'autocorrects in more complex case with lambda and assignment, and '\
|
156
|
-
'aligns the next line two spaces out from the start of the block' do
|
157
|
-
src = ['x = -> (y) { foo',
|
158
|
-
' bar',
|
159
|
-
'}']
|
160
|
-
|
161
|
-
new_source = autocorrect_source(cop, src)
|
162
|
-
|
163
|
-
expect(new_source).to eq(['x = -> (y) { ',
|
164
|
-
' foo',
|
165
|
-
' bar',
|
166
|
-
'}'].join("\n"))
|
167
|
-
end
|
168
|
-
|
169
|
-
it 'auto-corrects a line-break before arguments' do
|
170
|
-
new_source = autocorrect_source(cop,
|
171
|
-
['test do',
|
172
|
-
' |x| play_with(x)',
|
173
|
-
'end'])
|
174
|
-
|
175
|
-
expect(new_source).to eq(['test do |x|',
|
176
|
-
' play_with(x)',
|
177
|
-
'end'].join("\n"))
|
178
|
-
end
|
179
|
-
|
180
|
-
it 'auto-corrects a line-break before arguments with empty block' do
|
181
|
-
new_source = autocorrect_source(cop,
|
182
|
-
['test do',
|
183
|
-
' |x|',
|
184
|
-
'end'])
|
185
|
-
|
186
|
-
expect(new_source).to eq(['test do |x|',
|
187
|
-
'end'].join("\n"))
|
188
|
-
end
|
189
|
-
|
190
|
-
it 'auto-corrects a line-break within arguments' do
|
191
|
-
new_source = autocorrect_source(cop,
|
192
|
-
['test do |x,',
|
193
|
-
' y| play_with(x, y)',
|
194
|
-
'end'])
|
195
|
-
expect(new_source).to eq(['test do |x, y|',
|
196
|
-
' play_with(x, y)',
|
197
|
-
'end'].join("\n"))
|
198
|
-
end
|
199
|
-
end
|
@@ -1,134 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::MultilineIfThen do
|
6
|
-
subject(:cop) { described_class.new }
|
7
|
-
|
8
|
-
# if
|
9
|
-
|
10
|
-
it 'does not get confused by empty elsif branch' do
|
11
|
-
inspect_source(cop, ['if cond',
|
12
|
-
'elsif cond',
|
13
|
-
'end'])
|
14
|
-
expect(cop.offenses).to be_empty
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'registers an offense for then in multiline if' do
|
18
|
-
inspect_source(cop, ['if cond then',
|
19
|
-
'end',
|
20
|
-
"if cond then\t",
|
21
|
-
'end',
|
22
|
-
'if cond then ',
|
23
|
-
'end',
|
24
|
-
'if cond',
|
25
|
-
'then',
|
26
|
-
'end',
|
27
|
-
'if cond then # bad',
|
28
|
-
'end'])
|
29
|
-
expect(cop.offenses.map(&:line)).to eq([1, 3, 5, 8, 10])
|
30
|
-
expect(cop.highlights).to eq(['then'] * 5)
|
31
|
-
expect(cop.messages).to eq(['Do not use `then` for multi-line `if`.'] * 5)
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'registers an offense for then in multiline elsif' do
|
35
|
-
inspect_source(cop, ['if cond1',
|
36
|
-
' a',
|
37
|
-
'elsif cond2 then',
|
38
|
-
' b',
|
39
|
-
'end'])
|
40
|
-
expect(cop.offenses.map(&:line)).to eq([3])
|
41
|
-
expect(cop.highlights).to eq(['then'])
|
42
|
-
expect(cop.messages).to eq(['Do not use `then` for multi-line `elsif`.'])
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'accepts multiline if without then' do
|
46
|
-
inspect_source(cop, ['if cond',
|
47
|
-
'end'])
|
48
|
-
expect(cop.offenses).to be_empty
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'accepts table style if/then/elsif/ends' do
|
52
|
-
inspect_source(cop,
|
53
|
-
['if @io == $stdout then str << "$stdout"',
|
54
|
-
'elsif @io == $stdin then str << "$stdin"',
|
55
|
-
'elsif @io == $stderr then str << "$stderr"',
|
56
|
-
'else str << @io.class.to_s',
|
57
|
-
'end'])
|
58
|
-
expect(cop.offenses).to be_empty
|
59
|
-
end
|
60
|
-
|
61
|
-
it 'does not get confused by a then in a when' do
|
62
|
-
inspect_source(cop,
|
63
|
-
['if a',
|
64
|
-
' case b',
|
65
|
-
' when c then',
|
66
|
-
' end',
|
67
|
-
'end'])
|
68
|
-
expect(cop.offenses).to be_empty
|
69
|
-
end
|
70
|
-
|
71
|
-
it 'does not get confused by a commented-out then' do
|
72
|
-
inspect_source(cop,
|
73
|
-
['if a # then',
|
74
|
-
' b',
|
75
|
-
'end',
|
76
|
-
'if c # then',
|
77
|
-
'end'])
|
78
|
-
expect(cop.offenses).to be_empty
|
79
|
-
end
|
80
|
-
|
81
|
-
it 'does not raise an error for an implicit match if' do
|
82
|
-
expect do
|
83
|
-
inspect_source(cop,
|
84
|
-
['if //',
|
85
|
-
'end'])
|
86
|
-
end.not_to raise_error
|
87
|
-
end
|
88
|
-
|
89
|
-
# unless
|
90
|
-
|
91
|
-
it 'registers an offense for then in multiline unless' do
|
92
|
-
inspect_source(cop, ['unless cond then',
|
93
|
-
'end'])
|
94
|
-
expect(cop.messages).to eq(
|
95
|
-
['Do not use `then` for multi-line `unless`.'])
|
96
|
-
end
|
97
|
-
|
98
|
-
it 'accepts multiline unless without then' do
|
99
|
-
inspect_source(cop, ['unless cond',
|
100
|
-
'end'])
|
101
|
-
expect(cop.offenses).to be_empty
|
102
|
-
end
|
103
|
-
|
104
|
-
it 'does not get confused by a postfix unless' do
|
105
|
-
inspect_source(cop, 'two unless one')
|
106
|
-
expect(cop.offenses).to be_empty
|
107
|
-
end
|
108
|
-
|
109
|
-
it 'does not get confused by a nested postfix unless' do
|
110
|
-
inspect_source(cop,
|
111
|
-
['if two',
|
112
|
-
' puts 1',
|
113
|
-
'end unless two'
|
114
|
-
])
|
115
|
-
expect(cop.offenses).to be_empty
|
116
|
-
end
|
117
|
-
|
118
|
-
it 'does not raise an error for an implicit match unless' do
|
119
|
-
expect do
|
120
|
-
inspect_source(cop,
|
121
|
-
['unless //',
|
122
|
-
'end'])
|
123
|
-
end.not_to raise_error
|
124
|
-
end
|
125
|
-
|
126
|
-
it 'auto-corrects the usage of "then" in multiline if' do
|
127
|
-
new_source = autocorrect_source(cop, ['if cond then',
|
128
|
-
' something',
|
129
|
-
'end'])
|
130
|
-
expect(new_source).to eq(['if cond',
|
131
|
-
' something',
|
132
|
-
'end'].join("\n"))
|
133
|
-
end
|
134
|
-
end
|
@@ -1,464 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::MultilineOperationIndentation do
|
6
|
-
subject(:cop) { described_class.new(config) }
|
7
|
-
let(:config) do
|
8
|
-
merged = RuboCop::ConfigLoader
|
9
|
-
.default_configuration['Style/MultilineOperationIndentation']
|
10
|
-
.merge(cop_config)
|
11
|
-
RuboCop::Config
|
12
|
-
.new('Style/MultilineOperationIndentation' => merged,
|
13
|
-
'Style/IndentationWidth' => { 'Width' => indentation_width })
|
14
|
-
end
|
15
|
-
let(:indentation_width) { 2 }
|
16
|
-
|
17
|
-
shared_examples 'common' do
|
18
|
-
it 'accepts indented operands in ordinary statement' do
|
19
|
-
inspect_source(cop,
|
20
|
-
['a +',
|
21
|
-
' b'])
|
22
|
-
expect(cop.messages).to be_empty
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'registers an offense for no indentation of second line' do
|
26
|
-
inspect_source(cop,
|
27
|
-
['a +',
|
28
|
-
'b'])
|
29
|
-
expect(cop.messages).to eq(['Use 2 (not 0) spaces for indenting an ' \
|
30
|
-
'expression spanning multiple lines.'])
|
31
|
-
expect(cop.highlights).to eq(['b'])
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'registers an offense for one space indentation of second line' do
|
35
|
-
inspect_source(cop,
|
36
|
-
['a',
|
37
|
-
' .b'])
|
38
|
-
expect(cop.messages).to eq(['Use 2 (not 1) spaces for indenting an ' \
|
39
|
-
'expression spanning multiple lines.'])
|
40
|
-
expect(cop.highlights).to eq(['.b'])
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'registers an offense for proc call without a selector' do
|
44
|
-
inspect_source(cop,
|
45
|
-
['a',
|
46
|
-
' .(args)'])
|
47
|
-
expect(cop.messages).to eq(['Use 2 (not 1) spaces for indenting an ' \
|
48
|
-
'expression spanning multiple lines.'])
|
49
|
-
expect(cop.highlights).to eq(['.('])
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'registers an offense for three spaces indentation of second line' do
|
53
|
-
inspect_source(cop,
|
54
|
-
['a ||',
|
55
|
-
' b',
|
56
|
-
'c and',
|
57
|
-
' d'])
|
58
|
-
expect(cop.messages).to eq(['Use 2 (not 3) spaces for indenting an ' \
|
59
|
-
'expression spanning multiple lines.'] * 2)
|
60
|
-
expect(cop.highlights).to eq(%w(b d))
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'registers an offense for extra indentation of third line' do
|
64
|
-
inspect_source(cop,
|
65
|
-
[' a ||',
|
66
|
-
' b ||',
|
67
|
-
' c'])
|
68
|
-
expect(cop.messages).to eq(['Use 2 (not 4) spaces for indenting an ' \
|
69
|
-
'expression spanning multiple lines.'])
|
70
|
-
expect(cop.highlights).to eq(['c'])
|
71
|
-
end
|
72
|
-
|
73
|
-
it 'registers an offense for the emacs ruby-mode 1.1 indentation of an ' \
|
74
|
-
'expression in an array' do
|
75
|
-
inspect_source(cop,
|
76
|
-
[' [',
|
77
|
-
' a +',
|
78
|
-
' b',
|
79
|
-
' ]'])
|
80
|
-
expect(cop.messages).to eq(['Use 2 (not 0) spaces for indenting an ' \
|
81
|
-
'expression spanning multiple lines.'])
|
82
|
-
expect(cop.highlights).to eq(['b'])
|
83
|
-
end
|
84
|
-
|
85
|
-
it 'accepts two spaces indentation of second line' do
|
86
|
-
inspect_source(cop,
|
87
|
-
[' a ||',
|
88
|
-
' b'])
|
89
|
-
expect(cop.messages).to be_empty
|
90
|
-
end
|
91
|
-
|
92
|
-
it 'accepts no extra indentation of third line' do
|
93
|
-
inspect_source(cop,
|
94
|
-
[' a &&',
|
95
|
-
' b &&',
|
96
|
-
' c'])
|
97
|
-
expect(cop.messages).to be_empty
|
98
|
-
end
|
99
|
-
|
100
|
-
it 'accepts indented operands in for body' do
|
101
|
-
inspect_source(cop,
|
102
|
-
['for x in a',
|
103
|
-
' something &&',
|
104
|
-
' something_else',
|
105
|
-
'end'])
|
106
|
-
expect(cop.highlights).to be_empty
|
107
|
-
end
|
108
|
-
|
109
|
-
it 'accepts alignment inside a grouped expression' do
|
110
|
-
inspect_source(cop,
|
111
|
-
['(a +',
|
112
|
-
' b)'])
|
113
|
-
expect(cop.messages).to be_empty
|
114
|
-
end
|
115
|
-
|
116
|
-
it 'accepts an expression where the first operand spans multiple lines' do
|
117
|
-
inspect_source(cop,
|
118
|
-
['subject.each do |item|',
|
119
|
-
' result = resolve(locale) and return result',
|
120
|
-
'end and nil'])
|
121
|
-
expect(cop.messages).to be_empty
|
122
|
-
end
|
123
|
-
|
124
|
-
it 'registers an offense for badly indented operands in chained ' \
|
125
|
-
'method call' do
|
126
|
-
inspect_source(cop,
|
127
|
-
['Foo',
|
128
|
-
'.a',
|
129
|
-
' .b'])
|
130
|
-
expect(cop.messages).to eq(['Use 2 (not 0) spaces for indenting an ' \
|
131
|
-
'expression spanning multiple lines.'])
|
132
|
-
expect(cop.highlights).to eq(['.a'])
|
133
|
-
end
|
134
|
-
|
135
|
-
it 'registers an offense for badly indented operands in chained ' \
|
136
|
-
'method call' do
|
137
|
-
inspect_source(cop,
|
138
|
-
['Foo',
|
139
|
-
'.a',
|
140
|
-
' .b(c)'])
|
141
|
-
expect(cop.messages).to eq(['Use 2 (not 0) spaces for indenting an ' \
|
142
|
-
'expression spanning multiple lines.'])
|
143
|
-
expect(cop.highlights).to eq(['.a'])
|
144
|
-
end
|
145
|
-
|
146
|
-
it 'accepts even indentation of consecutive lines in typical RSpec code' do
|
147
|
-
inspect_source(cop,
|
148
|
-
['expect { Foo.new }.',
|
149
|
-
' to change { Bar.count }.',
|
150
|
-
' from(1).to(2)'])
|
151
|
-
expect(cop.messages).to be_empty
|
152
|
-
end
|
153
|
-
|
154
|
-
it 'accepts any indentation of parameters to #[]' do
|
155
|
-
inspect_source(cop,
|
156
|
-
['payment = Models::IncomingPayments[',
|
157
|
-
" id: input['incoming-payment-id'],",
|
158
|
-
' user_id: @user[:id]]'])
|
159
|
-
expect(cop.messages).to be_empty
|
160
|
-
end
|
161
|
-
|
162
|
-
it 'registers an offense for extra indentation of 3rd line in typical ' \
|
163
|
-
'RSpec code' do
|
164
|
-
inspect_source(cop,
|
165
|
-
['expect { Foo.new }.',
|
166
|
-
' to change { Bar.count }.',
|
167
|
-
' from(1).to(2)'])
|
168
|
-
expect(cop.messages).to eq(['Use 2 (not 6) spaces for indenting an ' \
|
169
|
-
'expression spanning multiple lines.'])
|
170
|
-
end
|
171
|
-
end
|
172
|
-
|
173
|
-
context 'when EnforcedStyle is aligned' do
|
174
|
-
let(:cop_config) { { 'EnforcedStyle' => 'aligned' } }
|
175
|
-
|
176
|
-
include_examples 'common'
|
177
|
-
|
178
|
-
it 'accepts aligned operands in if condition' do
|
179
|
-
inspect_source(cop,
|
180
|
-
['if a +',
|
181
|
-
' b',
|
182
|
-
' something',
|
183
|
-
'end'])
|
184
|
-
expect(cop.messages).to be_empty
|
185
|
-
end
|
186
|
-
|
187
|
-
it 'registers an offense for misaligned operands in if condition' do
|
188
|
-
inspect_source(cop,
|
189
|
-
['if a +',
|
190
|
-
' b',
|
191
|
-
' something',
|
192
|
-
'end'])
|
193
|
-
expect(cop.messages).to eq(['Align the operands of a condition in an ' \
|
194
|
-
'`if` statement spanning multiple lines.'])
|
195
|
-
expect(cop.highlights).to eq(['b'])
|
196
|
-
expect(cop.config_to_allow_offenses).to eq('EnforcedStyle' => 'indented')
|
197
|
-
end
|
198
|
-
|
199
|
-
it 'registers an offense for misaligned string operand when the first ' \
|
200
|
-
'operand has backslash continuation' do
|
201
|
-
inspect_source(cop,
|
202
|
-
["flash[:error] = 'Here is a string ' \\",
|
203
|
-
" 'That spans' <<",
|
204
|
-
" 'multiple lines'"])
|
205
|
-
expect(cop.messages).to eq(['Align the operands of an expression in an ' \
|
206
|
-
'assignment spanning multiple lines.'])
|
207
|
-
expect(cop.highlights).to eq(["'multiple lines'"])
|
208
|
-
end
|
209
|
-
|
210
|
-
it 'registers an offense for misaligned string operand when plus is used' do
|
211
|
-
inspect_source(cop,
|
212
|
-
["flash[:error] = 'Here is a string ' +",
|
213
|
-
" 'That spans' <<",
|
214
|
-
" 'multiple lines'"])
|
215
|
-
expect(cop.messages).to eq(['Align the operands of an expression in an ' \
|
216
|
-
'assignment spanning multiple lines.'])
|
217
|
-
expect(cop.highlights).to eq(["'multiple lines'"])
|
218
|
-
end
|
219
|
-
|
220
|
-
it 'registers an offense for misaligned operands in unless condition' do
|
221
|
-
inspect_source(cop,
|
222
|
-
['unless a',
|
223
|
-
' .b',
|
224
|
-
' something',
|
225
|
-
'end'])
|
226
|
-
expect(cop.messages).to eq(['Align the operands of a condition in an ' \
|
227
|
-
'`unless` statement spanning multiple ' \
|
228
|
-
'lines.'])
|
229
|
-
expect(cop.highlights).to eq(['.b'])
|
230
|
-
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
|
231
|
-
end
|
232
|
-
|
233
|
-
it 'registers an offense for misaligned operands in while condition' do
|
234
|
-
inspect_source(cop,
|
235
|
-
['while a.',
|
236
|
-
' b',
|
237
|
-
' something',
|
238
|
-
'end'])
|
239
|
-
expect(cop.messages).to eq(['Align the operands of a condition in a ' \
|
240
|
-
'`while` statement spanning multiple lines.'])
|
241
|
-
expect(cop.highlights).to eq(['b'])
|
242
|
-
end
|
243
|
-
|
244
|
-
it 'registers an offense for misaligned operands in until condition' do
|
245
|
-
inspect_source(cop,
|
246
|
-
['until a.',
|
247
|
-
' b',
|
248
|
-
' something',
|
249
|
-
'end'])
|
250
|
-
expect(cop.messages).to eq(['Align the operands of a condition in an ' \
|
251
|
-
'`until` statement spanning multiple lines.'])
|
252
|
-
expect(cop.highlights).to eq(['b'])
|
253
|
-
end
|
254
|
-
|
255
|
-
it 'accepts aligned operands in assignment' do
|
256
|
-
inspect_source(cop,
|
257
|
-
['formatted_int = int_part',
|
258
|
-
' .to_s',
|
259
|
-
' .reverse',
|
260
|
-
" .gsub(/...(?=.)/, '\&_')"])
|
261
|
-
expect(cop.messages).to be_empty
|
262
|
-
end
|
263
|
-
|
264
|
-
it 'registers an offense for unaligned operands in assignment' do
|
265
|
-
inspect_source(cop,
|
266
|
-
['bar = Foo',
|
267
|
-
' .a',
|
268
|
-
' .b(c)'])
|
269
|
-
expect(cop.messages).to eq(['Align the operands of an expression in an ' \
|
270
|
-
'assignment spanning multiple lines.'])
|
271
|
-
expect(cop.highlights).to eq(['.a'])
|
272
|
-
end
|
273
|
-
|
274
|
-
it 'auto-corrects' do
|
275
|
-
new_source = autocorrect_source(cop, ['until a.',
|
276
|
-
' b',
|
277
|
-
' something',
|
278
|
-
'end'])
|
279
|
-
expect(new_source).to eq(['until a.',
|
280
|
-
' b',
|
281
|
-
' something',
|
282
|
-
'end'].join("\n"))
|
283
|
-
end
|
284
|
-
end
|
285
|
-
|
286
|
-
context 'when EnforcedStyle is indented' do
|
287
|
-
let(:cop_config) { { 'EnforcedStyle' => 'indented' } }
|
288
|
-
|
289
|
-
include_examples 'common'
|
290
|
-
|
291
|
-
it 'accepts indented operands in if condition' do
|
292
|
-
inspect_source(cop,
|
293
|
-
['if a +',
|
294
|
-
' b',
|
295
|
-
' something',
|
296
|
-
'end'])
|
297
|
-
expect(cop.messages).to be_empty
|
298
|
-
end
|
299
|
-
|
300
|
-
it 'registers an offense for aligned operands in if condition' do
|
301
|
-
inspect_source(cop,
|
302
|
-
['if a +',
|
303
|
-
' b',
|
304
|
-
' something',
|
305
|
-
'end'])
|
306
|
-
expect(cop.messages).to eq(['Use 4 (not 3) spaces for indenting a ' \
|
307
|
-
'condition in an `if` statement spanning ' \
|
308
|
-
'multiple lines.'])
|
309
|
-
expect(cop.highlights).to eq(['b'])
|
310
|
-
expect(cop.config_to_allow_offenses).to eq('EnforcedStyle' => 'aligned')
|
311
|
-
end
|
312
|
-
|
313
|
-
it 'accepts the indentation of a broken string' do
|
314
|
-
inspect_source(cop,
|
315
|
-
["MSG = 'Use 2 (not %d) spaces for indenting a ' \\",
|
316
|
-
" 'broken line.'"])
|
317
|
-
expect(cop.messages).to be_empty
|
318
|
-
end
|
319
|
-
|
320
|
-
it 'accepts normal indentation of method parameters' do
|
321
|
-
inspect_source(cop,
|
322
|
-
['Parser::Source::Range.new(expr.source_buffer,',
|
323
|
-
' begin_pos,',
|
324
|
-
' begin_pos + line.length)'])
|
325
|
-
expect(cop.messages).to be_empty
|
326
|
-
end
|
327
|
-
|
328
|
-
it 'accepts any indentation of method parameters' do
|
329
|
-
inspect_source(cop,
|
330
|
-
['a(b.',
|
331
|
-
' c',
|
332
|
-
'.d)'])
|
333
|
-
expect(cop.messages).to be_empty
|
334
|
-
end
|
335
|
-
|
336
|
-
it 'accepts normal indentation inside grouped expression' do
|
337
|
-
inspect_source(cop,
|
338
|
-
['arg_array.size == a.size && (',
|
339
|
-
' arg_array == a ||',
|
340
|
-
' arg_array.map(&:children) == a.map(&:children)',
|
341
|
-
')'])
|
342
|
-
expect(cop.messages).to be_empty
|
343
|
-
end
|
344
|
-
|
345
|
-
[
|
346
|
-
%w(an if),
|
347
|
-
%w(an unless),
|
348
|
-
%w(a while),
|
349
|
-
%w(an until)
|
350
|
-
].each do |article, keyword|
|
351
|
-
it "accepts double indentation of #{keyword} condition" do
|
352
|
-
inspect_source(cop,
|
353
|
-
["#{keyword} receiver.nil? &&",
|
354
|
-
' !args.empty? &&',
|
355
|
-
' BLACKLIST.include?(method_name)',
|
356
|
-
'end',
|
357
|
-
"#{keyword} receiver.",
|
358
|
-
' nil?',
|
359
|
-
'end'])
|
360
|
-
expect(cop.messages).to be_empty
|
361
|
-
end
|
362
|
-
|
363
|
-
it "registers an offense for a 2 space indentation of #{keyword} " \
|
364
|
-
'condition' do
|
365
|
-
inspect_source(cop,
|
366
|
-
["#{keyword} receiver.nil? &&",
|
367
|
-
' !args.empty? &&',
|
368
|
-
' BLACKLIST.include?(method_name)',
|
369
|
-
'end',
|
370
|
-
"#{keyword} receiver.",
|
371
|
-
' nil?',
|
372
|
-
'end'])
|
373
|
-
expect(cop.highlights).to eq(['!args.empty?',
|
374
|
-
'BLACKLIST.include?(method_name)',
|
375
|
-
'nil?'])
|
376
|
-
expect(cop.messages).to eq(['Use 4 (not 2) spaces for indenting a ' \
|
377
|
-
"condition in #{article} `#{keyword}` " \
|
378
|
-
'statement spanning multiple lines.'] * 3)
|
379
|
-
end
|
380
|
-
|
381
|
-
it "accepts indented operands in #{keyword} body" do
|
382
|
-
inspect_source(cop,
|
383
|
-
["#{keyword} a",
|
384
|
-
' something &&',
|
385
|
-
' something_else',
|
386
|
-
'end'])
|
387
|
-
expect(cop.highlights).to be_empty
|
388
|
-
end
|
389
|
-
end
|
390
|
-
|
391
|
-
%w(unless if).each do |keyword|
|
392
|
-
it "accepts special indentation of return #{keyword} condition" do
|
393
|
-
inspect_source(cop,
|
394
|
-
["return #{keyword} receiver.nil? &&",
|
395
|
-
' !args.empty? &&',
|
396
|
-
' BLACKLIST.include?(method_name)'])
|
397
|
-
expect(cop.messages).to be_empty
|
398
|
-
end
|
399
|
-
end
|
400
|
-
|
401
|
-
it 'registers an offense for wrong indentation of for expression' do
|
402
|
-
inspect_source(cop,
|
403
|
-
['for n in a +',
|
404
|
-
' b',
|
405
|
-
'end'])
|
406
|
-
expect(cop.messages).to eq(['Use 4 (not 2) spaces for indenting a ' \
|
407
|
-
'collection in a `for` statement spanning ' \
|
408
|
-
'multiple lines.'])
|
409
|
-
expect(cop.highlights).to eq(['b'])
|
410
|
-
end
|
411
|
-
|
412
|
-
it 'accepts special indentation of for expression' do
|
413
|
-
inspect_source(cop,
|
414
|
-
['for n in a +',
|
415
|
-
' b',
|
416
|
-
'end'])
|
417
|
-
expect(cop.messages).to be_empty
|
418
|
-
end
|
419
|
-
|
420
|
-
it 'accepts indentation of assignment' do
|
421
|
-
inspect_source(cop,
|
422
|
-
['formatted_int = int_part',
|
423
|
-
' .abs',
|
424
|
-
' .to_s',
|
425
|
-
' .reverse',
|
426
|
-
" .gsub(/...(?=.)/, '\&_')",
|
427
|
-
' .reverse'])
|
428
|
-
expect(cop.messages).to be_empty
|
429
|
-
end
|
430
|
-
|
431
|
-
it 'registers an offense for correct + unrecognized style' do
|
432
|
-
inspect_source(cop,
|
433
|
-
['a ||',
|
434
|
-
' b',
|
435
|
-
'c and',
|
436
|
-
' d'])
|
437
|
-
expect(cop.messages).to eq(['Use 2 (not 4) spaces for indenting an ' \
|
438
|
-
'expression spanning multiple lines.'])
|
439
|
-
expect(cop.highlights).to eq(%w(d))
|
440
|
-
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
|
441
|
-
end
|
442
|
-
|
443
|
-
it 'registers an offense for aligned operators in assignment' do
|
444
|
-
inspect_source(cop,
|
445
|
-
['formatted_int = int_part',
|
446
|
-
' .abs',
|
447
|
-
' .reverse'])
|
448
|
-
expect(cop.messages).to eq(['Use 2 (not 16) spaces for indenting an ' \
|
449
|
-
'expression in an assignment spanning ' \
|
450
|
-
'multiple lines.'] * 2)
|
451
|
-
end
|
452
|
-
|
453
|
-
it 'auto-corrects' do
|
454
|
-
new_source = autocorrect_source(cop, ['until a.',
|
455
|
-
' b',
|
456
|
-
' something',
|
457
|
-
'end'])
|
458
|
-
expect(new_source).to eq(['until a.',
|
459
|
-
' b',
|
460
|
-
' something',
|
461
|
-
'end'].join("\n"))
|
462
|
-
end
|
463
|
-
end
|
464
|
-
end
|