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,136 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Metrics::LineLength, :config do
|
6
|
-
subject(:cop) { described_class.new(config) }
|
7
|
-
let(:cop_config) { { 'Max' => 80 } }
|
8
|
-
|
9
|
-
it "registers an offense for a line that's 81 characters wide" do
|
10
|
-
inspect_source(cop, '#' * 81)
|
11
|
-
expect(cop.offenses.size).to eq(1)
|
12
|
-
expect(cop.offenses.first.message).to eq('Line is too long. [81/80]')
|
13
|
-
expect(cop.config_to_allow_offenses).to eq('Max' => 81)
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'highlights excessive characters' do
|
17
|
-
inspect_source(cop, '#' * 80 + 'abc')
|
18
|
-
expect(cop.highlights).to eq(['abc'])
|
19
|
-
end
|
20
|
-
|
21
|
-
it "accepts a line that's 80 characters wide" do
|
22
|
-
inspect_source(cop, '#' * 80)
|
23
|
-
expect(cop.offenses).to be_empty
|
24
|
-
end
|
25
|
-
|
26
|
-
context 'when AllowURI option is enabled' do
|
27
|
-
let(:cop_config) { { 'Max' => 80, 'AllowURI' => true } }
|
28
|
-
|
29
|
-
context 'and all the excessive characters are part of an URL' do
|
30
|
-
# This code example is allowed by AllowURI feature itself :).
|
31
|
-
let(:source) { <<-END }
|
32
|
-
# Some documentation comment...
|
33
|
-
# See: https://github.com/bbatsov/rubocop/commit/3b48d8bdf5b1c2e05e35061837309890f04ab08c
|
34
|
-
END
|
35
|
-
|
36
|
-
it 'accepts the line' do
|
37
|
-
inspect_source(cop, source)
|
38
|
-
expect(cop.offenses).to be_empty
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
context 'and the excessive characters include a complete URL' do
|
43
|
-
# rubocop:disable Metrics/LineLength
|
44
|
-
let(:source) { <<-END }
|
45
|
-
# See: http://google.com/, http://gmail.com/, https://maps.google.com/, http://plus.google.com/
|
46
|
-
END
|
47
|
-
# rubocop:enable Metrics/LineLength
|
48
|
-
|
49
|
-
it 'registers an offense for the line' do
|
50
|
-
inspect_source(cop, source)
|
51
|
-
expect(cop.offenses.size).to eq(1)
|
52
|
-
end
|
53
|
-
|
54
|
-
it 'highlights all the excessive characters' do
|
55
|
-
inspect_source(cop, source)
|
56
|
-
expect(cop.highlights).to eq(['http://plus.google.com/'])
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
context 'and the excessive characters include part of an URL ' \
|
61
|
-
'and another word' do
|
62
|
-
# rubocop:disable Metrics/LineLength
|
63
|
-
let(:source) { <<-END }
|
64
|
-
# See: https://github.com/bbatsov/rubocop/commit/3b48d8bdf5b1c2e05e35061837309890f04ab08c and
|
65
|
-
# http://google.com/
|
66
|
-
END
|
67
|
-
# rubocop:enable Metrics/LineLength
|
68
|
-
|
69
|
-
it 'registers an offense for the line' do
|
70
|
-
inspect_source(cop, source)
|
71
|
-
expect(cop.offenses.size).to eq(1)
|
72
|
-
end
|
73
|
-
|
74
|
-
it 'highlights only the non-URL part' do
|
75
|
-
inspect_source(cop, source)
|
76
|
-
expect(cop.highlights).to eq([' and'])
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
context 'and an error other than URI::InvalidURIError is raised ' \
|
81
|
-
'while validating an URI-ish string' do
|
82
|
-
let(:cop_config) do
|
83
|
-
{ 'Max' => 80, 'AllowURI' => true, 'URISchemes' => %w(LDAP) }
|
84
|
-
end
|
85
|
-
|
86
|
-
# rubocop:disable Metrics/LineLength
|
87
|
-
let(:source) { <<-END }
|
88
|
-
xxxxxxxxxxxxxxxxxxxxxxxxxxxxzxxxxxxxxxxx = LDAP::DEFAULT_GROUP_UNIQUE_MEMBER_LIST_KEY
|
89
|
-
END
|
90
|
-
# rubocop:enable Metrics/LineLength
|
91
|
-
|
92
|
-
it 'does not crash' do
|
93
|
-
expect { inspect_source(cop, source) }.not_to raise_error
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
context 'and the URL does not have a http(s) scheme' do
|
98
|
-
# rubocop:disable Metrics/LineLength
|
99
|
-
let(:source) { <<-END }
|
100
|
-
xxxxxxxxxxxxxxxxxxxxxxxxxxxxzxxxxxxxxxxx = 'otherprotocol://a.very.long.line.which.violates.LineLength/sadf'
|
101
|
-
END
|
102
|
-
# rubocop:enable Metrics/LineLength
|
103
|
-
|
104
|
-
it 'rejects the line' do
|
105
|
-
inspect_source(cop, source)
|
106
|
-
expect(cop.offenses.size).to eq(1)
|
107
|
-
end
|
108
|
-
|
109
|
-
context 'and the scheme has been configured' do
|
110
|
-
let(:cop_config) do
|
111
|
-
{ 'Max' => 80, 'AllowURI' => true, 'URISchemes' => %w(otherprotocol) }
|
112
|
-
end
|
113
|
-
|
114
|
-
it 'accepts the line' do
|
115
|
-
inspect_source(cop, source)
|
116
|
-
expect(cop.offenses).to be_empty
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
context 'when AllowURI option is disabled' do
|
123
|
-
let(:cop_config) { { 'Max' => 80, 'AllowURI' => false } }
|
124
|
-
|
125
|
-
context 'and all the excessive characters are part of an URL' do
|
126
|
-
let(:source) { <<-END }
|
127
|
-
# See: https://github.com/bbatsov/rubocop/commit/3b48d8bdf5b1c2e05e35061837309890f04ab08c
|
128
|
-
END
|
129
|
-
|
130
|
-
it 'registers an offense for the line' do
|
131
|
-
inspect_source(cop, source)
|
132
|
-
expect(cop.offenses.size).to eq(1)
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
@@ -1,147 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Metrics::MethodLength, :config do
|
6
|
-
subject(:cop) { described_class.new(config) }
|
7
|
-
let(:cop_config) { { 'Max' => 5, 'CountComments' => false } }
|
8
|
-
|
9
|
-
it 'rejects a method with more than 5 lines' do
|
10
|
-
inspect_source(cop, ['def m()',
|
11
|
-
' a = 1',
|
12
|
-
' a = 2',
|
13
|
-
' a = 3',
|
14
|
-
' a = 4',
|
15
|
-
' a = 5',
|
16
|
-
' a = 6',
|
17
|
-
'end'])
|
18
|
-
expect(cop.offenses.size).to eq(1)
|
19
|
-
expect(cop.offenses.map(&:line).sort).to eq([1])
|
20
|
-
expect(cop.config_to_allow_offenses).to eq('Max' => 6)
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'accepts a method with less than 5 lines' do
|
24
|
-
inspect_source(cop, ['def m()',
|
25
|
-
' a = 1',
|
26
|
-
' a = 2',
|
27
|
-
' a = 3',
|
28
|
-
' a = 4',
|
29
|
-
'end'])
|
30
|
-
expect(cop.offenses).to be_empty
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'does not count blank lines' do
|
34
|
-
inspect_source(cop, ['def m()',
|
35
|
-
' a = 1',
|
36
|
-
' a = 2',
|
37
|
-
' a = 3',
|
38
|
-
' a = 4',
|
39
|
-
'',
|
40
|
-
'',
|
41
|
-
' a = 7',
|
42
|
-
'end'])
|
43
|
-
expect(cop.offenses).to be_empty
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'accepts empty methods' do
|
47
|
-
inspect_source(cop, ['def m()',
|
48
|
-
'end'])
|
49
|
-
expect(cop.offenses).to be_empty
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'is not fooled by one-liner methods, syntax #1' do
|
53
|
-
inspect_source(cop, ['def one_line; 10 end',
|
54
|
-
'def self.m()',
|
55
|
-
' a = 1',
|
56
|
-
' a = 2',
|
57
|
-
' a = 4',
|
58
|
-
' a = 5',
|
59
|
-
' a = 6',
|
60
|
-
'end'])
|
61
|
-
expect(cop.offenses).to be_empty
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'is not fooled by one-liner methods, syntax #2' do
|
65
|
-
inspect_source(cop, ['def one_line(test) 10 end',
|
66
|
-
'def self.m()',
|
67
|
-
' a = 1',
|
68
|
-
' a = 2',
|
69
|
-
' a = 4',
|
70
|
-
' a = 5',
|
71
|
-
' a = 6',
|
72
|
-
'end'])
|
73
|
-
expect(cop.offenses).to be_empty
|
74
|
-
end
|
75
|
-
|
76
|
-
it 'checks class methods, syntax #1' do
|
77
|
-
inspect_source(cop, ['def self.m()',
|
78
|
-
' a = 1',
|
79
|
-
' a = 2',
|
80
|
-
' a = 3',
|
81
|
-
' a = 4',
|
82
|
-
' a = 5',
|
83
|
-
' a = 6',
|
84
|
-
'end'])
|
85
|
-
expect(cop.offenses.size).to eq(1)
|
86
|
-
expect(cop.offenses.map(&:line).sort).to eq([1])
|
87
|
-
end
|
88
|
-
|
89
|
-
it 'checks class methods, syntax #2' do
|
90
|
-
inspect_source(cop, ['class K',
|
91
|
-
' class << self',
|
92
|
-
' def m()',
|
93
|
-
' a = 1',
|
94
|
-
' a = 2',
|
95
|
-
' a = 3',
|
96
|
-
' a = 4',
|
97
|
-
' a = 5',
|
98
|
-
' a = 6',
|
99
|
-
' end',
|
100
|
-
' end',
|
101
|
-
'end'])
|
102
|
-
expect(cop.offenses.size).to eq(1)
|
103
|
-
expect(cop.offenses.map(&:line).sort).to eq([3])
|
104
|
-
end
|
105
|
-
|
106
|
-
it 'properly counts lines when method ends with block' do
|
107
|
-
inspect_source(cop, ['def m()',
|
108
|
-
' something do',
|
109
|
-
' a = 2',
|
110
|
-
' a = 3',
|
111
|
-
' a = 4',
|
112
|
-
' a = 5',
|
113
|
-
' end',
|
114
|
-
'end'])
|
115
|
-
expect(cop.offenses.size).to eq(1)
|
116
|
-
expect(cop.offenses.map(&:line).sort).to eq([1])
|
117
|
-
end
|
118
|
-
|
119
|
-
it 'does not count commented lines by default' do
|
120
|
-
inspect_source(cop, ['def m()',
|
121
|
-
' a = 1',
|
122
|
-
' #a = 2',
|
123
|
-
' a = 3',
|
124
|
-
' #a = 4',
|
125
|
-
' a = 5',
|
126
|
-
' a = 6',
|
127
|
-
'end'])
|
128
|
-
expect(cop.offenses).to be_empty
|
129
|
-
end
|
130
|
-
|
131
|
-
context 'when CountComments is enabled' do
|
132
|
-
before { cop_config['CountComments'] = true }
|
133
|
-
|
134
|
-
it 'also counts commented lines' do
|
135
|
-
inspect_source(cop, ['def m()',
|
136
|
-
' a = 1',
|
137
|
-
' #a = 2',
|
138
|
-
' a = 3',
|
139
|
-
' #a = 4',
|
140
|
-
' a = 5',
|
141
|
-
' a = 6',
|
142
|
-
'end'])
|
143
|
-
expect(cop.offenses.size).to eq(1)
|
144
|
-
expect(cop.offenses.map(&:line).sort).to eq([1])
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Metrics::ParameterLists, :config do
|
6
|
-
subject(:cop) { described_class.new(config) }
|
7
|
-
let(:cop_config) do
|
8
|
-
{
|
9
|
-
'Max' => 4,
|
10
|
-
'CountKeywordArgs' => true
|
11
|
-
}
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'registers an offense for a method def with 5 parameters' do
|
15
|
-
inspect_source(cop, ['def meth(a, b, c, d, e)',
|
16
|
-
'end'])
|
17
|
-
expect(cop.offenses.size).to eq(1)
|
18
|
-
expect(cop.config_to_allow_offenses).to eq('Max' => 5)
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'accepts a method def with 4 parameters' do
|
22
|
-
inspect_source(cop, ['def meth(a, b, c, d)',
|
23
|
-
'end'])
|
24
|
-
expect(cop.offenses).to be_empty
|
25
|
-
end
|
26
|
-
|
27
|
-
context 'When CountKeywordArgs is true' do
|
28
|
-
it 'counts keyword arguments as well', ruby: 2 do
|
29
|
-
inspect_source(cop, ['def meth(a, b, c, d: 1, e: 2)',
|
30
|
-
'end'])
|
31
|
-
expect(cop.offenses.size).to eq(1)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
context 'When CountKeywordArgs is false' do
|
36
|
-
before { cop_config['CountKeywordArgs'] = false }
|
37
|
-
|
38
|
-
it 'it does not count keyword arguments', ruby: 2 do
|
39
|
-
inspect_source(cop, ['def meth(a, b, c, d: 1, e: 2)',
|
40
|
-
'end'])
|
41
|
-
expect(cop.offenses).to be_empty
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,222 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Metrics::PerceivedComplexity, :config do
|
6
|
-
subject(:cop) { described_class.new(config) }
|
7
|
-
|
8
|
-
context 'when Max is 1' do
|
9
|
-
let(:cop_config) { { 'Max' => 1 } }
|
10
|
-
|
11
|
-
it 'accepts a method with no decision points' do
|
12
|
-
inspect_source(cop, ['def method_name',
|
13
|
-
' call_foo',
|
14
|
-
'end'])
|
15
|
-
expect(cop.offenses).to be_empty
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'accepts complex code outside of methods' do
|
19
|
-
inspect_source(cop,
|
20
|
-
['def method_name',
|
21
|
-
' call_foo',
|
22
|
-
'end',
|
23
|
-
'',
|
24
|
-
'if first_condition then',
|
25
|
-
' call_foo if second_condition && third_condition',
|
26
|
-
' call_bar if fourth_condition || fifth_condition',
|
27
|
-
'end'])
|
28
|
-
expect(cop.offenses).to be_empty
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'registers an offense for an if modifier' do
|
32
|
-
inspect_source(cop, ['def self.method_name',
|
33
|
-
' call_foo if some_condition',
|
34
|
-
'end'])
|
35
|
-
expect(cop.messages)
|
36
|
-
.to eq(['Perceived complexity for method_name is too high. [2/1]'])
|
37
|
-
expect(cop.highlights).to eq(['def'])
|
38
|
-
expect(cop.config_to_allow_offenses).to eq('Max' => 2)
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'registers an offense for an unless modifier' do
|
42
|
-
inspect_source(cop, ['def method_name',
|
43
|
-
' call_foo unless some_condition',
|
44
|
-
'end'])
|
45
|
-
expect(cop.messages)
|
46
|
-
.to eq(['Perceived complexity for method_name is too high. [2/1]'])
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'registers an offense for elsif and else blocks' do
|
50
|
-
inspect_source(cop, ['def method_name',
|
51
|
-
' if first_condition then',
|
52
|
-
' call_foo',
|
53
|
-
' elsif second_condition then',
|
54
|
-
' call_bar',
|
55
|
-
' else',
|
56
|
-
' call_bam',
|
57
|
-
' end',
|
58
|
-
'end'])
|
59
|
-
expect(cop.messages)
|
60
|
-
.to eq(['Perceived complexity for method_name is too high. [4/1]'])
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'registers an offense for a ternary operator' do
|
64
|
-
inspect_source(cop, ['def method_name',
|
65
|
-
' value = some_condition ? 1 : 2',
|
66
|
-
'end'])
|
67
|
-
expect(cop.messages)
|
68
|
-
.to eq(['Perceived complexity for method_name is too high. [2/1]'])
|
69
|
-
end
|
70
|
-
|
71
|
-
it 'registers an offense for a while block' do
|
72
|
-
inspect_source(cop, ['def method_name',
|
73
|
-
' while some_condition do',
|
74
|
-
' call_foo',
|
75
|
-
' end',
|
76
|
-
'end'])
|
77
|
-
expect(cop.messages)
|
78
|
-
.to eq(['Perceived complexity for method_name is too high. [2/1]'])
|
79
|
-
end
|
80
|
-
|
81
|
-
it 'registers an offense for an until block' do
|
82
|
-
inspect_source(cop, ['def method_name',
|
83
|
-
' until some_condition do',
|
84
|
-
' call_foo',
|
85
|
-
' end',
|
86
|
-
'end'])
|
87
|
-
expect(cop.messages)
|
88
|
-
.to eq(['Perceived complexity for method_name is too high. [2/1]'])
|
89
|
-
end
|
90
|
-
|
91
|
-
it 'registers an offense for a for block' do
|
92
|
-
inspect_source(cop, ['def method_name',
|
93
|
-
' for i in 1..2 do',
|
94
|
-
' call_method',
|
95
|
-
' end',
|
96
|
-
'end'])
|
97
|
-
expect(cop.messages)
|
98
|
-
.to eq(['Perceived complexity for method_name is too high. [2/1]'])
|
99
|
-
end
|
100
|
-
|
101
|
-
it 'registers an offense for a rescue block' do
|
102
|
-
inspect_source(cop, ['def method_name',
|
103
|
-
' begin',
|
104
|
-
' call_foo',
|
105
|
-
' rescue Exception',
|
106
|
-
' call_bar',
|
107
|
-
' end',
|
108
|
-
'end'])
|
109
|
-
expect(cop.messages)
|
110
|
-
.to eq(['Perceived complexity for method_name is too high. [2/1]'])
|
111
|
-
end
|
112
|
-
|
113
|
-
it 'registers an offense for a case/when block' do
|
114
|
-
inspect_source(cop, ['def method_name',
|
115
|
-
' case value',
|
116
|
-
' when 1 then call_foo_1',
|
117
|
-
' when 2 then call_foo_2',
|
118
|
-
' when 3 then call_foo_3',
|
119
|
-
' when 4 then call_foo_4',
|
120
|
-
' end',
|
121
|
-
'end'])
|
122
|
-
# The `case` node plus the first `when` score one complexity point
|
123
|
-
# together. The other `when` nodes get 0.2 complexity points.
|
124
|
-
expect(cop.messages)
|
125
|
-
.to eq(['Perceived complexity for method_name is too high. [3/1]'])
|
126
|
-
end
|
127
|
-
|
128
|
-
it 'registers an offense for a case/when block without an expression ' \
|
129
|
-
'after case' do
|
130
|
-
inspect_source(cop, ['def method_name',
|
131
|
-
' case',
|
132
|
-
' when value == 1',
|
133
|
-
' call_foo',
|
134
|
-
' when value == 2',
|
135
|
-
' call_bar',
|
136
|
-
' end',
|
137
|
-
'end'])
|
138
|
-
# Here, the `case` node doesn't count, but each when scores one
|
139
|
-
# complexity point.
|
140
|
-
expect(cop.messages)
|
141
|
-
.to eq(['Perceived complexity for method_name is too high. [3/1]'])
|
142
|
-
end
|
143
|
-
|
144
|
-
it 'registers an offense for &&' do
|
145
|
-
inspect_source(cop, ['def method_name',
|
146
|
-
' call_foo && call_bar',
|
147
|
-
'end'])
|
148
|
-
expect(cop.messages)
|
149
|
-
.to eq(['Perceived complexity for method_name is too high. [2/1]'])
|
150
|
-
end
|
151
|
-
|
152
|
-
it 'registers an offense for and' do
|
153
|
-
inspect_source(cop, ['def method_name',
|
154
|
-
' call_foo and call_bar',
|
155
|
-
'end'])
|
156
|
-
expect(cop.messages)
|
157
|
-
.to eq(['Perceived complexity for method_name is too high. [2/1]'])
|
158
|
-
end
|
159
|
-
|
160
|
-
it 'registers an offense for ||' do
|
161
|
-
inspect_source(cop, ['def method_name',
|
162
|
-
' call_foo || call_bar',
|
163
|
-
'end'])
|
164
|
-
expect(cop.messages)
|
165
|
-
.to eq(['Perceived complexity for method_name is too high. [2/1]'])
|
166
|
-
end
|
167
|
-
|
168
|
-
it 'registers an offense for or' do
|
169
|
-
inspect_source(cop, ['def method_name',
|
170
|
-
' call_foo or call_bar',
|
171
|
-
'end'])
|
172
|
-
expect(cop.messages)
|
173
|
-
.to eq(['Perceived complexity for method_name is too high. [2/1]'])
|
174
|
-
end
|
175
|
-
|
176
|
-
it 'deals with nested if blocks containing && and ||' do
|
177
|
-
inspect_source(cop,
|
178
|
-
['def method_name',
|
179
|
-
' if first_condition then',
|
180
|
-
' call_foo if second_condition && third_condition',
|
181
|
-
' call_bar if fourth_condition || fifth_condition',
|
182
|
-
' end',
|
183
|
-
'end'])
|
184
|
-
expect(cop.messages)
|
185
|
-
.to eq(['Perceived complexity for method_name is too high. [6/1]'])
|
186
|
-
end
|
187
|
-
|
188
|
-
it 'counts only a single method' do
|
189
|
-
inspect_source(cop, ['def method_name_1',
|
190
|
-
' call_foo if some_condition',
|
191
|
-
'end',
|
192
|
-
'',
|
193
|
-
'def method_name_2',
|
194
|
-
' call_foo if some_condition',
|
195
|
-
'end'])
|
196
|
-
expect(cop.messages)
|
197
|
-
.to eq(['Perceived complexity for method_name_1 is too high. [2/1]',
|
198
|
-
'Perceived complexity for method_name_2 is too high. [2/1]'])
|
199
|
-
end
|
200
|
-
end
|
201
|
-
|
202
|
-
context 'when Max is 2' do
|
203
|
-
let(:cop_config) { { 'Max' => 2 } }
|
204
|
-
|
205
|
-
it 'counts stupid nested if and else blocks' do
|
206
|
-
inspect_source(cop, ['def method_name', # 1
|
207
|
-
' if first_condition then', # 2
|
208
|
-
' call_foo',
|
209
|
-
' else', # 3
|
210
|
-
' if second_condition then', # 4
|
211
|
-
' call_bar',
|
212
|
-
' else', # 5
|
213
|
-
' call_bam if third_condition', # 6
|
214
|
-
' end',
|
215
|
-
' call_baz if fourth_condition', # 7
|
216
|
-
' end',
|
217
|
-
'end'])
|
218
|
-
expect(cop.messages)
|
219
|
-
.to eq(['Perceived complexity for method_name is too high. [7/2]'])
|
220
|
-
end
|
221
|
-
end
|
222
|
-
end
|