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,22 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::SpaceAfterNot do
|
6
|
-
subject(:cop) { described_class.new }
|
7
|
-
|
8
|
-
it 'reports an offense for space after !' do
|
9
|
-
inspect_source(cop, '! something')
|
10
|
-
expect(cop.offenses.size).to eq(1)
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'accepts no space after !' do
|
14
|
-
inspect_source(cop, '!something')
|
15
|
-
expect(cop.offenses).to be_empty
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'auto-corrects by removing redundant space' do
|
19
|
-
new_source = autocorrect_source(cop, '! something')
|
20
|
-
expect(new_source).to eq('!something')
|
21
|
-
end
|
22
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::SpaceAfterSemicolon do
|
6
|
-
subject(:cop) { described_class.new }
|
7
|
-
|
8
|
-
it 'registers an offense for semicolon without space after it' do
|
9
|
-
inspect_source(cop, 'x = 1;y = 2')
|
10
|
-
expect(cop.messages).to eq(
|
11
|
-
['Space missing after semicolon.'])
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'does not crash if semicolon is the last character of the file' do
|
15
|
-
inspect_source(cop, 'x = 1;')
|
16
|
-
expect(cop.messages).to be_empty
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'auto-corrects missing space' do
|
20
|
-
new_source = autocorrect_source(cop, 'x = 1;y = 2')
|
21
|
-
expect(new_source).to eq('x = 1; y = 2')
|
22
|
-
end
|
23
|
-
end
|
@@ -1,155 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::SpaceAroundBlockParameters, :config do
|
6
|
-
subject(:cop) { described_class.new(config) }
|
7
|
-
|
8
|
-
shared_examples 'common behavior' do
|
9
|
-
it 'accepts an empty block' do
|
10
|
-
inspect_source(cop, '{}.each {}')
|
11
|
-
expect(cop.offenses).to be_empty
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'skips lambda without args' do
|
15
|
-
inspect_source(cop, '->() { puts "a" }')
|
16
|
-
expect(cop.offenses).to be_empty
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
context 'when EnforcedStyleInsidePipes is no_space' do
|
21
|
-
let(:cop_config) { { 'EnforcedStyleInsidePipes' => 'no_space' } }
|
22
|
-
|
23
|
-
include_examples 'common behavior'
|
24
|
-
|
25
|
-
it 'accepts a block with spaces in the right places' do
|
26
|
-
inspect_source(cop, '{}.each { |x, y| puts x }')
|
27
|
-
expect(cop.offenses).to be_empty
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'accepts a block with parameters but no body' do
|
31
|
-
inspect_source(cop, '{}.each { |x, y| }')
|
32
|
-
expect(cop.offenses).to be_empty
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'accepts a block parameter without preceding space' do
|
36
|
-
# This is checked by Style/SpaceAfterComma.
|
37
|
-
inspect_source(cop, '{}.each { |x,y| puts x }')
|
38
|
-
expect(cop.offenses).to be_empty
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'registers an offense for space before first parameter' do
|
42
|
-
inspect_source(cop, '{}.each { | x| puts x }')
|
43
|
-
expect(cop.messages)
|
44
|
-
.to eq(['Space before first block parameter detected.'])
|
45
|
-
expect(cop.highlights).to eq([' '])
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'registers an offense for space after last parameter' do
|
49
|
-
inspect_source(cop, '{}.each { |x, y | puts x }')
|
50
|
-
expect(cop.messages).to eq(['Space after last block parameter detected.'])
|
51
|
-
expect(cop.highlights).to eq([' '])
|
52
|
-
end
|
53
|
-
|
54
|
-
it 'registers an offense for no space after closing pipe' do
|
55
|
-
inspect_source(cop, '{}.each { |x, y|puts x }')
|
56
|
-
expect(cop.messages).to eq(['Space after closing `|` missing.'])
|
57
|
-
expect(cop.highlights).to eq(['|'])
|
58
|
-
end
|
59
|
-
|
60
|
-
it 'accepts line break after closing pipe' do
|
61
|
-
inspect_source(cop, ['{}.each do |x, y|',
|
62
|
-
' puts x',
|
63
|
-
'end'])
|
64
|
-
expect(cop.offenses).to be_empty
|
65
|
-
end
|
66
|
-
|
67
|
-
it 'registers an offense for multiple spaces before parameter' do
|
68
|
-
inspect_source(cop, '{}.each { |x, y| puts x }')
|
69
|
-
expect(cop.messages)
|
70
|
-
.to eq(['Extra space before block parameter detected.'])
|
71
|
-
expect(cop.highlights).to eq([' '])
|
72
|
-
end
|
73
|
-
|
74
|
-
it 'auto-corrects offenses' do
|
75
|
-
new_source = autocorrect_source(cop,
|
76
|
-
'{}.each { | x=5, (y,*z) |puts x }')
|
77
|
-
expect(new_source).to eq('{}.each { |x=5, (y,*z)| puts x }')
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
context 'when EnforcedStyleInsidePipes is space' do
|
82
|
-
let(:cop_config) { { 'EnforcedStyleInsidePipes' => 'space' } }
|
83
|
-
|
84
|
-
include_examples 'common behavior'
|
85
|
-
|
86
|
-
it 'accepts a block with spaces in the right places' do
|
87
|
-
inspect_source(cop, '{}.each { | x, y | puts x }')
|
88
|
-
expect(cop.offenses).to be_empty
|
89
|
-
end
|
90
|
-
|
91
|
-
it 'accepts a block with parameters but no body' do
|
92
|
-
inspect_source(cop, '{}.each { | x, y | }')
|
93
|
-
expect(cop.offenses).to be_empty
|
94
|
-
end
|
95
|
-
|
96
|
-
it 'accepts a block parameter without preceding space' do
|
97
|
-
# This is checked by Style/SpaceAfterComma.
|
98
|
-
inspect_source(cop, '{}.each { | x,y | puts x }')
|
99
|
-
expect(cop.offenses).to be_empty
|
100
|
-
end
|
101
|
-
|
102
|
-
it 'registers an offense for no space before first parameter' do
|
103
|
-
inspect_source(cop, '{}.each { |x | puts x }')
|
104
|
-
expect(cop.messages)
|
105
|
-
.to eq(['Space before first block parameter missing.'])
|
106
|
-
expect(cop.highlights).to eq(['x'])
|
107
|
-
end
|
108
|
-
|
109
|
-
it 'registers an offense for no space after last parameter' do
|
110
|
-
inspect_source(cop, '{}.each { | x, y| puts x }')
|
111
|
-
expect(cop.messages).to eq(['Space after last block parameter missing.'])
|
112
|
-
expect(cop.highlights).to eq(['y'])
|
113
|
-
end
|
114
|
-
|
115
|
-
it 'registers an offense for extra space before first parameter' do
|
116
|
-
inspect_source(cop, '{}.each { | x | puts x }')
|
117
|
-
expect(cop.messages)
|
118
|
-
.to eq(['Extra space before first block parameter detected.'])
|
119
|
-
expect(cop.highlights).to eq([' '])
|
120
|
-
end
|
121
|
-
|
122
|
-
it 'registers an offense for no space after last parameter' do
|
123
|
-
inspect_source(cop, '{}.each { | x, y | puts x }')
|
124
|
-
expect(cop.messages)
|
125
|
-
.to eq(['Extra space after last block parameter detected.'])
|
126
|
-
expect(cop.highlights).to eq([' '])
|
127
|
-
end
|
128
|
-
|
129
|
-
it 'registers an offense for no space after closing pipe' do
|
130
|
-
inspect_source(cop, '{}.each { | x, y |puts x }')
|
131
|
-
expect(cop.messages).to eq(['Space after closing `|` missing.'])
|
132
|
-
expect(cop.highlights).to eq(['|'])
|
133
|
-
end
|
134
|
-
|
135
|
-
it 'accepts line break after closing pipe' do
|
136
|
-
inspect_source(cop, ['{}.each do | x, y |',
|
137
|
-
' puts x',
|
138
|
-
'end'])
|
139
|
-
expect(cop.offenses).to be_empty
|
140
|
-
end
|
141
|
-
|
142
|
-
it 'registers an offense for multiple spaces before parameter' do
|
143
|
-
inspect_source(cop, '{}.each { | x, y | puts x }')
|
144
|
-
expect(cop.messages)
|
145
|
-
.to eq(['Extra space before block parameter detected.'])
|
146
|
-
expect(cop.highlights).to eq([' '])
|
147
|
-
end
|
148
|
-
|
149
|
-
it 'auto-corrects offenses' do
|
150
|
-
new_source = autocorrect_source(cop,
|
151
|
-
'{}.each { | x=5, (y,*z)|puts x }')
|
152
|
-
expect(new_source).to eq('{}.each { | x=5, (y,*z) | puts x }')
|
153
|
-
end
|
154
|
-
end
|
155
|
-
end
|
@@ -1,95 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::SpaceAroundEqualsInParameterDefault, :config do
|
6
|
-
subject(:cop) { described_class.new(config) }
|
7
|
-
|
8
|
-
context 'when EnforcedStyle is space' do
|
9
|
-
let(:cop_config) { { 'EnforcedStyle' => 'space' } }
|
10
|
-
|
11
|
-
it 'registers an offense for default value assignment without space' do
|
12
|
-
inspect_source(cop, ['def f(x, y=0, z= 1)',
|
13
|
-
'end'])
|
14
|
-
expect(cop.messages)
|
15
|
-
.to eq(['Surrounding space missing in default value assignment.'] * 2)
|
16
|
-
expect(cop.highlights).to eq(['=', '= '])
|
17
|
-
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'registers an offense for assignment empty string without space' do
|
21
|
-
inspect_source(cop, ['def f(x, y="", z=1)',
|
22
|
-
'end'])
|
23
|
-
expect(cop.offenses.size).to eq(2)
|
24
|
-
expect(cop.config_to_allow_offenses).to eq('EnforcedStyle' => 'no_space')
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'registers an offense for assignment of empty list without space' do
|
28
|
-
inspect_source(cop, ['def f(x, y=[])',
|
29
|
-
'end'])
|
30
|
-
expect(cop.offenses.size).to eq(1)
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'accepts default value assignment with space' do
|
34
|
-
inspect_source(cop, ['def f(x, y = 0, z = {})',
|
35
|
-
'end'])
|
36
|
-
expect(cop.messages).to be_empty
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'auto-corrects missing space' do
|
40
|
-
new_source = autocorrect_source(cop, ['def f(x, y=0, z=1)', 'end'])
|
41
|
-
expect(new_source).to eq(['def f(x, y = 0, z = 1)', 'end'].join("\n"))
|
42
|
-
end
|
43
|
-
|
44
|
-
it 'accepts default value assignment with space' do
|
45
|
-
inspect_source(cop, ['def f(x, y = +1, z = {})',
|
46
|
-
'end'])
|
47
|
-
expect(cop.messages).to be_empty
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'auto-corrects missing space' do
|
51
|
-
new_source = autocorrect_source(cop, ['def f(x=-1, y= 0, z =+1)', 'end'])
|
52
|
-
expect(new_source).to eq(['def f(x = -1, y = 0, z = +1)',
|
53
|
-
'end'].join("\n"))
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
context 'when EnforcedStyle is no_space' do
|
58
|
-
let(:cop_config) { { 'EnforcedStyle' => 'no_space' } }
|
59
|
-
|
60
|
-
it 'registers an offense for default value assignment with space' do
|
61
|
-
inspect_source(cop, ['def f(x, y = 0, z =1, w= 2)',
|
62
|
-
'end'])
|
63
|
-
expect(cop.messages)
|
64
|
-
.to eq(['Surrounding space detected in default value assignment.'] * 3)
|
65
|
-
expect(cop.highlights).to eq([' = ', ' =', '= '])
|
66
|
-
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
|
67
|
-
end
|
68
|
-
|
69
|
-
it 'registers an offense for assignment empty string with space' do
|
70
|
-
inspect_source(cop, ['def f(x, y = "", z = 1)',
|
71
|
-
'end'])
|
72
|
-
expect(cop.offenses.size).to eq(2)
|
73
|
-
expect(cop.config_to_allow_offenses).to eq('EnforcedStyle' => 'space')
|
74
|
-
end
|
75
|
-
|
76
|
-
it 'registers an offense for assignment of empty list with space' do
|
77
|
-
inspect_source(cop, ['def f(x, y = [])',
|
78
|
-
'end'])
|
79
|
-
expect(cop.offenses.size).to eq(1)
|
80
|
-
end
|
81
|
-
|
82
|
-
it 'accepts default value assignment without space' do
|
83
|
-
inspect_source(cop, ['def f(x, y=0, z={})',
|
84
|
-
'end'])
|
85
|
-
expect(cop.messages).to be_empty
|
86
|
-
end
|
87
|
-
|
88
|
-
it 'auto-corrects unwanted space' do
|
89
|
-
new_source = autocorrect_source(cop, ['def f(x, y = 0, z= 1, w= 2)',
|
90
|
-
'end'])
|
91
|
-
expect(new_source).to eq(['def f(x, y=0, z=1, w=2)',
|
92
|
-
'end'].join("\n"))
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
@@ -1,330 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Style::SpaceAroundOperators do
|
6
|
-
subject(:cop) { described_class.new }
|
7
|
-
|
8
|
-
it 'registers an offense for assignment without space on both sides' do
|
9
|
-
inspect_source(cop, ['x=0', 'y+= 0', 'z[0] =0'])
|
10
|
-
expect(cop.messages)
|
11
|
-
.to eq(["Surrounding space missing for operator '='.",
|
12
|
-
"Surrounding space missing for operator '+='.",
|
13
|
-
"Surrounding space missing for operator '='."])
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'auto-corrects assignment without space on both sides' do
|
17
|
-
new_source = autocorrect_source(cop, ['x=0', 'y= 0', 'z =0'])
|
18
|
-
expect(new_source).to eq(['x = 0', 'y = 0', 'z = 0'].join("\n"))
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'registers an offense for ternary operator without space' do
|
22
|
-
inspect_source(cop, 'x == 0?1:2')
|
23
|
-
expect(cop.messages).to eq(
|
24
|
-
["Surrounding space missing for operator '?'.",
|
25
|
-
"Surrounding space missing for operator ':'."])
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'auto-corrects a ternary operator without space' do
|
29
|
-
new_source = autocorrect_source(cop, 'x == 0?1:2')
|
30
|
-
expect(new_source).to eq('x == 0 ? 1 : 2')
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'registers an offense in presence of modifier if statement' do
|
34
|
-
check_modifier('if')
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'registers an offense in presence of modifier unless statement' do
|
38
|
-
check_modifier('unless')
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'registers an offense in presence of modifier while statement' do
|
42
|
-
check_modifier('unless')
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'registers an offense in presence of modifier until statement' do
|
46
|
-
check_modifier('unless')
|
47
|
-
end
|
48
|
-
|
49
|
-
def check_modifier(keyword)
|
50
|
-
src = ["a=1 #{keyword} condition",
|
51
|
-
'c=2']
|
52
|
-
inspect_source(cop, src)
|
53
|
-
expect(cop.offenses.map(&:line)).to eq([1, 2])
|
54
|
-
expect(cop.messages).to eq(
|
55
|
-
["Surrounding space missing for operator '='."] * 2)
|
56
|
-
|
57
|
-
new_source = autocorrect_source(cop, src)
|
58
|
-
expect(new_source)
|
59
|
-
.to eq(src.map { |line| line.sub(/=/, ' = ') }.join("\n"))
|
60
|
-
end
|
61
|
-
|
62
|
-
it 'registers an offense for binary operators that could be unary' do
|
63
|
-
inspect_source(cop, ['a-3', 'x&0xff', 'z+0'])
|
64
|
-
expect(cop.messages).to eq(
|
65
|
-
["Surrounding space missing for operator '-'.",
|
66
|
-
"Surrounding space missing for operator '&'.",
|
67
|
-
"Surrounding space missing for operator '+'."])
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'auto-corrects missing space in binary operators that could be unary' do
|
71
|
-
new_source = autocorrect_source(cop, ['a-3', 'x&0xff', 'z+0'])
|
72
|
-
expect(new_source).to eq(['a - 3', 'x & 0xff', 'z + 0'].join("\n"))
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'registers an offense for arguments to a method' do
|
76
|
-
inspect_source(cop, 'puts 1+2')
|
77
|
-
expect(cop.messages).to eq(
|
78
|
-
["Surrounding space missing for operator '+'."])
|
79
|
-
end
|
80
|
-
|
81
|
-
it 'auto-corrects missing space in arguments to a method' do
|
82
|
-
new_source = autocorrect_source(cop, 'puts 1+2')
|
83
|
-
expect(new_source).to eq('puts 1 + 2')
|
84
|
-
end
|
85
|
-
|
86
|
-
it 'accepts operator surrounded by tabs' do
|
87
|
-
inspect_source(cop, "a\t+\tb")
|
88
|
-
expect(cop.messages).to be_empty
|
89
|
-
end
|
90
|
-
|
91
|
-
it 'accepts operator symbols' do
|
92
|
-
inspect_source(cop, 'func(:-)')
|
93
|
-
expect(cop.messages).to be_empty
|
94
|
-
end
|
95
|
-
|
96
|
-
it 'accepts ranges' do
|
97
|
-
inspect_source(cop, 'a, b = (1..2), (1...3)')
|
98
|
-
expect(cop.messages).to be_empty
|
99
|
-
end
|
100
|
-
|
101
|
-
it 'accepts scope operator' do
|
102
|
-
source = '@io.class == Zlib::GzipWriter'
|
103
|
-
inspect_source(cop, source)
|
104
|
-
expect(cop.messages).to be_empty
|
105
|
-
end
|
106
|
-
|
107
|
-
it 'accepts ::Kernel::raise' do
|
108
|
-
source = '::Kernel::raise IllegalBlockError.new'
|
109
|
-
inspect_source(cop, source)
|
110
|
-
expect(cop.messages).to be_empty
|
111
|
-
end
|
112
|
-
|
113
|
-
it 'accepts exclamation point negation' do
|
114
|
-
inspect_source(cop, 'x = !a&&!b')
|
115
|
-
expect(cop.messages).to eq(
|
116
|
-
["Surrounding space missing for operator '&&'."])
|
117
|
-
end
|
118
|
-
|
119
|
-
it 'accepts exclamation point definition' do
|
120
|
-
inspect_source(cop, [' def !',
|
121
|
-
' !__getobj__',
|
122
|
-
' end'])
|
123
|
-
expect(cop.offenses).to be_empty
|
124
|
-
expect(cop.messages).to be_empty
|
125
|
-
end
|
126
|
-
|
127
|
-
it 'accepts a unary' do
|
128
|
-
inspect_source(cop,
|
129
|
-
[' def bm(label_width = 0, *labels, &blk)',
|
130
|
-
' benchmark(CAPTION, label_width, FORMAT,',
|
131
|
-
' *labels, &blk)',
|
132
|
-
' end',
|
133
|
-
'',
|
134
|
-
' def each &block',
|
135
|
-
' +11',
|
136
|
-
' end',
|
137
|
-
'',
|
138
|
-
' def self.search *args',
|
139
|
-
' end',
|
140
|
-
'',
|
141
|
-
' def each *args',
|
142
|
-
' end',
|
143
|
-
''])
|
144
|
-
expect(cop.messages).to be_empty
|
145
|
-
end
|
146
|
-
|
147
|
-
it 'accepts splat operator' do
|
148
|
-
inspect_source(cop, 'return *list if options')
|
149
|
-
expect(cop.messages).to be_empty
|
150
|
-
end
|
151
|
-
|
152
|
-
it 'accepts def of operator' do
|
153
|
-
inspect_source(cop, ['def +(other); end',
|
154
|
-
'def self.===(other); end'])
|
155
|
-
expect(cop.messages).to be_empty
|
156
|
-
end
|
157
|
-
|
158
|
-
it 'accepts an operator at the end of a line' do
|
159
|
-
inspect_source(cop,
|
160
|
-
["['Favor unless over if for negative ' +",
|
161
|
-
" 'conditions.'] * 2"])
|
162
|
-
expect(cop.messages).to eq([])
|
163
|
-
end
|
164
|
-
|
165
|
-
it 'accepts an assignment with spaces' do
|
166
|
-
inspect_source(cop, 'x = 0')
|
167
|
-
expect(cop.offenses).to be_empty
|
168
|
-
end
|
169
|
-
|
170
|
-
it 'accepts an operator called with method syntax' do
|
171
|
-
inspect_source(cop, 'Date.today.+(1).to_s')
|
172
|
-
expect(cop.offenses).to be_empty
|
173
|
-
end
|
174
|
-
|
175
|
-
it 'registers an offense for operators without spaces' do
|
176
|
-
inspect_source(cop,
|
177
|
-
['x+= a+b-c*d/e%f^g|h&i||j',
|
178
|
-
'y -=k&&l'])
|
179
|
-
expect(cop.messages)
|
180
|
-
.to eq(["Surrounding space missing for operator '+='.",
|
181
|
-
"Surrounding space missing for operator '+'.",
|
182
|
-
"Surrounding space missing for operator '-'.",
|
183
|
-
"Surrounding space missing for operator '*'.",
|
184
|
-
"Surrounding space missing for operator '/'.",
|
185
|
-
"Surrounding space missing for operator '%'.",
|
186
|
-
"Surrounding space missing for operator '^'.",
|
187
|
-
"Surrounding space missing for operator '|'.",
|
188
|
-
"Surrounding space missing for operator '&'.",
|
189
|
-
"Surrounding space missing for operator '||'.",
|
190
|
-
"Surrounding space missing for operator '-='.",
|
191
|
-
"Surrounding space missing for operator '&&'."])
|
192
|
-
end
|
193
|
-
|
194
|
-
it 'auto-corrects missing space' do
|
195
|
-
new_source = autocorrect_source(cop, ['x+= a+b-c*d/e%f^g|h&i||j',
|
196
|
-
'y -=k&&l'])
|
197
|
-
expect(new_source).to eq(['x += a + b - c * d / e % f ^ g | h & i || j',
|
198
|
-
'y -= k && l'].join("\n"))
|
199
|
-
end
|
200
|
-
|
201
|
-
it 'accepts operators with spaces' do
|
202
|
-
inspect_source(cop,
|
203
|
-
['x += a + b - c * d / e % f ^ g | h & i || j',
|
204
|
-
'y -= k && l'])
|
205
|
-
expect(cop.messages).to eq([])
|
206
|
-
end
|
207
|
-
|
208
|
-
it "accepts some operators that are exceptions & don't need spaces" do
|
209
|
-
inspect_source(cop, ['(1..3)',
|
210
|
-
'ActionController::Base',
|
211
|
-
'each { |s, t| }'])
|
212
|
-
expect(cop.messages).to eq([])
|
213
|
-
end
|
214
|
-
|
215
|
-
it 'accepts an assignment followed by newline' do
|
216
|
-
inspect_source(cop, ['x =', '0'])
|
217
|
-
expect(cop.offenses).to be_empty
|
218
|
-
end
|
219
|
-
|
220
|
-
it 'registers an offenses for exponent operator with spaces' do
|
221
|
-
inspect_source(cop, 'x = a * b ** 2')
|
222
|
-
expect(cop.messages).to eq(
|
223
|
-
['Space around operator ** detected.'])
|
224
|
-
end
|
225
|
-
|
226
|
-
it 'auto-corrects unwanted space around **' do
|
227
|
-
new_source = autocorrect_source(cop, ['x = a * b ** 2',
|
228
|
-
'y = a * b** 2'])
|
229
|
-
expect(new_source).to eq(['x = a * b**2',
|
230
|
-
'y = a * b**2'].join("\n"))
|
231
|
-
end
|
232
|
-
|
233
|
-
it 'accepts exponent operator without spaces' do
|
234
|
-
inspect_source(cop, 'x = a * b**2')
|
235
|
-
expect(cop.offenses).to be_empty
|
236
|
-
end
|
237
|
-
|
238
|
-
it 'registers an offense for a setter call without spaces' do
|
239
|
-
inspect_source(cop, 'x.y=2')
|
240
|
-
expect(cop.messages).to eq(
|
241
|
-
["Surrounding space missing for operator '='."])
|
242
|
-
end
|
243
|
-
|
244
|
-
it 'registers an offense for a hash rocket without spaces' do
|
245
|
-
inspect_source(cop, '{ 1=>2, a: b }')
|
246
|
-
expect(cop.messages).to eq(
|
247
|
-
["Surrounding space missing for operator '=>'."])
|
248
|
-
end
|
249
|
-
|
250
|
-
it 'accepts unary operators without space' do
|
251
|
-
inspect_source(cop, ['[].map(&:size)',
|
252
|
-
'a.(b)',
|
253
|
-
'-3',
|
254
|
-
'arr.collect { |e| -e }',
|
255
|
-
'x = +2'])
|
256
|
-
expect(cop.messages).to eq([])
|
257
|
-
end
|
258
|
-
|
259
|
-
it 'accepts [] without space' do
|
260
|
-
inspect_source(cop, 'files[2]')
|
261
|
-
expect(cop.messages).to eq([])
|
262
|
-
end
|
263
|
-
|
264
|
-
it 'accepts argument default values without space' do
|
265
|
-
# These are handled by SpaceAroundEqualsInParameterDefault,
|
266
|
-
# so SpaceAroundOperators leaves them alone.
|
267
|
-
inspect_source(cop,
|
268
|
-
['def init(name=nil)',
|
269
|
-
'end'])
|
270
|
-
expect(cop.messages).to be_empty
|
271
|
-
end
|
272
|
-
|
273
|
-
it 'accepts the construct class <<self with no space after <<' do
|
274
|
-
inspect_source(cop, ['class <<self',
|
275
|
-
'end'])
|
276
|
-
expect(cop.messages).to be_empty
|
277
|
-
end
|
278
|
-
|
279
|
-
it 'registers an offense for match operators without space' do
|
280
|
-
inspect_source(cop, ['x=~/abc/',
|
281
|
-
'y !~/abc/'])
|
282
|
-
expect(cop.messages)
|
283
|
-
.to eq(["Surrounding space missing for operator '=~'.",
|
284
|
-
"Surrounding space missing for operator '!~'."])
|
285
|
-
end
|
286
|
-
|
287
|
-
it 'registers an offense for various assignments without space' do
|
288
|
-
inspect_source(cop, ['x||=0', 'y&&=0', 'z*=2',
|
289
|
-
'@a=0', '@@a=0', 'a,b=0', 'A=0', 'x[3]=0', '$A=0'])
|
290
|
-
expect(cop.messages)
|
291
|
-
.to eq(["Surrounding space missing for operator '||='.",
|
292
|
-
"Surrounding space missing for operator '&&='.",
|
293
|
-
"Surrounding space missing for operator '*='.",
|
294
|
-
"Surrounding space missing for operator '='.",
|
295
|
-
"Surrounding space missing for operator '='.",
|
296
|
-
"Surrounding space missing for operator '='.",
|
297
|
-
"Surrounding space missing for operator '='.",
|
298
|
-
"Surrounding space missing for operator '='.",
|
299
|
-
"Surrounding space missing for operator '='."])
|
300
|
-
end
|
301
|
-
|
302
|
-
it 'registers an offense for equality operators without space' do
|
303
|
-
inspect_source(cop, ['x==0', 'y!=0', 'Hash===z'])
|
304
|
-
expect(cop.messages)
|
305
|
-
.to eq(["Surrounding space missing for operator '=='.",
|
306
|
-
"Surrounding space missing for operator '!='.",
|
307
|
-
"Surrounding space missing for operator '==='."])
|
308
|
-
end
|
309
|
-
|
310
|
-
it 'registers an offense for - without space with negative lhs operand' do
|
311
|
-
inspect_source(cop, '-1-arg')
|
312
|
-
expect(cop.messages)
|
313
|
-
.to eq(["Surrounding space missing for operator '-'."])
|
314
|
-
end
|
315
|
-
|
316
|
-
it 'registers an offense for inheritance < without space' do
|
317
|
-
inspect_source(cop, ['class ShowSourceTestClass<ShowSourceTestSuperClass',
|
318
|
-
'end'])
|
319
|
-
expect(cop.messages)
|
320
|
-
.to eq(["Surrounding space missing for operator '<'."])
|
321
|
-
end
|
322
|
-
|
323
|
-
it 'registers an offense for hash rocket without space at rescue' do
|
324
|
-
inspect_source(cop, ['begin',
|
325
|
-
'rescue Exception=>e',
|
326
|
-
'end'])
|
327
|
-
expect(cop.messages)
|
328
|
-
.to eq(["Surrounding space missing for operator '=>'."])
|
329
|
-
end
|
330
|
-
end
|