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,146 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::IfUnlessModifier do
|
6
|
-
include StatementModifierHelper
|
7
|
-
|
8
|
-
subject(:cop) { described_class.new(config) }
|
9
|
-
let(:config) do
|
10
|
-
hash = { 'Metrics/LineLength' => { 'Max' => 80 } }
|
11
|
-
RuboCop::Config.new(hash)
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'registers an offense for multiline if that fits on one line' do
|
15
|
-
# This if statement fits exactly on one line if written as a
|
16
|
-
# modifier.
|
17
|
-
condition = 'a' * 38
|
18
|
-
body = 'b' * 36
|
19
|
-
expect(" #{body} if #{condition}".length).to eq(80)
|
20
|
-
|
21
|
-
inspect_source(cop,
|
22
|
-
[" if #{condition}",
|
23
|
-
" #{body}",
|
24
|
-
' end'])
|
25
|
-
expect(cop.messages).to eq(
|
26
|
-
['Favor modifier `if` usage when having a single-line' \
|
27
|
-
' body. Another good alternative is the usage of control flow' \
|
28
|
-
' `&&`/`||`.'])
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'registers an offense for short multiline if near an else etc' do
|
32
|
-
inspect_source(cop,
|
33
|
-
['if x',
|
34
|
-
' y',
|
35
|
-
'elsif x1',
|
36
|
-
' y1',
|
37
|
-
'else',
|
38
|
-
' z',
|
39
|
-
'end',
|
40
|
-
'n = a ? 0 : 1',
|
41
|
-
'm = 3 if m0',
|
42
|
-
'',
|
43
|
-
'if a',
|
44
|
-
' b',
|
45
|
-
'end'])
|
46
|
-
expect(cop.offenses.size).to eq(1)
|
47
|
-
end
|
48
|
-
|
49
|
-
it "accepts multiline if that doesn't fit on one line" do
|
50
|
-
check_too_long(cop, 'if')
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'accepts multiline if whose body is more than one line' do
|
54
|
-
check_short_multiline(cop, 'if')
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'registers an offense for multiline unless that fits on one line' do
|
58
|
-
inspect_source(cop, ['unless a',
|
59
|
-
' b',
|
60
|
-
'end'])
|
61
|
-
expect(cop.messages).to eq(
|
62
|
-
['Favor modifier `unless` usage when having a single-line' \
|
63
|
-
' body. Another good alternative is the usage of control flow' \
|
64
|
-
' `&&`/`||`.'])
|
65
|
-
end
|
66
|
-
|
67
|
-
it 'accepts code with EOL comment since user might want to keep it' do
|
68
|
-
inspect_source(cop, ['unless a',
|
69
|
-
' b # A comment',
|
70
|
-
'end'])
|
71
|
-
expect(cop.offenses).to be_empty
|
72
|
-
end
|
73
|
-
|
74
|
-
it 'accepts if-else-end' do
|
75
|
-
inspect_source(cop,
|
76
|
-
'if args.last.is_a? Hash then args.pop else ' \
|
77
|
-
'Hash.new end')
|
78
|
-
expect(cop.messages).to be_empty
|
79
|
-
end
|
80
|
-
|
81
|
-
it 'accepts an empty condition' do
|
82
|
-
check_empty(cop, 'if')
|
83
|
-
check_empty(cop, 'unless')
|
84
|
-
end
|
85
|
-
|
86
|
-
it 'accepts if/elsif' do
|
87
|
-
inspect_source(cop, ['if test',
|
88
|
-
' something',
|
89
|
-
'elsif test2',
|
90
|
-
' something_else',
|
91
|
-
'end'])
|
92
|
-
expect(cop.offenses).to be_empty
|
93
|
-
end
|
94
|
-
|
95
|
-
context 'with implicit match conditional' do
|
96
|
-
let(:source) do
|
97
|
-
[
|
98
|
-
" if #{conditional}",
|
99
|
-
" #{body}",
|
100
|
-
' end'
|
101
|
-
]
|
102
|
-
end
|
103
|
-
|
104
|
-
let(:body) { 'b' * 36 }
|
105
|
-
|
106
|
-
context 'when a multiline if fits on one line' do
|
107
|
-
let(:conditional) { "/#{'a' * 36}/" }
|
108
|
-
|
109
|
-
it 'registers an offense' do
|
110
|
-
expect(" #{body} if #{conditional}".length).to eq(80)
|
111
|
-
|
112
|
-
inspect_source(cop, source)
|
113
|
-
expect(cop.offenses.size).to eq(1)
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
context "when a multiline if doesn't fit on one line" do
|
118
|
-
let(:conditional) { "/#{'a' * 37}/" }
|
119
|
-
|
120
|
-
it 'accepts' do
|
121
|
-
expect(" #{body} if #{conditional}".length).to eq(81)
|
122
|
-
|
123
|
-
inspect_source(cop, source)
|
124
|
-
expect(cop.offenses).to be_empty
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
context 'when the maximum line length is specified by the cop itself' do
|
129
|
-
let(:config) do
|
130
|
-
hash = {
|
131
|
-
'Metrics/LineLength' => { 'Max' => 100 },
|
132
|
-
'Style/IfUnlessModifier' => { 'MaxLineLength' => 80 }
|
133
|
-
}
|
134
|
-
RuboCop::Config.new(hash)
|
135
|
-
end
|
136
|
-
|
137
|
-
it "accepts multiline if that doesn't fit on one line" do
|
138
|
-
check_too_long(cop, 'if')
|
139
|
-
end
|
140
|
-
|
141
|
-
it "accepts multiline unless that doesn't fit on one line" do
|
142
|
-
check_too_long(cop, 'unless')
|
143
|
-
end
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::IfWithSemicolon do
|
6
|
-
subject(:cop) { described_class.new }
|
7
|
-
|
8
|
-
it 'registers an offense for one line if/;/end' do
|
9
|
-
inspect_source(cop, 'if cond; run else dont end')
|
10
|
-
expect(cop.messages).to eq(
|
11
|
-
['Do not use if x; Use the ternary operator instead.'])
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'accepts one line if/then/end' do
|
15
|
-
inspect_source(cop, 'if cond then run else dont end')
|
16
|
-
expect(cop.messages).to be_empty
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'can handle modifier conditionals' do
|
20
|
-
inspect_source(cop, ['class Hash',
|
21
|
-
'end if RUBY_VERSION < "1.8.7"'])
|
22
|
-
expect(cop.messages).to be_empty
|
23
|
-
end
|
24
|
-
end
|
@@ -1,173 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::IndentArray do
|
6
|
-
subject(:cop) { described_class.new(config) }
|
7
|
-
let(:config) do
|
8
|
-
RuboCop::Config
|
9
|
-
.new('Style/IndentationWidth' => { 'Width' => indentation_width })
|
10
|
-
end
|
11
|
-
let(:indentation_width) { 2 }
|
12
|
-
|
13
|
-
it 'accepts multi-assignments' do
|
14
|
-
inspect_source(cop, 'a, b = b, a')
|
15
|
-
expect(cop.offenses).to be_empty
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'accepts correctly indented only element' do
|
19
|
-
inspect_source(cop,
|
20
|
-
['a << [',
|
21
|
-
' 1',
|
22
|
-
']'])
|
23
|
-
expect(cop.offenses).to be_empty
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'registers an offense for incorrectly indented only element' do
|
27
|
-
inspect_source(cop,
|
28
|
-
['a << [',
|
29
|
-
' 1',
|
30
|
-
']'])
|
31
|
-
expect(cop.highlights).to eq(['1'])
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'registers an offense for incorrectly indented closing bracket in an ' \
|
35
|
-
'empty array' do
|
36
|
-
inspect_source(cop,
|
37
|
-
['a << [',
|
38
|
-
' ]'])
|
39
|
-
expect(cop.messages)
|
40
|
-
.to eq(['Indent the right bracket the same as the start of the line ' \
|
41
|
-
'where the left bracket is.'])
|
42
|
-
expect(cop.highlights).to eq([']'])
|
43
|
-
end
|
44
|
-
|
45
|
-
context 'when the first element is not on its own line' do
|
46
|
-
it 'registers an offense for an incorrectly indented closing bracket' do
|
47
|
-
inspect_source(cop,
|
48
|
-
['a = [1,',
|
49
|
-
' 2,',
|
50
|
-
']'])
|
51
|
-
expect(cop.highlights).to eq([']'])
|
52
|
-
expect(cop.messages)
|
53
|
-
.to eq(['Indent the right bracket the same as the left bracket.'])
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'accepts closing bracket indented the same as opening bracket' do
|
57
|
-
inspect_source(cop,
|
58
|
-
['a = [1,',
|
59
|
-
' 2,',
|
60
|
-
' ]'])
|
61
|
-
expect(cop.highlights).to eq([])
|
62
|
-
expect(cop.offenses).to be_empty
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
it 'auto-corrects incorrectly indented only element' do
|
67
|
-
corrected = autocorrect_source(cop, ['a << [',
|
68
|
-
' 1',
|
69
|
-
']'])
|
70
|
-
expect(corrected).to eq ['a << [',
|
71
|
-
' 1',
|
72
|
-
']'].join("\n")
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'accepts correctly indented first element' do
|
76
|
-
inspect_source(cop,
|
77
|
-
['[',
|
78
|
-
' x,',
|
79
|
-
' y',
|
80
|
-
']'])
|
81
|
-
expect(cop.offenses).to be_empty
|
82
|
-
end
|
83
|
-
|
84
|
-
it 'registers an offense for incorrectly indented first element' do
|
85
|
-
inspect_source(cop,
|
86
|
-
['[',
|
87
|
-
'x,',
|
88
|
-
' y',
|
89
|
-
']'])
|
90
|
-
expect(cop.highlights).to eq(['x'])
|
91
|
-
end
|
92
|
-
|
93
|
-
it 'accepts several elements per line' do
|
94
|
-
inspect_source(cop,
|
95
|
-
['a = [',
|
96
|
-
' 1, 2',
|
97
|
-
']'])
|
98
|
-
expect(cop.offenses).to be_empty
|
99
|
-
end
|
100
|
-
|
101
|
-
it 'accepts a first element on the same line as the left bracket' do
|
102
|
-
inspect_source(cop,
|
103
|
-
['a = ["a",',
|
104
|
-
' "b"]'])
|
105
|
-
expect(cop.offenses).to be_empty
|
106
|
-
end
|
107
|
-
|
108
|
-
it 'accepts single line array' do
|
109
|
-
inspect_source(cop, 'a = [1, 2]')
|
110
|
-
expect(cop.offenses).to be_empty
|
111
|
-
end
|
112
|
-
|
113
|
-
it 'accepts an empty array' do
|
114
|
-
inspect_source(cop, 'a = []')
|
115
|
-
expect(cop.offenses).to be_empty
|
116
|
-
end
|
117
|
-
|
118
|
-
context 'when array is method argument' do
|
119
|
-
context 'and arguments are surrounded by parentheses' do
|
120
|
-
it 'accepts normal indentation for first argument' do
|
121
|
-
inspect_source(cop,
|
122
|
-
['func([',
|
123
|
-
' 1',
|
124
|
-
'])'])
|
125
|
-
expect(cop.offenses).to be_empty
|
126
|
-
end
|
127
|
-
|
128
|
-
it 'registers an offense for incorrect indentation' do
|
129
|
-
inspect_source(cop,
|
130
|
-
['func([',
|
131
|
-
' 1',
|
132
|
-
' ])'])
|
133
|
-
expect(cop.messages)
|
134
|
-
.to eq(['Use 2 spaces for indentation in an array, relative to ' \
|
135
|
-
'the start of the line where the left bracket is.',
|
136
|
-
|
137
|
-
'Indent the right bracket the same as the start of the ' \
|
138
|
-
'line where the left bracket is.'])
|
139
|
-
end
|
140
|
-
|
141
|
-
it 'accepts normal indentation for second argument' do
|
142
|
-
inspect_source(cop,
|
143
|
-
['body.should have_tag("input", [',
|
144
|
-
' :name])'])
|
145
|
-
expect(cop.offenses).to be_empty
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
context 'and arguments are not surrounded by parentheses' do
|
150
|
-
it 'accepts single line array' do
|
151
|
-
inspect_source(cop, 'func x, [1, 2]')
|
152
|
-
expect(cop.offenses).to be_empty
|
153
|
-
end
|
154
|
-
|
155
|
-
it 'accepts a correctly indented multi-line array' do
|
156
|
-
inspect_source(cop,
|
157
|
-
['func x, [',
|
158
|
-
' 1, 2]'])
|
159
|
-
expect(cop.offenses).to be_empty
|
160
|
-
end
|
161
|
-
|
162
|
-
it 'registers an offense for incorrectly indented multi-line array' do
|
163
|
-
inspect_source(cop,
|
164
|
-
['func x, [',
|
165
|
-
' 1, 2]'])
|
166
|
-
expect(cop.messages)
|
167
|
-
.to eq(['Use 2 spaces for indentation in an array, relative to ' \
|
168
|
-
'the start of the line where the left bracket is.'])
|
169
|
-
expect(cop.highlights).to eq(['1'])
|
170
|
-
end
|
171
|
-
end
|
172
|
-
end
|
173
|
-
end
|
@@ -1,367 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::IndentHash do
|
6
|
-
subject(:cop) { described_class.new(config) }
|
7
|
-
let(:config) do
|
8
|
-
supported_styles = {
|
9
|
-
'SupportedStyles' => %w(special_inside_parentheses consistent)
|
10
|
-
}
|
11
|
-
RuboCop::Config.new('Style/AlignHash' => align_hash_config,
|
12
|
-
'Style/IndentHash' =>
|
13
|
-
cop_config.merge(supported_styles),
|
14
|
-
'Style/IndentationWidth' => { 'Width' => 2 })
|
15
|
-
end
|
16
|
-
let(:align_hash_config) do
|
17
|
-
{
|
18
|
-
'Enabled' => true,
|
19
|
-
'EnforcedColonStyle' => 'key',
|
20
|
-
'EnforcedHashRocketStyle' => 'key'
|
21
|
-
}
|
22
|
-
end
|
23
|
-
let(:cop_config) { { 'EnforcedStyle' => 'special_inside_parentheses' } }
|
24
|
-
|
25
|
-
shared_examples 'right brace' do
|
26
|
-
it 'registers an offense for incorrectly indented }' do
|
27
|
-
inspect_source(cop,
|
28
|
-
['a << {',
|
29
|
-
' }'])
|
30
|
-
expect(cop.highlights).to eq(['}'])
|
31
|
-
expect(cop.messages)
|
32
|
-
.to eq(['Indent the right brace the same as the start of the line ' \
|
33
|
-
'where the left brace is.'])
|
34
|
-
expect(cop.config_to_allow_offenses).to eq(nil)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context 'when the AlignHash style is separator for :' do
|
39
|
-
let(:align_hash_config) do
|
40
|
-
{
|
41
|
-
'Enabled' => true,
|
42
|
-
'EnforcedColonStyle' => 'separator',
|
43
|
-
'EnforcedHashRocketStyle' => 'key'
|
44
|
-
}
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'accepts correctly indented first pair' do
|
48
|
-
inspect_source(cop,
|
49
|
-
['a << {',
|
50
|
-
' a: 1,',
|
51
|
-
' aaa: 222',
|
52
|
-
'}'])
|
53
|
-
expect(cop.offenses).to be_empty
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'registers an offense for incorrectly indented first pair with :' do
|
57
|
-
inspect_source(cop,
|
58
|
-
['a << {',
|
59
|
-
' a: 1,',
|
60
|
-
' aaa: 222',
|
61
|
-
'}'])
|
62
|
-
expect(cop.highlights).to eq(['a: 1'])
|
63
|
-
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
|
64
|
-
end
|
65
|
-
|
66
|
-
include_examples 'right brace'
|
67
|
-
end
|
68
|
-
|
69
|
-
context 'when the AlignHash style is separator for =>' do
|
70
|
-
let(:align_hash_config) do
|
71
|
-
{
|
72
|
-
'Enabled' => true,
|
73
|
-
'EnforcedColonStyle' => 'key',
|
74
|
-
'EnforcedHashRocketStyle' => 'separator'
|
75
|
-
}
|
76
|
-
end
|
77
|
-
|
78
|
-
it 'accepts correctly indented first pair' do
|
79
|
-
inspect_source(cop,
|
80
|
-
['a << {',
|
81
|
-
" 'a' => 1,",
|
82
|
-
" 'aaa' => 222",
|
83
|
-
'}'])
|
84
|
-
expect(cop.offenses).to be_empty
|
85
|
-
end
|
86
|
-
|
87
|
-
it 'registers an offense for incorrectly indented first pair with =>' do
|
88
|
-
inspect_source(cop,
|
89
|
-
['a << {',
|
90
|
-
" 'a' => 1,",
|
91
|
-
" 'aaa' => 222",
|
92
|
-
'}'])
|
93
|
-
expect(cop.highlights).to eq(["'a' => 1"])
|
94
|
-
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
|
95
|
-
end
|
96
|
-
|
97
|
-
include_examples 'right brace'
|
98
|
-
end
|
99
|
-
|
100
|
-
context 'when hash is operand' do
|
101
|
-
it 'accepts correctly indented first pair' do
|
102
|
-
inspect_source(cop,
|
103
|
-
['a << {',
|
104
|
-
' a: 1',
|
105
|
-
'}'])
|
106
|
-
expect(cop.offenses).to be_empty
|
107
|
-
end
|
108
|
-
|
109
|
-
it 'registers an offense for incorrectly indented first pair' do
|
110
|
-
inspect_source(cop,
|
111
|
-
['a << {',
|
112
|
-
' a: 1',
|
113
|
-
'}'])
|
114
|
-
expect(cop.highlights).to eq(['a: 1'])
|
115
|
-
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
|
116
|
-
end
|
117
|
-
|
118
|
-
it 'auto-corrects incorrectly indented first pair' do
|
119
|
-
corrected = autocorrect_source(cop, ['a << {',
|
120
|
-
' a: 1',
|
121
|
-
'}'])
|
122
|
-
expect(corrected).to eq ['a << {',
|
123
|
-
' a: 1',
|
124
|
-
'}'].join("\n")
|
125
|
-
end
|
126
|
-
|
127
|
-
include_examples 'right brace'
|
128
|
-
end
|
129
|
-
|
130
|
-
context 'when hash is argument to setter' do
|
131
|
-
it 'accepts correctly indented first pair' do
|
132
|
-
inspect_source(cop,
|
133
|
-
[' config.rack_cache = {',
|
134
|
-
' :metastore => "rails:/",',
|
135
|
-
' :entitystore => "rails:/",',
|
136
|
-
' :verbose => false',
|
137
|
-
' }'])
|
138
|
-
expect(cop.offenses).to be_empty
|
139
|
-
end
|
140
|
-
|
141
|
-
it 'registers an offense for incorrectly indented first pair' do
|
142
|
-
inspect_source(cop,
|
143
|
-
[' config.rack_cache = {',
|
144
|
-
' :metastore => "rails:/",',
|
145
|
-
' :entitystore => "rails:/",',
|
146
|
-
' :verbose => false',
|
147
|
-
' }'])
|
148
|
-
expect(cop.highlights).to eq([':metastore => "rails:/"'])
|
149
|
-
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
context 'when hash is right hand side in assignment' do
|
154
|
-
it 'registers an offense for incorrectly indented first pair' do
|
155
|
-
inspect_source(cop, ['a = {',
|
156
|
-
' a: 1,',
|
157
|
-
' b: 2,',
|
158
|
-
' c: 3',
|
159
|
-
'}'])
|
160
|
-
expect(cop.messages)
|
161
|
-
.to eq(['Use 2 spaces for indentation in a hash, relative to the ' \
|
162
|
-
'start of the line where the left curly brace is.'])
|
163
|
-
expect(cop.highlights).to eq(['a: 1'])
|
164
|
-
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
|
165
|
-
end
|
166
|
-
|
167
|
-
it 'auto-corrects incorrectly indented first pair' do
|
168
|
-
corrected = autocorrect_source(cop, ['a = {',
|
169
|
-
' a: 1,',
|
170
|
-
' b: 2,',
|
171
|
-
' c: 3',
|
172
|
-
'}'])
|
173
|
-
expect(corrected).to eq ['a = {',
|
174
|
-
' a: 1,',
|
175
|
-
' b: 2,',
|
176
|
-
' c: 3',
|
177
|
-
'}'].join("\n")
|
178
|
-
end
|
179
|
-
|
180
|
-
it 'accepts correctly indented first pair' do
|
181
|
-
inspect_source(cop,
|
182
|
-
['a = {',
|
183
|
-
' a: 1',
|
184
|
-
'}'])
|
185
|
-
expect(cop.offenses).to be_empty
|
186
|
-
end
|
187
|
-
|
188
|
-
it 'accepts several pairs per line' do
|
189
|
-
inspect_source(cop,
|
190
|
-
['a = {',
|
191
|
-
' a: 1, b: 2',
|
192
|
-
'}'])
|
193
|
-
expect(cop.offenses).to be_empty
|
194
|
-
end
|
195
|
-
|
196
|
-
it 'accepts a first pair on the same line as the left brace' do
|
197
|
-
inspect_source(cop,
|
198
|
-
['a = { "a" => 1,',
|
199
|
-
' "b" => 2 }'])
|
200
|
-
expect(cop.offenses).to be_empty
|
201
|
-
end
|
202
|
-
|
203
|
-
it 'accepts single line hash' do
|
204
|
-
inspect_source(cop,
|
205
|
-
'a = { a: 1, b: 2 }')
|
206
|
-
expect(cop.offenses).to be_empty
|
207
|
-
end
|
208
|
-
|
209
|
-
it 'accepts an empty hash' do
|
210
|
-
inspect_source(cop,
|
211
|
-
'a = {}')
|
212
|
-
expect(cop.offenses).to be_empty
|
213
|
-
end
|
214
|
-
end
|
215
|
-
|
216
|
-
context 'when hash is method argument' do
|
217
|
-
context 'and arguments are surrounded by parentheses' do
|
218
|
-
context 'and EnforcedStyle is special_inside_parentheses' do
|
219
|
-
it 'accepts special indentation for first argument' do
|
220
|
-
inspect_source(cop,
|
221
|
-
# Only the function calls are affected by
|
222
|
-
# EnforcedStyle setting. Other indentation shall be
|
223
|
-
# the same regardless of EnforcedStyle.
|
224
|
-
['h = {',
|
225
|
-
' a: 1',
|
226
|
-
'}',
|
227
|
-
'func({',
|
228
|
-
' a: 1',
|
229
|
-
' })',
|
230
|
-
'func(x, {',
|
231
|
-
' a: 1',
|
232
|
-
' })',
|
233
|
-
'h = { a: 1',
|
234
|
-
'}',
|
235
|
-
'func({ a: 1',
|
236
|
-
' })',
|
237
|
-
'func(x, { a: 1',
|
238
|
-
' })'])
|
239
|
-
expect(cop.offenses).to be_empty
|
240
|
-
end
|
241
|
-
|
242
|
-
it 'registers an offense for incorrect indentation' do
|
243
|
-
inspect_source(cop,
|
244
|
-
['func({',
|
245
|
-
' a: 1',
|
246
|
-
'})'])
|
247
|
-
expect(cop.messages)
|
248
|
-
.to eq(['Use 2 spaces for indentation in a hash, relative to the' \
|
249
|
-
' first position after the preceding left parenthesis.',
|
250
|
-
|
251
|
-
'Indent the right brace the same as the first position ' \
|
252
|
-
'after the preceding left parenthesis.'])
|
253
|
-
expect(cop.config_to_allow_offenses)
|
254
|
-
.to eq('EnforcedStyle' => 'consistent')
|
255
|
-
end
|
256
|
-
|
257
|
-
it 'auto-corrects incorrectly indented first pair' do
|
258
|
-
corrected = autocorrect_source(cop, ['func({',
|
259
|
-
' a: 1',
|
260
|
-
'})'])
|
261
|
-
expect(corrected).to eq ['func({',
|
262
|
-
' a: 1',
|
263
|
-
' })'].join("\n")
|
264
|
-
end
|
265
|
-
|
266
|
-
it 'accepts special indentation for second argument' do
|
267
|
-
inspect_source(cop,
|
268
|
-
['body.should have_tag("input", :attributes => {',
|
269
|
-
' :name => /q\[(id_eq)\]/ })'])
|
270
|
-
expect(cop.offenses).to be_empty
|
271
|
-
end
|
272
|
-
|
273
|
-
it 'accepts normal indentation for hash within hash' do
|
274
|
-
inspect_source(cop,
|
275
|
-
['scope = scope.where(',
|
276
|
-
' klass.table_name => {',
|
277
|
-
' reflection.type => model.base_class.sti_name',
|
278
|
-
' }',
|
279
|
-
')'])
|
280
|
-
expect(cop.offenses).to be_empty
|
281
|
-
end
|
282
|
-
end
|
283
|
-
|
284
|
-
context 'and EnforcedStyle is consistent' do
|
285
|
-
let(:cop_config) { { 'EnforcedStyle' => 'consistent' } }
|
286
|
-
|
287
|
-
it 'accepts normal indentation for first argument' do
|
288
|
-
inspect_source(cop,
|
289
|
-
# Only the function calls are affected by
|
290
|
-
# EnforcedStyle setting. Other indentation shall be
|
291
|
-
# the same regardless of EnforcedStyle.
|
292
|
-
['h = {',
|
293
|
-
' a: 1',
|
294
|
-
'}',
|
295
|
-
'func({',
|
296
|
-
' a: 1',
|
297
|
-
'})',
|
298
|
-
'func(x, {',
|
299
|
-
' a: 1',
|
300
|
-
'})',
|
301
|
-
'h = { a: 1',
|
302
|
-
'}',
|
303
|
-
'func({ a: 1',
|
304
|
-
'})',
|
305
|
-
'func(x, { a: 1',
|
306
|
-
'})'])
|
307
|
-
expect(cop.offenses).to be_empty
|
308
|
-
end
|
309
|
-
|
310
|
-
it 'registers an offense for incorrect indentation' do
|
311
|
-
inspect_source(cop,
|
312
|
-
['func({',
|
313
|
-
' a: 1',
|
314
|
-
' })'])
|
315
|
-
expect(cop.messages)
|
316
|
-
.to eq(['Use 2 spaces for indentation in a hash, relative to the' \
|
317
|
-
' start of the line where the left curly brace is.',
|
318
|
-
|
319
|
-
'Indent the right brace the same as the start of the ' \
|
320
|
-
'line where the left brace is.'])
|
321
|
-
expect(cop.config_to_allow_offenses)
|
322
|
-
.to eq('EnforcedStyle' => 'special_inside_parentheses')
|
323
|
-
end
|
324
|
-
|
325
|
-
it 'accepts normal indentation for second argument' do
|
326
|
-
inspect_source(cop,
|
327
|
-
['body.should have_tag("input", :attributes => {',
|
328
|
-
' :name => /q\[(id_eq)\]/ })'])
|
329
|
-
expect(cop.offenses).to be_empty
|
330
|
-
end
|
331
|
-
end
|
332
|
-
end
|
333
|
-
|
334
|
-
context 'and argument are not surrounded by parentheses' do
|
335
|
-
it 'accepts braceless hash' do
|
336
|
-
inspect_source(cop,
|
337
|
-
'func a: 1, b: 2')
|
338
|
-
expect(cop.offenses).to be_empty
|
339
|
-
end
|
340
|
-
|
341
|
-
it 'accepts single line hash with braces' do
|
342
|
-
inspect_source(cop,
|
343
|
-
'func x, { a: 1, b: 2 }')
|
344
|
-
expect(cop.offenses).to be_empty
|
345
|
-
end
|
346
|
-
|
347
|
-
it 'accepts a correctly indented multi-line hash with braces' do
|
348
|
-
inspect_source(cop,
|
349
|
-
['func x, {',
|
350
|
-
' a: 1, b: 2 }'])
|
351
|
-
expect(cop.offenses).to be_empty
|
352
|
-
end
|
353
|
-
|
354
|
-
it 'registers an offense for incorrectly indented multi-line hash ' \
|
355
|
-
'with braces' do
|
356
|
-
inspect_source(cop,
|
357
|
-
['func x, {',
|
358
|
-
' a: 1, b: 2 }'])
|
359
|
-
expect(cop.messages)
|
360
|
-
.to eq(['Use 2 spaces for indentation in a hash, relative to the ' \
|
361
|
-
'start of the line where the left curly brace is.'])
|
362
|
-
expect(cop.highlights).to eq(['a: 1'])
|
363
|
-
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
|
364
|
-
end
|
365
|
-
end
|
366
|
-
end
|
367
|
-
end
|