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,288 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::BracesAroundHashParameters, :config do
|
6
|
-
subject(:cop) { described_class.new(config) }
|
7
|
-
|
8
|
-
shared_examples 'general non-offenses' do
|
9
|
-
after(:each) { expect(cop.offenses).to be_empty }
|
10
|
-
|
11
|
-
it 'accepts one non-hash parameter' do
|
12
|
-
inspect_source(cop, 'where(2)')
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'accepts multiple non-hash parameters' do
|
16
|
-
inspect_source(cop, 'where(1, "2")')
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'accepts one empty hash parameter' do
|
20
|
-
inspect_source(cop, 'where({})')
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'accepts one empty hash parameter with whitespace' do
|
24
|
-
inspect_source(cop, ['where( { ',
|
25
|
-
" }\t ) "])
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
shared_examples 'no_braces and context_dependent non-offenses' do
|
30
|
-
after(:each) { expect(cop.offenses).to be_empty }
|
31
|
-
|
32
|
-
it 'accepts one hash parameter without braces' do
|
33
|
-
inspect_source(cop, 'where(x: "y")')
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'accepts one hash parameter without braces and with multiple keys' do
|
37
|
-
inspect_source(cop, 'where(x: "y", foo: "bar")')
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'accepts one hash parameter without braces and with one hash value' do
|
41
|
-
inspect_source(cop, 'where(x: { "y" => "z" })')
|
42
|
-
end
|
43
|
-
|
44
|
-
it 'accepts property assignment with braces' do
|
45
|
-
inspect_source(cop, 'x.z = { y: "z" }')
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'accepts operator with a hash parameter with braces' do
|
49
|
-
inspect_source(cop, 'x.z - { y: "z" }')
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
shared_examples 'no_braces and context_dependent offenses' do
|
54
|
-
let(:msg) { 'Redundant curly braces around a hash parameter.' }
|
55
|
-
|
56
|
-
it 'registers an offense for one non-hash parameter followed by a hash ' \
|
57
|
-
'parameter with braces' do
|
58
|
-
inspect_source(cop, 'where(1, { y: 2 })')
|
59
|
-
expect(cop.messages).to eq([msg])
|
60
|
-
expect(cop.highlights).to eq(['{ y: 2 }'])
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'registers an offense for one object method hash parameter with ' \
|
64
|
-
'braces' do
|
65
|
-
inspect_source(cop, 'x.func({ y: "z" })')
|
66
|
-
expect(cop.messages).to eq([msg])
|
67
|
-
expect(cop.highlights).to eq(['{ y: "z" }'])
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'registers an offense for one hash parameter with braces' do
|
71
|
-
inspect_source(cop, 'where({ x: 1 })')
|
72
|
-
expect(cop.messages).to eq([msg])
|
73
|
-
expect(cop.highlights).to eq(['{ x: 1 }'])
|
74
|
-
end
|
75
|
-
|
76
|
-
it 'registers an offense for one hash parameter with braces and ' \
|
77
|
-
'whitespace' do
|
78
|
-
inspect_source(cop, "where( \n { x: 1 } )")
|
79
|
-
expect(cop.messages).to eq([msg])
|
80
|
-
expect(cop.highlights).to eq(['{ x: 1 }'])
|
81
|
-
end
|
82
|
-
|
83
|
-
it 'registers an offense for one hash parameter with braces and multiple ' \
|
84
|
-
'keys' do
|
85
|
-
inspect_source(cop, 'where({ x: 1, foo: "bar" })')
|
86
|
-
expect(cop.messages).to eq([msg])
|
87
|
-
expect(cop.highlights).to eq(['{ x: 1, foo: "bar" }'])
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
shared_examples 'no_braces and context_dependent auto-corrections' do
|
92
|
-
it 'corrects one non-hash parameter followed by a hash parameter with ' \
|
93
|
-
'braces' do
|
94
|
-
corrected = autocorrect_source(cop, ['where(1, { y: 2 })'])
|
95
|
-
expect(corrected).to eq('where(1, y: 2)')
|
96
|
-
end
|
97
|
-
|
98
|
-
it 'corrects one object method hash parameter with braces' do
|
99
|
-
corrected = autocorrect_source(cop, ['x.func({ y: "z" })'])
|
100
|
-
expect(corrected).to eq('x.func(y: "z")')
|
101
|
-
end
|
102
|
-
|
103
|
-
it 'corrects one hash parameter with braces' do
|
104
|
-
corrected = autocorrect_source(cop, ['where({ x: 1 })'])
|
105
|
-
expect(corrected).to eq('where(x: 1)')
|
106
|
-
end
|
107
|
-
|
108
|
-
it 'corrects one hash parameter with braces and whitespace' do
|
109
|
-
corrected = autocorrect_source(cop, ['where( ',
|
110
|
-
' { x: 1 } )'])
|
111
|
-
expect(corrected).to eq(['where( ',
|
112
|
-
' x: 1 )'].join("\n"))
|
113
|
-
end
|
114
|
-
|
115
|
-
it 'corrects one hash parameter with braces and multiple keys' do
|
116
|
-
corrected = autocorrect_source(cop, ['where({ x: 1, foo: "bar" })'])
|
117
|
-
expect(corrected).to eq('where(x: 1, foo: "bar")')
|
118
|
-
end
|
119
|
-
|
120
|
-
it 'corrects one hash parameter with braces and extra leading whitespace' do
|
121
|
-
corrected = autocorrect_source(cop, ['where({ x: 1, y: 2 })'])
|
122
|
-
expect(corrected).to eq('where(x: 1, y: 2)')
|
123
|
-
end
|
124
|
-
|
125
|
-
it 'corrects one hash parameter with braces and extra trailing ' \
|
126
|
-
'whitespace' do
|
127
|
-
corrected = autocorrect_source(cop, ['where({ x: 1, y: 2 })'])
|
128
|
-
expect(corrected).to eq('where(x: 1, y: 2)')
|
129
|
-
end
|
130
|
-
|
131
|
-
it 'corrects one hash parameter with braces and a trailing comma' do
|
132
|
-
corrected = autocorrect_source(cop, ['where({ x: 1, y: 2, })'])
|
133
|
-
expect(corrected).to eq('where(x: 1, y: 2,)')
|
134
|
-
end
|
135
|
-
|
136
|
-
it 'corrects one hash parameter with braces and trailing comma and ' \
|
137
|
-
'whitespace' do
|
138
|
-
corrected = autocorrect_source(cop, ['where({ x: 1, y: 2, })'])
|
139
|
-
expect(corrected).to eq('where(x: 1, y: 2,)')
|
140
|
-
end
|
141
|
-
|
142
|
-
it 'corrects one hash parameter with braces without adding extra space' do
|
143
|
-
corrected = autocorrect_source(cop, 'get :i, { q: { x: 1 } }')
|
144
|
-
expect(corrected).to eq('get :i, q: { x: 1 }')
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
context 'when EnforcedStyle is no_braces' do
|
149
|
-
let(:cop_config) { { 'EnforcedStyle' => 'no_braces' } }
|
150
|
-
|
151
|
-
context 'for correct code' do
|
152
|
-
include_examples 'general non-offenses'
|
153
|
-
include_examples 'no_braces and context_dependent non-offenses'
|
154
|
-
end
|
155
|
-
|
156
|
-
context 'for incorrect code' do
|
157
|
-
include_examples 'no_braces and context_dependent offenses'
|
158
|
-
|
159
|
-
after(:each) do
|
160
|
-
expect(cop.messages)
|
161
|
-
.to eq(['Redundant curly braces around a hash parameter.'])
|
162
|
-
end
|
163
|
-
|
164
|
-
it 'registers an offense for two hash parameters with braces' do
|
165
|
-
inspect_source(cop, 'where({ x: 1 }, { y: 2 })')
|
166
|
-
expect(cop.highlights).to eq(['{ y: 2 }'])
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
describe '#autocorrect' do
|
171
|
-
include_examples 'no_braces and context_dependent auto-corrections'
|
172
|
-
|
173
|
-
it 'corrects one hash parameter with braces' do
|
174
|
-
corrected = autocorrect_source(cop, ['where(1, { x: 1 })'])
|
175
|
-
expect(corrected).to eq('where(1, x: 1)')
|
176
|
-
end
|
177
|
-
|
178
|
-
it 'corrects two hash parameters with braces' do
|
179
|
-
corrected = autocorrect_source(cop, ['where(1, { x: 1 }, { y: 2 })'])
|
180
|
-
expect(corrected).to eq('where(1, { x: 1 }, y: 2)')
|
181
|
-
end
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
context 'when EnforcedStyle is context_dependent' do
|
186
|
-
let(:cop_config) { { 'EnforcedStyle' => 'context_dependent' } }
|
187
|
-
|
188
|
-
context 'for correct code' do
|
189
|
-
include_examples 'general non-offenses'
|
190
|
-
include_examples 'no_braces and context_dependent non-offenses'
|
191
|
-
|
192
|
-
it 'accepts two hash parameters with braces' do
|
193
|
-
inspect_source(cop, 'where({ x: 1 }, { y: 2 })')
|
194
|
-
expect(cop.offenses).to be_empty
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
context 'for incorrect code' do
|
199
|
-
include_examples 'no_braces and context_dependent offenses'
|
200
|
-
|
201
|
-
it 'registers an offense for one hash parameter with braces and one ' \
|
202
|
-
'without' do
|
203
|
-
inspect_source(cop, 'where({ x: 1 }, y: 2)')
|
204
|
-
expect(cop.messages)
|
205
|
-
.to eq(['Missing curly braces around a hash parameter.'])
|
206
|
-
expect(cop.highlights).to eq(['y: 2'])
|
207
|
-
end
|
208
|
-
end
|
209
|
-
|
210
|
-
describe '#autocorrect' do
|
211
|
-
include_examples 'no_braces and context_dependent auto-corrections'
|
212
|
-
|
213
|
-
it 'corrects one hash parameter with braces and one without' do
|
214
|
-
corrected = autocorrect_source(cop, ['where(1, { x: 1 }, y: 2)'])
|
215
|
-
expect(corrected).to eq('where(1, { x: 1 }, {y: 2})')
|
216
|
-
end
|
217
|
-
|
218
|
-
it 'corrects one hash parameter with braces' do
|
219
|
-
corrected = autocorrect_source(cop, ['where(1, { x: 1 })'])
|
220
|
-
expect(corrected).to eq('where(1, x: 1)')
|
221
|
-
end
|
222
|
-
end
|
223
|
-
end
|
224
|
-
|
225
|
-
context 'when EnforcedStyle is braces' do
|
226
|
-
let(:cop_config) { { 'EnforcedStyle' => 'braces' } }
|
227
|
-
|
228
|
-
context 'for correct code' do
|
229
|
-
include_examples 'general non-offenses'
|
230
|
-
|
231
|
-
after(:each) { expect(cop.offenses).to be_empty }
|
232
|
-
|
233
|
-
it 'accepts one hash parameter with braces' do
|
234
|
-
inspect_source(cop, 'where({ x: 1 })')
|
235
|
-
end
|
236
|
-
|
237
|
-
it 'accepts multiple hash parameters with braces' do
|
238
|
-
inspect_source(cop, 'where({ x: 1 }, { y: 2 })')
|
239
|
-
end
|
240
|
-
|
241
|
-
it 'accepts one hash parameter with braces and whitespace' do
|
242
|
-
inspect_source(cop, ["where( \t { x: 1 ",
|
243
|
-
' } )'])
|
244
|
-
end
|
245
|
-
end
|
246
|
-
|
247
|
-
context 'for incorrect code' do
|
248
|
-
after(:each) do
|
249
|
-
expect(cop.messages)
|
250
|
-
.to eq(['Missing curly braces around a hash parameter.'])
|
251
|
-
end
|
252
|
-
|
253
|
-
it 'registers an offense for one hash parameter without braces' do
|
254
|
-
inspect_source(cop, 'where(x: "y")')
|
255
|
-
expect(cop.highlights).to eq(['x: "y"'])
|
256
|
-
end
|
257
|
-
|
258
|
-
it 'registers an offense for one hash parameter with multiple keys and ' \
|
259
|
-
'without braces' do
|
260
|
-
inspect_source(cop, 'where(x: "y", foo: "bar")')
|
261
|
-
expect(cop.highlights).to eq(['x: "y", foo: "bar"'])
|
262
|
-
end
|
263
|
-
|
264
|
-
it 'registers an offense for one hash parameter without braces with ' \
|
265
|
-
'one hash value' do
|
266
|
-
inspect_source(cop, 'where(x: { "y" => "z" })')
|
267
|
-
expect(cop.highlights).to eq(['x: { "y" => "z" }'])
|
268
|
-
end
|
269
|
-
end
|
270
|
-
|
271
|
-
describe '#autocorrect' do
|
272
|
-
it 'corrects one hash parameter without braces' do
|
273
|
-
corrected = autocorrect_source(cop, ['where(x: "y")'])
|
274
|
-
expect(corrected).to eq('where({x: "y"})')
|
275
|
-
end
|
276
|
-
|
277
|
-
it 'corrects one hash parameter with multiple keys and without braces' do
|
278
|
-
corrected = autocorrect_source(cop, ['where(x: "y", foo: "bar")'])
|
279
|
-
expect(corrected).to eq('where({x: "y", foo: "bar"})')
|
280
|
-
end
|
281
|
-
|
282
|
-
it 'corrects one hash parameter without braces with one hash value' do
|
283
|
-
corrected = autocorrect_source(cop, ['where(x: { "y" => "z" })'])
|
284
|
-
expect(corrected).to eq('where({x: { "y" => "z" }})')
|
285
|
-
end
|
286
|
-
end
|
287
|
-
end
|
288
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::CaseEquality do
|
6
|
-
subject(:cop) { described_class.new }
|
7
|
-
|
8
|
-
it 'registers an offense for ===' do
|
9
|
-
inspect_source(cop, 'Array === var')
|
10
|
-
expect(cop.offenses.size).to eq(1)
|
11
|
-
expect(cop.highlights).to eq(['==='])
|
12
|
-
end
|
13
|
-
end
|
@@ -1,293 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::CaseIndentation do
|
6
|
-
subject(:cop) { described_class.new(config) }
|
7
|
-
let(:config) do
|
8
|
-
merged = RuboCop::ConfigLoader
|
9
|
-
.default_configuration['Style/CaseIndentation'].merge(cop_config)
|
10
|
-
RuboCop::Config.new('Style/CaseIndentation' => merged,
|
11
|
-
'Style/IndentationWidth' => { 'Width' => 2 })
|
12
|
-
end
|
13
|
-
|
14
|
-
context 'with IndentWhenRelativeTo: case' do
|
15
|
-
context 'with IndentOneStep: false' do
|
16
|
-
let(:cop_config) do
|
17
|
-
{ 'IndentWhenRelativeTo' => 'case', 'IndentOneStep' => false }
|
18
|
-
end
|
19
|
-
|
20
|
-
context 'regarding assignment where the right hand side is a case' do
|
21
|
-
it 'accepts a correctly indented assignment' do
|
22
|
-
source = ['output = case variable',
|
23
|
-
" when 'value1'",
|
24
|
-
" 'output1'",
|
25
|
-
' else',
|
26
|
-
" 'output2'",
|
27
|
-
' end']
|
28
|
-
inspect_source(cop, source)
|
29
|
-
expect(cop.offenses).to be_empty
|
30
|
-
end
|
31
|
-
|
32
|
-
it 'registers an offense for an assignment indented as end' do
|
33
|
-
source = ['output = case variable',
|
34
|
-
"when 'value1'",
|
35
|
-
" 'output1'",
|
36
|
-
'else',
|
37
|
-
" 'output2'",
|
38
|
-
'end']
|
39
|
-
inspect_source(cop, source)
|
40
|
-
expect(cop.messages).to eq(['Indent `when` as deep as `case`.'])
|
41
|
-
expect(cop.config_to_allow_offenses).to eq('IndentWhenRelativeTo' =>
|
42
|
-
'end')
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'registers an offense for an assignment indented some other way' do
|
46
|
-
source = ['output = case variable',
|
47
|
-
" when 'value1'",
|
48
|
-
" 'output1'",
|
49
|
-
' else',
|
50
|
-
" 'output2'",
|
51
|
-
'end']
|
52
|
-
inspect_source(cop, source)
|
53
|
-
expect(cop.messages).to eq(['Indent `when` as deep as `case`.'])
|
54
|
-
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'registers an offense for correct + opposite' do
|
58
|
-
source = ['output = case variable',
|
59
|
-
" when 'value1'",
|
60
|
-
" 'output1'",
|
61
|
-
' else',
|
62
|
-
" 'output2'",
|
63
|
-
' end',
|
64
|
-
'output = case variable',
|
65
|
-
"when 'value1'",
|
66
|
-
" 'output1'",
|
67
|
-
'else',
|
68
|
-
" 'output2'",
|
69
|
-
'end']
|
70
|
-
inspect_source(cop, source)
|
71
|
-
expect(cop.messages).to eq(['Indent `when` as deep as `case`.'])
|
72
|
-
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
it "registers an offense for a when clause that's deeper than case" do
|
77
|
-
source = ['case a',
|
78
|
-
' when 0 then return',
|
79
|
-
' else',
|
80
|
-
' case b',
|
81
|
-
' when 1 then return',
|
82
|
-
' end',
|
83
|
-
'end']
|
84
|
-
inspect_source(cop, source)
|
85
|
-
expect(cop.messages).to eq(['Indent `when` as deep as `case`.'] * 2)
|
86
|
-
end
|
87
|
-
|
88
|
-
it "accepts a when clause that's equally indented with case" do
|
89
|
-
source = ['y = case a',
|
90
|
-
' when 0 then break',
|
91
|
-
' when 0 then return',
|
92
|
-
' else',
|
93
|
-
' z = case b',
|
94
|
-
' when 1 then return',
|
95
|
-
' when 1 then break',
|
96
|
-
' end',
|
97
|
-
' end',
|
98
|
-
'case c',
|
99
|
-
'when 2 then encoding',
|
100
|
-
'end',
|
101
|
-
'']
|
102
|
-
inspect_source(cop, source)
|
103
|
-
expect(cop.offenses).to be_empty
|
104
|
-
end
|
105
|
-
|
106
|
-
it "doesn't get confused by strings with case in them" do
|
107
|
-
source = ['a = "case"',
|
108
|
-
'case x',
|
109
|
-
'when 0',
|
110
|
-
'end',
|
111
|
-
'']
|
112
|
-
inspect_source(cop, source)
|
113
|
-
expect(cop.messages).to be_empty
|
114
|
-
end
|
115
|
-
|
116
|
-
it "doesn't get confused by symbols named case or when" do
|
117
|
-
source = ['KEYWORDS = { :case => true, :when => true }',
|
118
|
-
'case type',
|
119
|
-
'when 0',
|
120
|
-
' ParameterNode',
|
121
|
-
'when 1',
|
122
|
-
' MethodCallNode',
|
123
|
-
'end',
|
124
|
-
'']
|
125
|
-
inspect_source(cop, source)
|
126
|
-
expect(cop.messages).to be_empty
|
127
|
-
end
|
128
|
-
|
129
|
-
it 'accepts correctly indented whens in complex combinations' do
|
130
|
-
source = ['each {',
|
131
|
-
' case state',
|
132
|
-
' when 0',
|
133
|
-
' case name',
|
134
|
-
' when :a',
|
135
|
-
' end',
|
136
|
-
' when 1',
|
137
|
-
' loop {',
|
138
|
-
' case name',
|
139
|
-
' when :b',
|
140
|
-
' end',
|
141
|
-
' }',
|
142
|
-
' end',
|
143
|
-
'}',
|
144
|
-
'case s',
|
145
|
-
'when Array',
|
146
|
-
'end',
|
147
|
-
'']
|
148
|
-
inspect_source(cop, source)
|
149
|
-
expect(cop.messages).to be_empty
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
context 'with IndentOneStep: true' do
|
154
|
-
let(:cop_config) do
|
155
|
-
{ 'IndentWhenRelativeTo' => 'case', 'IndentOneStep' => true }
|
156
|
-
end
|
157
|
-
|
158
|
-
context 'regarding assignment where the right hand side is a case' do
|
159
|
-
it 'accepts a correctly indented assignment' do
|
160
|
-
source = ['output = case variable',
|
161
|
-
" when 'value1'",
|
162
|
-
" 'output1'",
|
163
|
-
' else',
|
164
|
-
" 'output2'",
|
165
|
-
' end']
|
166
|
-
inspect_source(cop, source)
|
167
|
-
expect(cop.offenses).to be_empty
|
168
|
-
end
|
169
|
-
|
170
|
-
it 'registers an offense for an assignment indented some other way' do
|
171
|
-
source = ['output = case variable',
|
172
|
-
" when 'value1'",
|
173
|
-
" 'output1'",
|
174
|
-
' else',
|
175
|
-
" 'output2'",
|
176
|
-
' end']
|
177
|
-
inspect_source(cop, source)
|
178
|
-
expect(cop.messages)
|
179
|
-
.to eq(['Indent `when` one step more than `case`.'])
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
it "accepts a when clause that's 2 spaces deeper than case" do
|
184
|
-
source = ['case a',
|
185
|
-
' when 0 then return',
|
186
|
-
' else',
|
187
|
-
' case b',
|
188
|
-
' when 1 then return',
|
189
|
-
' end',
|
190
|
-
'end']
|
191
|
-
inspect_source(cop, source)
|
192
|
-
expect(cop.offenses).to be_empty
|
193
|
-
end
|
194
|
-
|
195
|
-
it "registers an offense for a when clause that's equally indented " \
|
196
|
-
'with case' do
|
197
|
-
source = ['y = case a',
|
198
|
-
' when 0 then break',
|
199
|
-
' when 0 then return',
|
200
|
-
' z = case b',
|
201
|
-
' when 1 then return',
|
202
|
-
' when 1 then break',
|
203
|
-
' end',
|
204
|
-
' end',
|
205
|
-
'case c',
|
206
|
-
'when 2 then encoding',
|
207
|
-
'end',
|
208
|
-
'']
|
209
|
-
inspect_source(cop, source)
|
210
|
-
expect(cop.messages)
|
211
|
-
.to eq(['Indent `when` one step more than `case`.'] * 5)
|
212
|
-
end
|
213
|
-
end
|
214
|
-
end
|
215
|
-
|
216
|
-
context 'with IndentWhenRelativeTo: end' do
|
217
|
-
context 'with IndentOneStep: false' do
|
218
|
-
let(:cop_config) do
|
219
|
-
{ 'IndentWhenRelativeTo' => 'end', 'IndentOneStep' => false }
|
220
|
-
end
|
221
|
-
|
222
|
-
context 'regarding assignment where the right hand side is a case' do
|
223
|
-
it 'accepts a correctly indented assignment' do
|
224
|
-
source = ['output = case variable',
|
225
|
-
"when 'value1'",
|
226
|
-
" 'output1'",
|
227
|
-
'else',
|
228
|
-
" 'output2'",
|
229
|
-
'end']
|
230
|
-
inspect_source(cop, source)
|
231
|
-
expect(cop.offenses).to be_empty
|
232
|
-
end
|
233
|
-
|
234
|
-
it 'registers an offense for an assignment indented some other way' do
|
235
|
-
source = ['output = case variable',
|
236
|
-
" when 'value1'",
|
237
|
-
" 'output1'",
|
238
|
-
' else',
|
239
|
-
" 'output2'",
|
240
|
-
'end']
|
241
|
-
inspect_source(cop, source)
|
242
|
-
expect(cop.messages).to eq(['Indent `when` as deep as `end`.'])
|
243
|
-
end
|
244
|
-
end
|
245
|
-
end
|
246
|
-
|
247
|
-
context 'with IndentOneStep: true' do
|
248
|
-
let(:cop_config) do
|
249
|
-
{ 'IndentWhenRelativeTo' => 'end', 'IndentOneStep' => true }
|
250
|
-
end
|
251
|
-
|
252
|
-
context 'regarding assignment where the right hand side is a case' do
|
253
|
-
it 'accepts a correctly indented assignment' do
|
254
|
-
source = ['output = case variable',
|
255
|
-
" when 'value1'",
|
256
|
-
" 'output1'",
|
257
|
-
' else',
|
258
|
-
" 'output2'",
|
259
|
-
'end']
|
260
|
-
inspect_source(cop, source)
|
261
|
-
expect(cop.offenses).to be_empty
|
262
|
-
end
|
263
|
-
|
264
|
-
it 'registers an offense for an assignment indented as case' do
|
265
|
-
source = ['output = case variable',
|
266
|
-
" when 'value1'",
|
267
|
-
" 'output1'",
|
268
|
-
' else',
|
269
|
-
" 'output2'",
|
270
|
-
' end']
|
271
|
-
inspect_source(cop, source)
|
272
|
-
expect(cop.messages)
|
273
|
-
.to eq(['Indent `when` one step more than `end`.'])
|
274
|
-
expect(cop.config_to_allow_offenses).to eq('IndentWhenRelativeTo' =>
|
275
|
-
'case')
|
276
|
-
end
|
277
|
-
|
278
|
-
it 'registers an offense for an assignment indented some other way' do
|
279
|
-
source = ['output = case variable',
|
280
|
-
" when 'value1'",
|
281
|
-
" 'output1'",
|
282
|
-
' else',
|
283
|
-
" 'output2'",
|
284
|
-
' end']
|
285
|
-
inspect_source(cop, source)
|
286
|
-
expect(cop.messages)
|
287
|
-
.to eq(['Indent `when` one step more than `end`.'])
|
288
|
-
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
|
289
|
-
end
|
290
|
-
end
|
291
|
-
end
|
292
|
-
end
|
293
|
-
end
|