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,132 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::DotPosition, :config do
|
6
|
-
subject(:cop) { described_class.new(config) }
|
7
|
-
|
8
|
-
context 'Leading dots style' do
|
9
|
-
let(:cop_config) { { 'EnforcedStyle' => 'leading' } }
|
10
|
-
|
11
|
-
it 'registers an offense for trailing dot in multi-line call' do
|
12
|
-
inspect_source(cop, ['something.',
|
13
|
-
' method_name'])
|
14
|
-
expect(cop.offenses.size).to eq(1)
|
15
|
-
expect(cop.highlights).to eq(['.'])
|
16
|
-
expect(cop.config_to_allow_offenses).to eq('EnforcedStyle' => 'trailing')
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'registers an offense for correct + opposite' do
|
20
|
-
inspect_source(cop, ['something',
|
21
|
-
' .method_name',
|
22
|
-
'something.',
|
23
|
-
' method_name'])
|
24
|
-
expect(cop.offenses.size).to eq(1)
|
25
|
-
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'accepts leading do in multi-line method call' do
|
29
|
-
inspect_source(cop, ['something',
|
30
|
-
' .method_name'])
|
31
|
-
expect(cop.offenses).to be_empty
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'does not err on method call with no dots' do
|
35
|
-
inspect_source(cop, 'puts something')
|
36
|
-
expect(cop.offenses).to be_empty
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'does not err on method call without a method name' do
|
40
|
-
inspect_source(cop, ['l.',
|
41
|
-
'(1)'])
|
42
|
-
expect(cop.offenses.size).to eq(1)
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'does not err on method call on same line' do
|
46
|
-
inspect_source(cop, 'something.method_name')
|
47
|
-
expect(cop.offenses).to be_empty
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'auto-corrects trailing dot in multi-line call' do
|
51
|
-
new_source = autocorrect_source(cop, ['something.',
|
52
|
-
' method_name'])
|
53
|
-
expect(new_source).to eq(['something',
|
54
|
-
' .method_name'].join("\n"))
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'auto-corrects trailing dot in multi-line call without selector' do
|
58
|
-
new_source = autocorrect_source(cop, ['something.',
|
59
|
-
' (1)'])
|
60
|
-
expect(new_source).to eq(['something',
|
61
|
-
' .(1)'].join("\n"))
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'auto-corrects correct + opposite style' do
|
65
|
-
new_source = autocorrect_source(cop, ['something',
|
66
|
-
' .method_name',
|
67
|
-
'something.',
|
68
|
-
' method_name'])
|
69
|
-
expect(new_source).to eq(['something',
|
70
|
-
' .method_name',
|
71
|
-
'something',
|
72
|
-
' .method_name'].join("\n"))
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
context 'Trailing dots style' do
|
77
|
-
let(:cop_config) { { 'EnforcedStyle' => 'trailing' } }
|
78
|
-
|
79
|
-
it 'registers an offense for leading dot in multi-line call' do
|
80
|
-
inspect_source(cop, ['something',
|
81
|
-
' .method_name'])
|
82
|
-
expect(cop.messages)
|
83
|
-
.to eq(['Place the . on the previous line, together with the method ' \
|
84
|
-
'call receiver.'])
|
85
|
-
expect(cop.highlights).to eq(['.'])
|
86
|
-
expect(cop.config_to_allow_offenses).to eq('EnforcedStyle' => 'leading')
|
87
|
-
end
|
88
|
-
|
89
|
-
it 'accepts trailing dot in multi-line method call' do
|
90
|
-
inspect_source(cop, ['something.',
|
91
|
-
' method_name'])
|
92
|
-
expect(cop.offenses).to be_empty
|
93
|
-
end
|
94
|
-
|
95
|
-
it 'does not err on method call with no dots' do
|
96
|
-
inspect_source(cop, 'puts something')
|
97
|
-
expect(cop.offenses).to be_empty
|
98
|
-
end
|
99
|
-
|
100
|
-
it 'does not err on method call without a method name' do
|
101
|
-
inspect_source(cop, ['l',
|
102
|
-
'.(1)'])
|
103
|
-
expect(cop.offenses.size).to eq(1)
|
104
|
-
end
|
105
|
-
|
106
|
-
it 'does not err on method call on same line' do
|
107
|
-
inspect_source(cop, 'something.method_name')
|
108
|
-
expect(cop.offenses).to be_empty
|
109
|
-
end
|
110
|
-
|
111
|
-
it 'does not get confused by several lines of chained methods' do
|
112
|
-
inspect_source(cop, ['File.new(something).',
|
113
|
-
'readlines.map.',
|
114
|
-
'compact.join("\n")'])
|
115
|
-
expect(cop.offenses).to be_empty
|
116
|
-
end
|
117
|
-
|
118
|
-
it 'auto-corrects leading dot in multi-line call' do
|
119
|
-
new_source = autocorrect_source(cop, ['something',
|
120
|
-
' .method_name'])
|
121
|
-
expect(new_source).to eq(['something.',
|
122
|
-
' method_name'].join("\n"))
|
123
|
-
end
|
124
|
-
|
125
|
-
it 'auto-corrects leading dot in multi-line call without selector' do
|
126
|
-
new_source = autocorrect_source(cop, ['something',
|
127
|
-
' .(1)'])
|
128
|
-
expect(new_source).to eq(['something.',
|
129
|
-
' (1)'].join("\n"))
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::DoubleNegation do
|
6
|
-
subject(:cop) { described_class.new }
|
7
|
-
|
8
|
-
it 'registers an offense for !!' do
|
9
|
-
inspect_source(cop, '!!test.something')
|
10
|
-
expect(cop.offenses.size).to eq(1)
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'does not register an offense for !' do
|
14
|
-
inspect_source(cop, '!test.something')
|
15
|
-
expect(cop.offenses).to be_empty
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'does not register an offense for not not' do
|
19
|
-
inspect_source(cop, 'not not test.something')
|
20
|
-
expect(cop.offenses).to be_empty
|
21
|
-
end
|
22
|
-
end
|
@@ -1,73 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::EachWithObject do
|
6
|
-
subject(:cop) { described_class.new }
|
7
|
-
|
8
|
-
it 'finds inject and reduce with passed in and returned hash' do
|
9
|
-
inspect_source(cop,
|
10
|
-
['[].inject({}) { |a, e| a }',
|
11
|
-
'',
|
12
|
-
'[].reduce({}) do |a, e|',
|
13
|
-
' a[e] = 1',
|
14
|
-
' a[e] = 1',
|
15
|
-
' a',
|
16
|
-
'end'])
|
17
|
-
expect(cop.offenses.size).to eq(2)
|
18
|
-
expect(cop.offenses.map(&:line).sort).to eq([1, 3])
|
19
|
-
expect(cop.messages)
|
20
|
-
.to eq(['Use `each_with_object` instead of `inject`.',
|
21
|
-
'Use `each_with_object` instead of `reduce`.'])
|
22
|
-
expect(cop.highlights).to eq(%w(inject reduce))
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'ignores inject and reduce with passed in, but not returned hash' do
|
26
|
-
inspect_source(cop,
|
27
|
-
['[].inject({}) do |a, e|',
|
28
|
-
' a + e',
|
29
|
-
'end',
|
30
|
-
'',
|
31
|
-
'[].reduce({}) do |a, e|',
|
32
|
-
' my_method e, a',
|
33
|
-
'end'])
|
34
|
-
expect(cop.offenses).to be_empty
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'ignores inject and reduce with empty body' do
|
38
|
-
inspect_source(cop,
|
39
|
-
['[].inject({}) do |a, e|',
|
40
|
-
'end',
|
41
|
-
'',
|
42
|
-
'[].reduce({}) { |a, e| }'])
|
43
|
-
expect(cop.offenses).to be_empty
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'ignores inject and reduce with condition as body' do
|
47
|
-
inspect_source(cop,
|
48
|
-
['[].inject({}) do |a, e|',
|
49
|
-
' a = e if e',
|
50
|
-
'end',
|
51
|
-
'',
|
52
|
-
'[].inject({}) do |a, e|',
|
53
|
-
' if e',
|
54
|
-
' a = e',
|
55
|
-
' end',
|
56
|
-
'end',
|
57
|
-
'',
|
58
|
-
'[].reduce({}) do |a, e|',
|
59
|
-
' a = e ? e : 2',
|
60
|
-
'end'])
|
61
|
-
expect(cop.offenses).to be_empty
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'ignores inject and reduce passed in symbol' do
|
65
|
-
inspect_source(cop, '[].inject(:+)', '[].reduce(:+)')
|
66
|
-
expect(cop.offenses).to be_empty
|
67
|
-
end
|
68
|
-
|
69
|
-
it 'does not blow up for reduce with no arguments' do
|
70
|
-
inspect_source(cop, '[1, 2, 3].inject { |a, e| a + e }')
|
71
|
-
expect(cop.offenses).to be_empty
|
72
|
-
end
|
73
|
-
end
|
@@ -1,506 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::ElseAlignment do
|
6
|
-
subject(:cop) { described_class.new(config) }
|
7
|
-
let(:config) do
|
8
|
-
RuboCop::Config.new('Lint/EndAlignment' => end_alignment_config)
|
9
|
-
end
|
10
|
-
let(:end_alignment_config) do
|
11
|
-
{ 'Enabled' => true, 'AlignWith' => 'variable' }
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'accepts a ternary if' do
|
15
|
-
inspect_source(cop, 'cond ? func1 : func2')
|
16
|
-
expect(cop.offenses).to be_empty
|
17
|
-
end
|
18
|
-
|
19
|
-
context 'with if statement' do
|
20
|
-
it 'registers an offense for misaligned else' do
|
21
|
-
inspect_source(cop,
|
22
|
-
['if cond',
|
23
|
-
' func1',
|
24
|
-
' else',
|
25
|
-
' func2',
|
26
|
-
'end'])
|
27
|
-
expect(cop.messages).to eq(['Align `else` with `if`.'])
|
28
|
-
expect(cop.highlights).to eq(['else'])
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'registers an offense for misaligned elsif' do
|
32
|
-
inspect_source(cop,
|
33
|
-
[' if a1',
|
34
|
-
' b1',
|
35
|
-
'elsif a2',
|
36
|
-
' b2',
|
37
|
-
' end'])
|
38
|
-
expect(cop.messages).to eq(['Align `elsif` with `if`.'])
|
39
|
-
expect(cop.highlights).to eq(['elsif'])
|
40
|
-
end
|
41
|
-
|
42
|
-
describe '#autocorrect' do
|
43
|
-
it 'corrects bad alignment' do
|
44
|
-
corrected = autocorrect_source(cop,
|
45
|
-
[' if a1',
|
46
|
-
' b1',
|
47
|
-
' elsif a2',
|
48
|
-
' b2',
|
49
|
-
'else',
|
50
|
-
' c',
|
51
|
-
' end'])
|
52
|
-
expect(cop.messages).to eq(['Align `elsif` with `if`.',
|
53
|
-
'Align `else` with `if`.'])
|
54
|
-
expect(corrected)
|
55
|
-
.to eq [' if a1',
|
56
|
-
' b1',
|
57
|
-
' elsif a2',
|
58
|
-
' b2',
|
59
|
-
' else',
|
60
|
-
' c',
|
61
|
-
' end'].join("\n")
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
it 'accepts a one line if statement' do
|
66
|
-
inspect_source(cop, 'if cond then func1 else func2 end')
|
67
|
-
expect(cop.offenses).to be_empty
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'accepts a correctly aligned if/elsif/else/end' do
|
71
|
-
inspect_source(cop,
|
72
|
-
['if a1',
|
73
|
-
' b1',
|
74
|
-
'elsif a2',
|
75
|
-
' b2',
|
76
|
-
'else',
|
77
|
-
' c',
|
78
|
-
'end'])
|
79
|
-
expect(cop.offenses).to be_empty
|
80
|
-
end
|
81
|
-
|
82
|
-
context 'with assignment' do
|
83
|
-
context 'when alignment style is variable' do
|
84
|
-
context 'and end is aligned with variable' do
|
85
|
-
it 'accepts an if-else with end aligned with setter' do
|
86
|
-
inspect_source(cop,
|
87
|
-
['foo.bar = if baz',
|
88
|
-
' derp1',
|
89
|
-
'else',
|
90
|
-
' derp2',
|
91
|
-
'end'])
|
92
|
-
expect(cop.offenses).to be_empty
|
93
|
-
end
|
94
|
-
|
95
|
-
it 'accepts an if-elsif-else with end aligned with setter' do
|
96
|
-
inspect_source(cop,
|
97
|
-
['foo.bar = if baz',
|
98
|
-
' derp1',
|
99
|
-
'elsif meh',
|
100
|
-
' derp2',
|
101
|
-
'else',
|
102
|
-
' derp3',
|
103
|
-
'end'])
|
104
|
-
expect(cop.offenses).to be_empty
|
105
|
-
end
|
106
|
-
|
107
|
-
it 'accepts an if with end aligned with element assignment' do
|
108
|
-
inspect_source(cop,
|
109
|
-
['foo[bar] = if baz',
|
110
|
-
' derp',
|
111
|
-
'end'])
|
112
|
-
expect(cop.offenses).to be_empty
|
113
|
-
end
|
114
|
-
|
115
|
-
it 'accepts an if/else' do
|
116
|
-
inspect_source(cop,
|
117
|
-
['var = if a',
|
118
|
-
' 0',
|
119
|
-
'else',
|
120
|
-
' 1',
|
121
|
-
'end'])
|
122
|
-
expect(cop.offenses).to be_empty
|
123
|
-
end
|
124
|
-
|
125
|
-
it 'accepts an if/else with chaining after the end' do
|
126
|
-
inspect_source(cop,
|
127
|
-
['var = if a',
|
128
|
-
' 0',
|
129
|
-
'else',
|
130
|
-
' 1',
|
131
|
-
'end.abc.join("")'])
|
132
|
-
expect(cop.offenses).to be_empty
|
133
|
-
end
|
134
|
-
|
135
|
-
it 'accepts an if/else with chaining with a block after the end' do
|
136
|
-
inspect_source(cop,
|
137
|
-
['var = if a',
|
138
|
-
' 0',
|
139
|
-
'else',
|
140
|
-
' 1',
|
141
|
-
'end.abc.tap {}'])
|
142
|
-
expect(cop.offenses).to be_empty
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
context 'and end is aligned with keyword' do
|
147
|
-
it 'registers offenses for an if with setter' do
|
148
|
-
inspect_source(cop,
|
149
|
-
['foo.bar = if baz',
|
150
|
-
' derp1',
|
151
|
-
' elsif meh',
|
152
|
-
' derp2',
|
153
|
-
' else',
|
154
|
-
' derp3',
|
155
|
-
' end'])
|
156
|
-
expect(cop.messages).to eq(['Align `elsif` with `foo.bar`.',
|
157
|
-
'Align `else` with `foo.bar`.'])
|
158
|
-
end
|
159
|
-
|
160
|
-
it 'registers an offense for an if with element assignment' do
|
161
|
-
inspect_source(cop,
|
162
|
-
['foo[bar] = if baz',
|
163
|
-
' derp1',
|
164
|
-
' else',
|
165
|
-
' derp2',
|
166
|
-
' end'])
|
167
|
-
expect(cop.messages).to eq(['Align `else` with `foo[bar]`.'])
|
168
|
-
end
|
169
|
-
|
170
|
-
it 'registers an offense for an if' do
|
171
|
-
inspect_source(cop,
|
172
|
-
['var = if a',
|
173
|
-
' 0',
|
174
|
-
' else',
|
175
|
-
' 1',
|
176
|
-
' end'])
|
177
|
-
expect(cop.messages).to eq(['Align `else` with `var`.'])
|
178
|
-
end
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
|
-
shared_examples 'assignment and if with keyword alignment' do
|
183
|
-
context 'and end is aligned with variable' do
|
184
|
-
it 'registers an offense for an if' do
|
185
|
-
inspect_source(cop,
|
186
|
-
['var = if a',
|
187
|
-
' 0',
|
188
|
-
'elsif b',
|
189
|
-
' 1',
|
190
|
-
'end'])
|
191
|
-
expect(cop.messages).to eq(['Align `elsif` with `if`.'])
|
192
|
-
end
|
193
|
-
|
194
|
-
it 'autocorrects bad alignment' do
|
195
|
-
corrected = autocorrect_source(cop,
|
196
|
-
['var = if a',
|
197
|
-
' b1',
|
198
|
-
'else',
|
199
|
-
' b2',
|
200
|
-
'end'])
|
201
|
-
expect(corrected).to eq ['var = if a',
|
202
|
-
' b1',
|
203
|
-
' else',
|
204
|
-
' b2',
|
205
|
-
'end'].join("\n")
|
206
|
-
end
|
207
|
-
end
|
208
|
-
|
209
|
-
context 'and end is aligned with keyword' do
|
210
|
-
it 'accepts an if in assignment' do
|
211
|
-
inspect_source(cop,
|
212
|
-
['var = if a',
|
213
|
-
' 0',
|
214
|
-
' end'])
|
215
|
-
expect(cop.offenses).to be_empty
|
216
|
-
end
|
217
|
-
|
218
|
-
it 'accepts an if/else in assignment' do
|
219
|
-
inspect_source(cop,
|
220
|
-
['var = if a',
|
221
|
-
' 0',
|
222
|
-
' else',
|
223
|
-
' 1',
|
224
|
-
' end'])
|
225
|
-
expect(cop.offenses).to be_empty
|
226
|
-
end
|
227
|
-
|
228
|
-
it 'accepts an if/else in assignment on next line' do
|
229
|
-
inspect_source(cop,
|
230
|
-
['var =',
|
231
|
-
' if a',
|
232
|
-
' 0',
|
233
|
-
' else',
|
234
|
-
' 1',
|
235
|
-
' end'])
|
236
|
-
expect(cop.offenses).to be_empty
|
237
|
-
end
|
238
|
-
|
239
|
-
it 'accepts a while in assignment' do
|
240
|
-
inspect_source(cop,
|
241
|
-
['var = while a',
|
242
|
-
' b',
|
243
|
-
' end'])
|
244
|
-
expect(cop.offenses).to be_empty
|
245
|
-
end
|
246
|
-
|
247
|
-
it 'accepts an until in assignment' do
|
248
|
-
inspect_source(cop,
|
249
|
-
['var = until a',
|
250
|
-
' b',
|
251
|
-
' end'])
|
252
|
-
expect(cop.offenses).to be_empty
|
253
|
-
end
|
254
|
-
end
|
255
|
-
end
|
256
|
-
|
257
|
-
context 'when alignment style is keyword by choice' do
|
258
|
-
let(:end_alignment_config) do
|
259
|
-
{ 'Enabled' => true, 'AlignWith' => 'keyword' }
|
260
|
-
end
|
261
|
-
|
262
|
-
include_examples 'assignment and if with keyword alignment'
|
263
|
-
end
|
264
|
-
|
265
|
-
context 'when alignment style is keyword by default' do
|
266
|
-
let(:end_alignment_config) do
|
267
|
-
{ 'Enabled' => false, 'AlignWith' => 'variable' }
|
268
|
-
end
|
269
|
-
|
270
|
-
include_examples 'assignment and if with keyword alignment'
|
271
|
-
end
|
272
|
-
end
|
273
|
-
|
274
|
-
it 'accepts an if/else branches with rescue clauses' do
|
275
|
-
# Because of how the rescue clauses come out of Parser, these are
|
276
|
-
# special and need to be tested.
|
277
|
-
inspect_source(cop,
|
278
|
-
['if a',
|
279
|
-
' a rescue nil',
|
280
|
-
'else',
|
281
|
-
' a rescue nil',
|
282
|
-
'end'])
|
283
|
-
expect(cop.offenses).to be_empty
|
284
|
-
end
|
285
|
-
end
|
286
|
-
|
287
|
-
context 'with unless' do
|
288
|
-
it 'registers an offense for misaligned else' do
|
289
|
-
inspect_source(cop,
|
290
|
-
['unless cond',
|
291
|
-
' func1',
|
292
|
-
' else',
|
293
|
-
' func2',
|
294
|
-
'end'])
|
295
|
-
expect(cop.messages).to eq(['Align `else` with `unless`.'])
|
296
|
-
end
|
297
|
-
|
298
|
-
it 'accepts a correctly aligned else in an otherwise empty unless' do
|
299
|
-
inspect_source(cop,
|
300
|
-
['unless a',
|
301
|
-
'else',
|
302
|
-
'end'])
|
303
|
-
expect(cop.offenses).to be_empty
|
304
|
-
end
|
305
|
-
|
306
|
-
it 'accepts an empty unless' do
|
307
|
-
inspect_source(cop,
|
308
|
-
['unless a',
|
309
|
-
'end'])
|
310
|
-
expect(cop.offenses).to be_empty
|
311
|
-
end
|
312
|
-
end
|
313
|
-
|
314
|
-
context 'with case' do
|
315
|
-
it 'registers an offense for misaligned else' do
|
316
|
-
inspect_source(cop,
|
317
|
-
['case a',
|
318
|
-
'when b',
|
319
|
-
' c',
|
320
|
-
'when d',
|
321
|
-
' e',
|
322
|
-
' else',
|
323
|
-
' f',
|
324
|
-
'end'])
|
325
|
-
expect(cop.messages).to eq(['Align `else` with `when`.'])
|
326
|
-
end
|
327
|
-
|
328
|
-
it 'accepts correctly aligned case/when/else' do
|
329
|
-
inspect_source(cop,
|
330
|
-
['case a',
|
331
|
-
'when b',
|
332
|
-
' c',
|
333
|
-
' c',
|
334
|
-
'when d',
|
335
|
-
'else',
|
336
|
-
' f',
|
337
|
-
'end'])
|
338
|
-
expect(cop.offenses).to be_empty
|
339
|
-
end
|
340
|
-
|
341
|
-
it 'accepts case without else' do
|
342
|
-
inspect_source(cop,
|
343
|
-
['case superclass',
|
344
|
-
'when /\A(#{NAMESPACEMATCH})(?:\s|\Z)/',
|
345
|
-
' $1',
|
346
|
-
'when "self"',
|
347
|
-
' namespace.path',
|
348
|
-
'end'])
|
349
|
-
expect(cop.offenses).to be_empty
|
350
|
-
end
|
351
|
-
|
352
|
-
it 'accepts else aligned with when but not with case' do
|
353
|
-
# "Indent when as deep as case" is the job of another cop, and this is
|
354
|
-
# one of the possible styles supported by configuration.
|
355
|
-
inspect_source(cop,
|
356
|
-
['case code_type',
|
357
|
-
" when 'ruby', 'sql', 'plain'",
|
358
|
-
' code_type',
|
359
|
-
" when 'erb'",
|
360
|
-
" 'ruby; html-script: true'",
|
361
|
-
' when "html"',
|
362
|
-
" 'xml'",
|
363
|
-
' else',
|
364
|
-
" 'plain'",
|
365
|
-
'end'])
|
366
|
-
expect(cop.offenses).to be_empty
|
367
|
-
end
|
368
|
-
end
|
369
|
-
|
370
|
-
context 'with def/defs' do
|
371
|
-
it 'accepts an empty def body' do
|
372
|
-
inspect_source(cop,
|
373
|
-
['def test',
|
374
|
-
'end'])
|
375
|
-
expect(cop.offenses).to be_empty
|
376
|
-
end
|
377
|
-
|
378
|
-
it 'accepts an empty defs body' do
|
379
|
-
inspect_source(cop,
|
380
|
-
['def self.test',
|
381
|
-
'end'])
|
382
|
-
expect(cop.offenses).to be_empty
|
383
|
-
end
|
384
|
-
|
385
|
-
if RUBY_VERSION >= '2.1'
|
386
|
-
context 'when modifier and def are on the same line' do
|
387
|
-
it 'accepts a correctly aligned body' do
|
388
|
-
inspect_source(cop,
|
389
|
-
['private def test',
|
390
|
-
' something',
|
391
|
-
'rescue',
|
392
|
-
' handling',
|
393
|
-
'else',
|
394
|
-
' something_else',
|
395
|
-
'end'])
|
396
|
-
expect(cop.offenses).to be_empty
|
397
|
-
end
|
398
|
-
|
399
|
-
it 'registers an offense for else not aligned with private' do
|
400
|
-
inspect_source(cop,
|
401
|
-
['private def test',
|
402
|
-
' something',
|
403
|
-
' rescue',
|
404
|
-
' handling',
|
405
|
-
' else',
|
406
|
-
' something_else',
|
407
|
-
' end'])
|
408
|
-
expect(cop.messages).to eq(['Align `else` with `private`.'])
|
409
|
-
end
|
410
|
-
end
|
411
|
-
end
|
412
|
-
end
|
413
|
-
|
414
|
-
context 'with begin/rescue/else/ensure/end' do
|
415
|
-
it 'registers an offense for misaligned else' do
|
416
|
-
inspect_source(cop,
|
417
|
-
['def my_func',
|
418
|
-
" puts 'do something outside block'",
|
419
|
-
' begin',
|
420
|
-
" puts 'do something error prone'",
|
421
|
-
' rescue SomeException, SomeOther => e',
|
422
|
-
" puts 'wrongly intended error handling'",
|
423
|
-
' rescue',
|
424
|
-
" puts 'wrongly intended error handling'",
|
425
|
-
'else',
|
426
|
-
" puts 'wrongly intended normal case handling'",
|
427
|
-
' ensure',
|
428
|
-
" puts 'wrongly intended common handling'",
|
429
|
-
' end',
|
430
|
-
'end'])
|
431
|
-
expect(cop.messages).to eq(['Align `else` with `begin`.'])
|
432
|
-
end
|
433
|
-
|
434
|
-
it 'accepts a correctly aligned else' do
|
435
|
-
inspect_source(cop,
|
436
|
-
['begin',
|
437
|
-
" raise StandardError.new('Fail') if rand(2).odd?",
|
438
|
-
'rescue StandardError => error',
|
439
|
-
' $stderr.puts error.message',
|
440
|
-
'else',
|
441
|
-
" $stdout.puts 'Lucky you!'",
|
442
|
-
'end'])
|
443
|
-
expect(cop.offenses).to be_empty
|
444
|
-
end
|
445
|
-
end
|
446
|
-
|
447
|
-
context 'with def/rescue/else/ensure/end' do
|
448
|
-
it 'accepts a correctly aligned else' do
|
449
|
-
inspect_source(cop,
|
450
|
-
['def my_func(string)',
|
451
|
-
' puts string',
|
452
|
-
'rescue => e',
|
453
|
-
' puts e',
|
454
|
-
'else',
|
455
|
-
' puts e',
|
456
|
-
'ensure',
|
457
|
-
" puts 'I love methods that print'",
|
458
|
-
'end'])
|
459
|
-
expect(cop.offenses).to be_empty
|
460
|
-
end
|
461
|
-
|
462
|
-
it 'registers an offense for misaligned else' do
|
463
|
-
inspect_source(cop,
|
464
|
-
['def my_func(string)',
|
465
|
-
' puts string',
|
466
|
-
'rescue => e',
|
467
|
-
' puts e',
|
468
|
-
' else',
|
469
|
-
' puts e',
|
470
|
-
'ensure',
|
471
|
-
" puts 'I love methods that print'",
|
472
|
-
'end'])
|
473
|
-
expect(cop.messages).to eq(['Align `else` with `def`.'])
|
474
|
-
end
|
475
|
-
end
|
476
|
-
|
477
|
-
context 'with def/rescue/else/end' do
|
478
|
-
it 'accepts a correctly aligned else' do
|
479
|
-
inspect_source(cop,
|
480
|
-
['def my_func',
|
481
|
-
" puts 'do something error prone'",
|
482
|
-
'rescue SomeException',
|
483
|
-
" puts 'error handling'",
|
484
|
-
'rescue',
|
485
|
-
" puts 'error handling'",
|
486
|
-
'else',
|
487
|
-
" puts 'normal handling'",
|
488
|
-
'end'])
|
489
|
-
expect(cop.messages).to be_empty
|
490
|
-
end
|
491
|
-
|
492
|
-
it 'registers an offense for misaligned else' do
|
493
|
-
inspect_source(cop,
|
494
|
-
['def my_func',
|
495
|
-
" puts 'do something error prone'",
|
496
|
-
'rescue SomeException',
|
497
|
-
" puts 'error handling'",
|
498
|
-
'rescue',
|
499
|
-
" puts 'error handling'",
|
500
|
-
' else',
|
501
|
-
" puts 'normal handling'",
|
502
|
-
'end'])
|
503
|
-
expect(cop.messages).to eq(['Align `else` with `def`.'])
|
504
|
-
end
|
505
|
-
end
|
506
|
-
end
|