rubocop 0.16.0 → 0.17.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/.gitignore +1 -0
- data/.travis.yml +3 -1
- data/CHANGELOG.md +44 -0
- data/CONTRIBUTING.md +40 -8
- data/Gemfile +6 -0
- data/README.md +65 -20
- data/Rakefile +0 -1
- data/config/default.yml +15 -3
- data/config/enabled.yml +143 -109
- data/lib/rubocop.rb +45 -26
- data/lib/rubocop/cli.rb +26 -27
- data/lib/rubocop/config.rb +0 -1
- data/lib/rubocop/config_loader.rb +16 -23
- data/lib/rubocop/cop/commissioner.rb +2 -7
- data/lib/rubocop/cop/cop.rb +24 -51
- data/lib/rubocop/cop/ignored_node.rb +31 -0
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +50 -0
- data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +36 -0
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +3 -11
- data/lib/rubocop/cop/lint/block_alignment.rb +6 -20
- data/lib/rubocop/cop/lint/condition_position.rb +52 -0
- data/lib/rubocop/cop/lint/else_layout.rb +57 -0
- data/lib/rubocop/cop/lint/end_alignment.rb +33 -8
- data/lib/rubocop/cop/lint/invalid_character_literal.rb +37 -0
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +2 -4
- data/lib/rubocop/cop/lint/syntax.rb +6 -12
- data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +25 -0
- data/lib/rubocop/cop/mixin/array_syntax.rb +20 -0
- data/lib/rubocop/cop/mixin/autocorrect_alignment.rb +76 -0
- data/lib/rubocop/cop/mixin/check_assignment.rb +26 -0
- data/lib/rubocop/cop/{check_methods.rb → mixin/check_methods.rb} +0 -0
- data/lib/rubocop/cop/mixin/code_length.rb +33 -0
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +53 -0
- data/lib/rubocop/cop/mixin/configurable_max.rb +19 -0
- data/lib/rubocop/cop/mixin/configurable_naming.rb +45 -0
- data/lib/rubocop/cop/{style → mixin}/if_node.rb +0 -0
- data/lib/rubocop/cop/mixin/if_then_else.rb +23 -0
- data/lib/rubocop/cop/mixin/negative_conditional.rb +24 -0
- data/lib/rubocop/cop/mixin/parser_diagnostic.rb +34 -0
- data/lib/rubocop/cop/mixin/safe_assignment.rb +19 -0
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +32 -0
- data/lib/rubocop/cop/mixin/space_inside.rb +31 -0
- data/lib/rubocop/cop/mixin/statement_modifier.rb +59 -0
- data/lib/rubocop/cop/mixin/string_help.rb +32 -0
- data/lib/rubocop/cop/mixin/surrounding_space.rb +42 -0
- data/lib/rubocop/cop/rails/default_scope.rb +3 -1
- data/lib/rubocop/cop/style/accessor_method_name.rb +4 -12
- data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +16 -1
- data/lib/rubocop/cop/style/case_indentation.rb +33 -16
- data/lib/rubocop/cop/style/character_literal.rb +10 -0
- data/lib/rubocop/cop/style/dot_position.rb +23 -6
- data/lib/rubocop/cop/style/empty_lines_around_body.rb +5 -5
- data/lib/rubocop/cop/style/favor_unless_over_negated_if.rb +1 -32
- data/lib/rubocop/cop/style/favor_until_over_negated_while.rb +20 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +5 -1
- data/lib/rubocop/cop/style/if_unless_modifier.rb +34 -0
- data/lib/rubocop/cop/style/if_with_semicolon.rb +1 -1
- data/lib/rubocop/cop/style/indentation_consistency.rb +51 -0
- data/lib/rubocop/cop/style/indentation_width.rb +0 -26
- data/lib/rubocop/cop/style/lambda_call.rb +12 -5
- data/lib/rubocop/cop/style/method_def_parentheses.rb +29 -11
- data/lib/rubocop/cop/style/multiline_if_then.rb +4 -9
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +22 -0
- data/lib/rubocop/cop/style/{ternary_operator.rb → nested_ternary_operator.rb} +0 -15
- data/lib/rubocop/cop/style/numeric_literals.rb +30 -2
- data/lib/rubocop/cop/style/one_line_conditional.rb +2 -1
- data/lib/rubocop/cop/style/parameter_lists.rb +7 -3
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +9 -11
- data/lib/rubocop/cop/style/predicate_name.rb +4 -12
- data/lib/rubocop/cop/style/raise_args.rb +19 -11
- data/lib/rubocop/cop/style/regexp_literal.rb +19 -6
- data/lib/rubocop/cop/style/space_after_colon.rb +36 -0
- data/lib/rubocop/cop/style/space_after_comma.rb +16 -0
- data/lib/rubocop/cop/style/space_after_semicolon.rb +16 -0
- data/lib/rubocop/cop/style/space_around_block_braces.rb +38 -38
- data/lib/rubocop/cop/style/space_around_operators.rb +1 -2
- data/lib/rubocop/cop/style/space_inside_hash_literal_braces.rb +6 -2
- data/lib/rubocop/cop/style/string_literals.rb +5 -5
- data/lib/rubocop/cop/style/trailing_comma.rb +94 -0
- data/lib/rubocop/cop/style/unless_else.rb +2 -2
- data/lib/rubocop/cop/style/while_until_modifier.rb +32 -0
- data/lib/rubocop/cop/style/word_array.rb +9 -1
- data/lib/rubocop/cop/util.rb +14 -0
- data/lib/rubocop/cop/variable_inspector.rb +11 -6
- data/lib/rubocop/cop/variable_inspector/scope.rb +4 -3
- data/lib/rubocop/file_inspector.rb +22 -6
- data/lib/rubocop/formatter/clang_style_formatter.rb +1 -1
- data/lib/rubocop/formatter/colorizable.rb +37 -0
- data/lib/rubocop/formatter/disabled_config_formatter.rb +27 -6
- data/lib/rubocop/formatter/progress_formatter.rb +1 -1
- data/lib/rubocop/formatter/simple_text_formatter.rb +9 -5
- data/lib/rubocop/options.rb +19 -4
- data/lib/rubocop/target_finder.rb +4 -0
- data/lib/rubocop/version.rb +1 -1
- data/rubocop-todo.yml +10 -2
- data/rubocop.gemspec +3 -2
- data/spec/project_spec.rb +12 -7
- data/spec/rubocop/cli_spec.rb +262 -99
- data/spec/rubocop/config_loader_spec.rb +5 -5
- data/spec/rubocop/config_spec.rb +3 -3
- data/spec/rubocop/config_store_spec.rb +12 -11
- data/spec/rubocop/cop/commissioner_spec.rb +21 -5
- data/spec/rubocop/cop/cop_spec.rb +1 -1
- data/spec/rubocop/cop/lint/ambiguous_operator_spec.rb +113 -0
- data/spec/rubocop/cop/lint/ambiguous_regexp_literal_spec.rb +35 -0
- data/spec/rubocop/cop/lint/block_alignment_spec.rb +2 -2
- data/spec/rubocop/cop/lint/condition_position_spec.rb +49 -0
- data/spec/rubocop/cop/lint/else_layout_spec.rb +65 -0
- data/spec/rubocop/cop/lint/end_alignment_spec.rb +41 -1
- data/spec/rubocop/cop/lint/invalid_character_literal_spec.rb +33 -0
- data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +3 -3
- data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +12 -12
- data/spec/rubocop/cop/lint/syntax_spec.rb +2 -2
- data/spec/rubocop/cop/lint/useless_assignment_spec.rb +72 -54
- data/spec/rubocop/cop/lint/useless_else_without_rescue_spec.rb +48 -0
- data/spec/rubocop/cop/offence_spec.rb +1 -1
- data/spec/rubocop/cop/rails/default_scope_spec.rb +6 -0
- data/spec/rubocop/cop/rails/output_spec.rb +2 -1
- data/spec/rubocop/cop/style/align_hash_spec.rb +9 -9
- data/spec/rubocop/cop/style/align_parameters_spec.rb +1 -1
- data/spec/rubocop/cop/style/braces_around_hash_parameters_spec.rb +5 -0
- data/spec/rubocop/cop/style/case_indentation_spec.rb +53 -2
- data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +3 -3
- data/spec/rubocop/cop/style/documentation_spec.rb +0 -1
- data/spec/rubocop/cop/style/dot_position_spec.rb +18 -3
- data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +4 -4
- data/spec/rubocop/cop/style/empty_lines_around_body_spec.rb +13 -0
- data/spec/rubocop/cop/style/favor_unless_over_negated_if_spec.rb +1 -1
- data/spec/rubocop/cop/style/favor_until_over_negated_while_spec.rb +1 -1
- data/spec/rubocop/cop/style/hash_syntax_spec.rb +5 -0
- data/spec/rubocop/cop/style/{favor_modifier_spec.rb → if_unless_modifier_spec.rb} +4 -111
- data/spec/rubocop/cop/style/indentation_consistency_spec.rb +490 -0
- data/spec/rubocop/cop/style/indentation_width_spec.rb +19 -91
- data/spec/rubocop/cop/style/lambda_call_spec.rb +18 -0
- data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +2 -2
- data/spec/rubocop/cop/style/method_def_parentheses_spec.rb +35 -1
- data/spec/rubocop/cop/style/method_length_spec.rb +1 -0
- data/spec/rubocop/cop/style/method_name_spec.rb +27 -5
- data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +4 -4
- data/spec/rubocop/cop/style/multiline_if_then_spec.rb +2 -2
- data/spec/rubocop/cop/style/multiline_ternary_operator_spec.rb +18 -0
- data/spec/rubocop/cop/style/{ternary_operator_spec.rb → nested_ternary_operator_spec.rb} +0 -15
- data/spec/rubocop/cop/style/numeric_literals_spec.rb +18 -1
- data/spec/rubocop/cop/style/one_line_conditional_spec.rb +2 -1
- data/spec/rubocop/cop/style/parameter_lists_spec.rb +1 -0
- data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +13 -4
- data/spec/rubocop/cop/style/raise_args_spec.rb +22 -0
- data/spec/rubocop/cop/style/redundant_self_spec.rb +4 -4
- data/spec/rubocop/cop/style/regexp_literal_spec.rb +4 -0
- data/spec/rubocop/cop/style/space_after_colon_spec.rb +12 -4
- data/spec/rubocop/cop/style/space_after_method_name_spec.rb +2 -2
- data/spec/rubocop/cop/style/space_around_block_braces_spec.rb +30 -1
- data/spec/rubocop/cop/style/{space_around_equals_in_default_parameter_spec.rb → space_around_equals_in_parameter_default_spec.rb} +0 -0
- data/spec/rubocop/cop/style/space_around_operators_spec.rb +2 -1
- data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +20 -3
- data/spec/rubocop/cop/style/string_literals_spec.rb +33 -0
- data/spec/rubocop/cop/style/trailing_comma_spec.rb +200 -0
- data/spec/rubocop/cop/style/variable_name_spec.rb +27 -3
- data/spec/rubocop/cop/style/while_until_modifier_spec.rb +75 -0
- data/spec/rubocop/cop/style/word_array_spec.rb +1 -0
- data/spec/rubocop/cop/team_spec.rb +1 -1
- data/spec/rubocop/cop/variable_inspector/scope_spec.rb +3 -4
- data/spec/rubocop/file_inspector_spec.rb +1 -1
- data/spec/rubocop/formatter/base_formatter_spec.rb +12 -11
- data/spec/rubocop/formatter/colorizable_spec.rb +107 -0
- data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +2 -0
- data/spec/rubocop/formatter/formatter_set_spec.rb +1 -1
- data/spec/rubocop/formatter/json_formatter_spec.rb +4 -3
- data/spec/rubocop/formatter/progress_formatter_spec.rb +2 -2
- data/spec/rubocop/options_spec.rb +3 -1
- data/spec/rubocop/target_finder_spec.rb +13 -11
- data/spec/spec_helper.rb +5 -1
- data/spec/support/shared_examples.rb +2 -2
- data/spec/support/statement_modifier_helper.rb +41 -0
- metadata +88 -30
- data/lib/rubocop/cop/check_assignment.rb +0 -43
- data/lib/rubocop/cop/style/array_syntax.rb +0 -22
- data/lib/rubocop/cop/style/autocorrect_alignment.rb +0 -78
- data/lib/rubocop/cop/style/code_length.rb +0 -35
- data/lib/rubocop/cop/style/configurable_enforced_style.rb +0 -51
- data/lib/rubocop/cop/style/configurable_max.rb +0 -17
- data/lib/rubocop/cop/style/configurable_naming.rb +0 -41
- data/lib/rubocop/cop/style/favor_modifier.rb +0 -118
- data/lib/rubocop/cop/style/if_then_else.rb +0 -27
- data/lib/rubocop/cop/style/space_after_comma_etc.rb +0 -73
- data/lib/rubocop/cop/style/space_inside.rb +0 -33
- data/lib/rubocop/cop/style/string_help.rb +0 -30
- data/lib/rubocop/cop/style/surrounding_space.rb +0 -44
| @@ -10,11 +10,8 @@ describe Rubocop::Cop::Style::IndentationWidth do | |
| 10 10 | 
             
                  inspect_source(cop,
         | 
| 11 11 | 
             
                                 ['if cond',
         | 
| 12 12 | 
             
                                  ' func',
         | 
| 13 | 
            -
                                  '  func',
         | 
| 14 13 | 
             
                                  'end'])
         | 
| 15 | 
            -
                  expect(cop.messages)
         | 
| 16 | 
            -
                    .to eq(['Use 2 (not 1) spaces for indentation.',
         | 
| 17 | 
            -
                            'Inconsistent indentation detected.'])
         | 
| 14 | 
            +
                  expect(cop.messages).to eq(['Use 2 (not 1) spaces for indentation.'])
         | 
| 18 15 | 
             
                end
         | 
| 19 16 |  | 
| 20 17 | 
             
                it 'registers an offence for bad indentation of an else body' do
         | 
| @@ -23,11 +20,8 @@ describe Rubocop::Cop::Style::IndentationWidth do | |
| 23 20 | 
             
                                  '  func1',
         | 
| 24 21 | 
             
                                  'else',
         | 
| 25 22 | 
             
                                  ' func2',
         | 
| 26 | 
            -
                                  '  func2',
         | 
| 27 23 | 
             
                                  'end'])
         | 
| 28 | 
            -
                  expect(cop.messages)
         | 
| 29 | 
            -
                    .to eq(['Use 2 (not 1) spaces for indentation.',
         | 
| 30 | 
            -
                            'Inconsistent indentation detected.'])
         | 
| 24 | 
            +
                  expect(cop.messages).to eq(['Use 2 (not 1) spaces for indentation.'])
         | 
| 31 25 | 
             
                end
         | 
| 32 26 |  | 
| 33 27 | 
             
                it 'registers an offence for bad indentation of an elsif body' do
         | 
| @@ -36,13 +30,10 @@ describe Rubocop::Cop::Style::IndentationWidth do | |
| 36 30 | 
             
                                  '  b1',
         | 
| 37 31 | 
             
                                  'elsif a2',
         | 
| 38 32 | 
             
                                  ' b2',
         | 
| 39 | 
            -
                                  'b3',
         | 
| 40 33 | 
             
                                  'else',
         | 
| 41 34 | 
             
                                  '  c',
         | 
| 42 35 | 
             
                                  'end'])
         | 
| 43 | 
            -
                  expect(cop.messages)
         | 
| 44 | 
            -
                    .to eq(['Use 2 (not 1) spaces for indentation.',
         | 
| 45 | 
            -
                            'Inconsistent indentation detected.'])
         | 
| 36 | 
            +
                  expect(cop.messages).to eq(['Use 2 (not 1) spaces for indentation.'])
         | 
| 46 37 | 
             
                end
         | 
| 47 38 |  | 
| 48 39 | 
             
                it 'registers offence for bad indentation of ternary inside else' do
         | 
| @@ -218,11 +209,8 @@ describe Rubocop::Cop::Style::IndentationWidth do | |
| 218 209 | 
             
                  inspect_source(cop,
         | 
| 219 210 | 
             
                                 ['unless cond',
         | 
| 220 211 | 
             
                                  ' func',
         | 
| 221 | 
            -
                                  '  func',
         | 
| 222 212 | 
             
                                  'end'])
         | 
| 223 | 
            -
                  expect(cop.messages)
         | 
| 224 | 
            -
                    .to eq(['Use 2 (not 1) spaces for indentation.',
         | 
| 225 | 
            -
                            'Inconsistent indentation detected.'])
         | 
| 213 | 
            +
                  expect(cop.messages).to eq(['Use 2 (not 1) spaces for indentation.'])
         | 
| 226 214 | 
             
                end
         | 
| 227 215 |  | 
| 228 216 | 
             
                it 'accepts an empty unless' do
         | 
| @@ -240,11 +228,8 @@ describe Rubocop::Cop::Style::IndentationWidth do | |
| 240 228 | 
             
                                 ['case a',
         | 
| 241 229 | 
             
                                  'when b',
         | 
| 242 230 | 
             
                                  ' c',
         | 
| 243 | 
            -
                                  '    d',
         | 
| 244 231 | 
             
                                  'end'])
         | 
| 245 | 
            -
                  expect(cop.messages)
         | 
| 246 | 
            -
                    .to eq(['Use 2 (not 1) spaces for indentation.',
         | 
| 247 | 
            -
                            'Inconsistent indentation detected.'])
         | 
| 232 | 
            +
                  expect(cop.messages).to eq(['Use 2 (not 1) spaces for indentation.'])
         | 
| 248 233 | 
             
                end
         | 
| 249 234 |  | 
| 250 235 | 
             
                it 'registers an offence for bad indentation in a case/else body' do
         | 
| @@ -256,11 +241,8 @@ describe Rubocop::Cop::Style::IndentationWidth do | |
| 256 241 | 
             
                                  '  e',
         | 
| 257 242 | 
             
                                  'else',
         | 
| 258 243 | 
             
                                  '   f',
         | 
| 259 | 
            -
                                  '  g',
         | 
| 260 244 | 
             
                                  'end'])
         | 
| 261 | 
            -
                  expect(cop.messages)
         | 
| 262 | 
            -
                    .to eq(['Use 2 (not 3) spaces for indentation.',
         | 
| 263 | 
            -
                            'Inconsistent indentation detected.'])
         | 
| 245 | 
            +
                  expect(cop.messages).to eq(['Use 2 (not 3) spaces for indentation.'])
         | 
| 264 246 | 
             
                end
         | 
| 265 247 |  | 
| 266 248 | 
             
                it 'accepts correctly indented case/when/else' do
         | 
| @@ -317,11 +299,8 @@ describe Rubocop::Cop::Style::IndentationWidth do | |
| 317 299 | 
             
                  inspect_source(cop,
         | 
| 318 300 | 
             
                                 ['while cond',
         | 
| 319 301 | 
             
                                  ' func',
         | 
| 320 | 
            -
                                  '  func',
         | 
| 321 302 | 
             
                                  'end'])
         | 
| 322 | 
            -
                  expect(cop.messages)
         | 
| 323 | 
            -
                    .to eq(['Use 2 (not 1) spaces for indentation.',
         | 
| 324 | 
            -
                            'Inconsistent indentation detected.'])
         | 
| 303 | 
            +
                  expect(cop.messages).to eq(['Use 2 (not 1) spaces for indentation.'])
         | 
| 325 304 | 
             
                end
         | 
| 326 305 |  | 
| 327 306 | 
             
                it 'registers an offence for bad indentation of begin/end/while' do
         | 
| @@ -330,20 +309,15 @@ describe Rubocop::Cop::Style::IndentationWidth do | |
| 330 309 | 
             
                                  ' func1',
         | 
| 331 310 | 
             
                                  '   func2',
         | 
| 332 311 | 
             
                                  'end while cond'])
         | 
| 333 | 
            -
                  expect(cop.messages)
         | 
| 334 | 
            -
                    .to eq(['Use 2 (not 1) spaces for indentation.',
         | 
| 335 | 
            -
                            'Inconsistent indentation detected.'])
         | 
| 312 | 
            +
                  expect(cop.messages).to eq(['Use 2 (not 1) spaces for indentation.'])
         | 
| 336 313 | 
             
                end
         | 
| 337 314 |  | 
| 338 315 | 
             
                it 'registers an offence for bad indentation of an until body' do
         | 
| 339 316 | 
             
                  inspect_source(cop,
         | 
| 340 317 | 
             
                                 ['until cond',
         | 
| 341 318 | 
             
                                  ' func',
         | 
| 342 | 
            -
                                  '  func',
         | 
| 343 319 | 
             
                                  'end'])
         | 
| 344 | 
            -
                  expect(cop.messages)
         | 
| 345 | 
            -
                    .to eq(['Use 2 (not 1) spaces for indentation.',
         | 
| 346 | 
            -
                            'Inconsistent indentation detected.'])
         | 
| 320 | 
            +
                  expect(cop.messages).to eq(['Use 2 (not 1) spaces for indentation.'])
         | 
| 347 321 | 
             
                end
         | 
| 348 322 |  | 
| 349 323 | 
             
                it 'accepts an empty while' do
         | 
| @@ -359,11 +333,8 @@ describe Rubocop::Cop::Style::IndentationWidth do | |
| 359 333 | 
             
                  inspect_source(cop,
         | 
| 360 334 | 
             
                                 ['for var in 1..10',
         | 
| 361 335 | 
             
                                  ' func',
         | 
| 362 | 
            -
                                  'func',
         | 
| 363 336 | 
             
                                  'end'])
         | 
| 364 | 
            -
                  expect(cop.messages)
         | 
| 365 | 
            -
                    .to eq(['Use 2 (not 1) spaces for indentation.',
         | 
| 366 | 
            -
                            'Inconsistent indentation detected.'])
         | 
| 337 | 
            +
                  expect(cop.messages).to eq(['Use 2 (not 1) spaces for indentation.'])
         | 
| 367 338 | 
             
                end
         | 
| 368 339 |  | 
| 369 340 | 
             
                it 'accepts an empty for' do
         | 
| @@ -379,22 +350,17 @@ describe Rubocop::Cop::Style::IndentationWidth do | |
| 379 350 | 
             
                  inspect_source(cop,
         | 
| 380 351 | 
             
                                 ['def test',
         | 
| 381 352 | 
             
                                  '    func1',
         | 
| 382 | 
            -
                                  '     func2',
         | 
| 353 | 
            +
                                  '     func2', # No offence registered for this.
         | 
| 383 354 | 
             
                                  'end'])
         | 
| 384 | 
            -
                  expect(cop.messages)
         | 
| 385 | 
            -
                    .to eq(['Use 2 (not 4) spaces for indentation.',
         | 
| 386 | 
            -
                            'Inconsistent indentation detected.'])
         | 
| 355 | 
            +
                  expect(cop.messages).to eq(['Use 2 (not 4) spaces for indentation.'])
         | 
| 387 356 | 
             
                end
         | 
| 388 357 |  | 
| 389 358 | 
             
                it 'registers an offence for bad indentation of a defs body' do
         | 
| 390 359 | 
             
                  inspect_source(cop,
         | 
| 391 360 | 
             
                                 ['def self.test',
         | 
| 392 361 | 
             
                                  '   func',
         | 
| 393 | 
            -
                                  '    func',
         | 
| 394 362 | 
             
                                  'end'])
         | 
| 395 | 
            -
                  expect(cop.messages)
         | 
| 396 | 
            -
                    .to eq(['Use 2 (not 3) spaces for indentation.',
         | 
| 397 | 
            -
                            'Inconsistent indentation detected.'])
         | 
| 363 | 
            +
                  expect(cop.messages).to eq(['Use 2 (not 3) spaces for indentation.'])
         | 
| 398 364 | 
             
                end
         | 
| 399 365 |  | 
| 400 366 | 
             
                it 'accepts an empty def body' do
         | 
| @@ -416,14 +382,10 @@ describe Rubocop::Cop::Style::IndentationWidth do | |
| 416 382 | 
             
                it 'registers an offence for bad indentation of a class body' do
         | 
| 417 383 | 
             
                  inspect_source(cop,
         | 
| 418 384 | 
             
                                 ['class Test',
         | 
| 419 | 
            -
                                  '    def  | 
| 385 | 
            +
                                  '    def func',
         | 
| 420 386 | 
             
                                  '    end',
         | 
| 421 | 
            -
                                  '  def func2',
         | 
| 422 | 
            -
                                  '  end',
         | 
| 423 387 | 
             
                                  'end'])
         | 
| 424 | 
            -
                  expect(cop.messages)
         | 
| 425 | 
            -
                    .to eq(['Use 2 (not 4) spaces for indentation.',
         | 
| 426 | 
            -
                            'Inconsistent indentation detected.'])
         | 
| 388 | 
            +
                  expect(cop.messages).to eq(['Use 2 (not 4) spaces for indentation.'])
         | 
| 427 389 | 
             
                end
         | 
| 428 390 |  | 
| 429 391 | 
             
                it 'accepts an empty class body' do
         | 
| @@ -453,43 +415,16 @@ describe Rubocop::Cop::Style::IndentationWidth do | |
| 453 415 | 
             
                                  'end'])
         | 
| 454 416 | 
             
                  expect(cop.offences).to be_empty
         | 
| 455 417 | 
             
                end
         | 
| 456 | 
            -
             | 
| 457 | 
            -
                it 'registers an offence for bad indentation of def but not for ' +
         | 
| 458 | 
            -
                  'outdented public, protected, and private' do
         | 
| 459 | 
            -
                  inspect_source(cop,
         | 
| 460 | 
            -
                                 ['class Test',
         | 
| 461 | 
            -
                                  'public',
         | 
| 462 | 
            -
                                  '',
         | 
| 463 | 
            -
                                  '  def e',
         | 
| 464 | 
            -
                                  '  end',
         | 
| 465 | 
            -
                                  '',
         | 
| 466 | 
            -
                                  'protected',
         | 
| 467 | 
            -
                                  '',
         | 
| 468 | 
            -
                                  '  def f',
         | 
| 469 | 
            -
                                  '  end',
         | 
| 470 | 
            -
                                  '',
         | 
| 471 | 
            -
                                  'private',
         | 
| 472 | 
            -
                                  '',
         | 
| 473 | 
            -
                                  ' def g',
         | 
| 474 | 
            -
                                  ' end',
         | 
| 475 | 
            -
                                  'end'])
         | 
| 476 | 
            -
                  expect(cop.messages).to eq(['Inconsistent indentation detected.'])
         | 
| 477 | 
            -
                  expect(cop.highlights).to eq([' '])
         | 
| 478 | 
            -
                end
         | 
| 479 418 | 
             
              end
         | 
| 480 419 |  | 
| 481 420 | 
             
              context 'with module' do
         | 
| 482 421 | 
             
                it 'registers an offence for bad indentation of a module body' do
         | 
| 483 422 | 
             
                  inspect_source(cop,
         | 
| 484 423 | 
             
                                 ['module Test',
         | 
| 485 | 
            -
                                  '    def  | 
| 424 | 
            +
                                  '    def func',
         | 
| 486 425 | 
             
                                  '    end',
         | 
| 487 | 
            -
                                  '     def func2',
         | 
| 488 | 
            -
                                  '     end',
         | 
| 489 426 | 
             
                                  'end'])
         | 
| 490 | 
            -
                  expect(cop.messages)
         | 
| 491 | 
            -
                    .to eq(['Use 2 (not 4) spaces for indentation.',
         | 
| 492 | 
            -
                            'Inconsistent indentation detected.'])
         | 
| 427 | 
            +
                  expect(cop.messages).to eq(['Use 2 (not 4) spaces for indentation.'])
         | 
| 493 428 | 
             
                end
         | 
| 494 429 |  | 
| 495 430 | 
             
                it 'accepts an empty module body' do
         | 
| @@ -505,29 +440,22 @@ describe Rubocop::Cop::Style::IndentationWidth do | |
| 505 440 | 
             
                  inspect_source(cop,
         | 
| 506 441 | 
             
                                 ['a = func do',
         | 
| 507 442 | 
             
                                  ' b',
         | 
| 508 | 
            -
                                  '  c',
         | 
| 509 443 | 
             
                                  'end'])
         | 
| 510 | 
            -
                  expect(cop.messages)
         | 
| 511 | 
            -
                    .to eq(['Use 2 (not 1) spaces for indentation.',
         | 
| 512 | 
            -
                            'Inconsistent indentation detected.'])
         | 
| 444 | 
            +
                  expect(cop.messages).to eq(['Use 2 (not 1) spaces for indentation.'])
         | 
| 513 445 | 
             
                end
         | 
| 514 446 |  | 
| 515 447 | 
             
                it 'registers an offence for bad indentation of a {} body' do
         | 
| 516 448 | 
             
                  inspect_source(cop,
         | 
| 517 449 | 
             
                                 ['func {',
         | 
| 518 450 | 
             
                                  '   b',
         | 
| 519 | 
            -
                                  '  c',
         | 
| 520 451 | 
             
                                  '}'])
         | 
| 521 | 
            -
                  expect(cop.messages)
         | 
| 522 | 
            -
                    .to eq(['Use 2 (not 3) spaces for indentation.',
         | 
| 523 | 
            -
                            'Inconsistent indentation detected.'])
         | 
| 452 | 
            +
                  expect(cop.messages).to eq(['Use 2 (not 3) spaces for indentation.'])
         | 
| 524 453 | 
             
                end
         | 
| 525 454 |  | 
| 526 455 | 
             
                it 'accepts a correctly indented block body' do
         | 
| 527 456 | 
             
                  inspect_source(cop,
         | 
| 528 457 | 
             
                                 ['a = func do',
         | 
| 529 458 | 
             
                                  '  b',
         | 
| 530 | 
            -
                                  '  c',
         | 
| 531 459 | 
             
                                  'end'])
         | 
| 532 460 | 
             
                  expect(cop.offences).to be_empty
         | 
| 533 461 | 
             
                end
         | 
| @@ -12,6 +12,15 @@ describe Rubocop::Cop::Style::LambdaCall, :config do | |
| 12 12 | 
             
                  inspect_source(cop,
         | 
| 13 13 | 
             
                                 ['x.(a, b)'])
         | 
| 14 14 | 
             
                  expect(cop.offences.size).to eq(1)
         | 
| 15 | 
            +
                  expect(cop.config_to_allow_offences).to eq('EnforcedStyle' => 'braces')
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                it 'registers an offence for correct + opposite' do
         | 
| 19 | 
            +
                  inspect_source(cop,
         | 
| 20 | 
            +
                                 ['x.call(a, b)',
         | 
| 21 | 
            +
                                  'x.(a, b)'])
         | 
| 22 | 
            +
                  expect(cop.offences.size).to eq(1)
         | 
| 23 | 
            +
                  expect(cop.config_to_allow_offences).to eq('Enabled' => false)
         | 
| 15 24 | 
             
                end
         | 
| 16 25 |  | 
| 17 26 | 
             
                it 'accepts x.call()' do
         | 
| @@ -32,6 +41,15 @@ describe Rubocop::Cop::Style::LambdaCall, :config do | |
| 32 41 | 
             
                  inspect_source(cop,
         | 
| 33 42 | 
             
                                 ['x.call(a, b)'])
         | 
| 34 43 | 
             
                  expect(cop.offences.size).to eq(1)
         | 
| 44 | 
            +
                  expect(cop.config_to_allow_offences).to eq('EnforcedStyle' => 'call')
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                it 'registers an offence for opposite + correct' do
         | 
| 48 | 
            +
                  inspect_source(cop,
         | 
| 49 | 
            +
                                 ['x.call(a, b)',
         | 
| 50 | 
            +
                                  'x.(a, b)'])
         | 
| 51 | 
            +
                  expect(cop.offences.size).to eq(1)
         | 
| 52 | 
            +
                  expect(cop.config_to_allow_offences).to eq('Enabled' => false)
         | 
| 35 53 | 
             
                end
         | 
| 36 54 |  | 
| 37 55 | 
             
                it 'accepts x.()' do
         | 
| @@ -10,7 +10,7 @@ describe Rubocop::Cop::Style::MethodCalledOnDoEndBlock do | |
| 10 10 | 
             
                  inspect_source(cop, ['a do',
         | 
| 11 11 | 
             
                                       '  b',
         | 
| 12 12 | 
             
                                       'end.c'])
         | 
| 13 | 
            -
                  expect(cop.offences).to  | 
| 13 | 
            +
                  expect(cop.offences.size).to eq(1)
         | 
| 14 14 | 
             
                  expect(cop.highlights).to eq(['end.c'])
         | 
| 15 15 | 
             
                end
         | 
| 16 16 |  | 
| @@ -34,7 +34,7 @@ describe Rubocop::Cop::Style::MethodCalledOnDoEndBlock do | |
| 34 34 | 
             
              context 'with a single-line do..end block' do
         | 
| 35 35 | 
             
                it 'registers an offence for a chained call' do
         | 
| 36 36 | 
             
                  inspect_source(cop, ['a do b end.c'])
         | 
| 37 | 
            -
                  expect(cop.offences).to  | 
| 37 | 
            +
                  expect(cop.offences.size).to eq(1)
         | 
| 38 38 | 
             
                  expect(cop.highlights).to eq(['end.c'])
         | 
| 39 39 | 
             
                end
         | 
| 40 40 |  | 
| @@ -13,6 +13,18 @@ describe Rubocop::Cop::Style::MethodDefParentheses, :config do | |
| 13 13 | 
             
                         'end']
         | 
| 14 14 | 
             
                  inspect_source(cop, src)
         | 
| 15 15 | 
             
                  expect(cop.offences.size).to eq(1)
         | 
| 16 | 
            +
                  expect(cop.config_to_allow_offences).to eq('EnforcedStyle' =>
         | 
| 17 | 
            +
                                                             'require_no_parentheses')
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                it 'reports an offence for correct + opposite' do
         | 
| 21 | 
            +
                  src = ['def func(a, b)',
         | 
| 22 | 
            +
                         'end',
         | 
| 23 | 
            +
                         'def func a, b',
         | 
| 24 | 
            +
                         'end']
         | 
| 25 | 
            +
                  inspect_source(cop, src)
         | 
| 26 | 
            +
                  expect(cop.offences.size).to eq(1)
         | 
| 27 | 
            +
                  expect(cop.config_to_allow_offences).to eq('Enabled' => false)
         | 
| 16 28 | 
             
                end
         | 
| 17 29 |  | 
| 18 30 | 
             
                it 'reports an offence for class def with parameters but no parens' do
         | 
| @@ -29,11 +41,16 @@ describe Rubocop::Cop::Style::MethodDefParentheses, :config do | |
| 29 41 | 
             
                  expect(cop.offences).to be_empty
         | 
| 30 42 | 
             
                end
         | 
| 31 43 |  | 
| 32 | 
            -
                it 'auto-adds required parens' do
         | 
| 44 | 
            +
                it 'auto-adds required parens for a def' do
         | 
| 33 45 | 
             
                  new_source = autocorrect_source(cop, 'def test param; end')
         | 
| 34 46 | 
             
                  expect(new_source).to eq('def test(param); end')
         | 
| 35 47 | 
             
                end
         | 
| 36 48 |  | 
| 49 | 
            +
                it 'auto-adds required parens for a defs' do
         | 
| 50 | 
            +
                  new_source = autocorrect_source(cop, 'def self.test param; end')
         | 
| 51 | 
            +
                  expect(new_source).to eq('def self.test(param); end')
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
             | 
| 37 54 | 
             
                it 'auto-adds required parens to argument lists on multiple lines' do
         | 
| 38 55 | 
             
                  new_source = autocorrect_source(cop, ['def test one,', 'two', 'end'])
         | 
| 39 56 | 
             
                  expect(new_source).to eq("def test(one,\ntwo)\nend")
         | 
| @@ -48,6 +65,18 @@ describe Rubocop::Cop::Style::MethodDefParentheses, :config do | |
| 48 65 | 
             
                         'end']
         | 
| 49 66 | 
             
                  inspect_source(cop, src)
         | 
| 50 67 | 
             
                  expect(cop.offences.size).to eq(1)
         | 
| 68 | 
            +
                  expect(cop.config_to_allow_offences).to eq('EnforcedStyle' =>
         | 
| 69 | 
            +
                                                             'require_parentheses')
         | 
| 70 | 
            +
                end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                it 'reports an offence for opposite + correct' do
         | 
| 73 | 
            +
                  src = ['def func(a, b)',
         | 
| 74 | 
            +
                         'end',
         | 
| 75 | 
            +
                         'def func a, b',
         | 
| 76 | 
            +
                         'end']
         | 
| 77 | 
            +
                  inspect_source(cop, src)
         | 
| 78 | 
            +
                  expect(cop.offences.size).to eq(1)
         | 
| 79 | 
            +
                  expect(cop.config_to_allow_offences).to eq('Enabled' => false)
         | 
| 51 80 | 
             
                end
         | 
| 52 81 |  | 
| 53 82 | 
             
                it 'reports an offence for class def with parameters with parens' do
         | 
| @@ -68,5 +97,10 @@ describe Rubocop::Cop::Style::MethodDefParentheses, :config do | |
| 68 97 | 
             
                  new_source = autocorrect_source(cop, 'def test(param); end')
         | 
| 69 98 | 
             
                  expect(new_source).to eq('def test param; end')
         | 
| 70 99 | 
             
                end
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                it 'auto-removes the parens for defs' do
         | 
| 102 | 
            +
                  new_source = autocorrect_source(cop, 'def self.test(param); end')
         | 
| 103 | 
            +
                  expect(new_source).to eq('def self.test param; end')
         | 
| 104 | 
            +
                end
         | 
| 71 105 | 
             
              end
         | 
| 72 106 | 
             
            end
         | 
| @@ -17,6 +17,7 @@ describe Rubocop::Cop::Style::MethodLength, :config do | |
| 17 17 | 
             
                                     'end'])
         | 
| 18 18 | 
             
                expect(cop.offences.size).to eq(1)
         | 
| 19 19 | 
             
                expect(cop.offences.map(&:line).sort).to eq([1])
         | 
| 20 | 
            +
                expect(cop.config_to_allow_offences).to eq('Max' => 6)
         | 
| 20 21 | 
             
              end
         | 
| 21 22 |  | 
| 22 23 | 
             
              it 'accepts a method with less than 5 lines' do
         | 
| @@ -9,14 +9,14 @@ describe Rubocop::Cop::Style::MethodName, :config do | |
| 9 9 | 
             
                it 'registers an offence for mixed snake case and camel case' do
         | 
| 10 10 | 
             
                  inspect_source(cop, ['def visit_Arel_Nodes_SelectStatement',
         | 
| 11 11 | 
             
                                       'end'])
         | 
| 12 | 
            -
                  expect(cop.offences).to  | 
| 12 | 
            +
                  expect(cop.offences.size).to eq(1)
         | 
| 13 13 | 
             
                  expect(cop.highlights).to eq(['visit_Arel_Nodes_SelectStatement'])
         | 
| 14 14 | 
             
                end
         | 
| 15 15 |  | 
| 16 16 | 
             
                it 'registers an offence for capitalized camel case' do
         | 
| 17 17 | 
             
                  inspect_source(cop, ['def MyMethod',
         | 
| 18 18 | 
             
                                       'end'])
         | 
| 19 | 
            -
                  expect(cop.offences).to  | 
| 19 | 
            +
                  expect(cop.offences.size).to eq(1)
         | 
| 20 20 | 
             
                  expect(cop.highlights).to eq(['MyMethod'])
         | 
| 21 21 | 
             
                end
         | 
| 22 22 | 
             
              end
         | 
| @@ -42,15 +42,26 @@ describe Rubocop::Cop::Style::MethodName, :config do | |
| 42 42 | 
             
                  inspect_source(cop, ['def myMethod',
         | 
| 43 43 | 
             
                                       '  # ...',
         | 
| 44 44 | 
             
                                       'end'])
         | 
| 45 | 
            -
                  expect(cop.offences).to  | 
| 45 | 
            +
                  expect(cop.offences.size).to eq(1)
         | 
| 46 46 | 
             
                  expect(cop.highlights).to eq(['myMethod'])
         | 
| 47 | 
            +
                  expect(cop.config_to_allow_offences).to eq('EnforcedStyle' =>
         | 
| 48 | 
            +
                                                             'camelCase')
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                it 'registers an offence for opposite + correct' do
         | 
| 52 | 
            +
                  inspect_source(cop, ['def my_method',
         | 
| 53 | 
            +
                                       'end',
         | 
| 54 | 
            +
                                       'def myMethod',
         | 
| 55 | 
            +
                                       'end'])
         | 
| 56 | 
            +
                  expect(cop.highlights).to eq(['myMethod'])
         | 
| 57 | 
            +
                  expect(cop.config_to_allow_offences).to eq('Enabled' => false)
         | 
| 47 58 | 
             
                end
         | 
| 48 59 |  | 
| 49 60 | 
             
                it 'registers an offence for camel case in singleton method name' do
         | 
| 50 61 | 
             
                  inspect_source(cop, ['def self.myMethod',
         | 
| 51 62 | 
             
                                       '  # ...',
         | 
| 52 63 | 
             
                                       'end'])
         | 
| 53 | 
            -
                  expect(cop.offences).to  | 
| 64 | 
            +
                  expect(cop.offences.size).to eq(1)
         | 
| 54 65 | 
             
                  expect(cop.highlights).to eq(['myMethod'])
         | 
| 55 66 | 
             
                end
         | 
| 56 67 |  | 
| @@ -84,8 +95,19 @@ describe Rubocop::Cop::Style::MethodName, :config do | |
| 84 95 | 
             
                it 'registers an offence for snake case in names' do
         | 
| 85 96 | 
             
                  inspect_source(cop, ['def my_method',
         | 
| 86 97 | 
             
                                       'end'])
         | 
| 87 | 
            -
                  expect(cop.offences).to  | 
| 98 | 
            +
                  expect(cop.offences.size).to eq(1)
         | 
| 99 | 
            +
                  expect(cop.highlights).to eq(['my_method'])
         | 
| 100 | 
            +
                  expect(cop.config_to_allow_offences).to eq('EnforcedStyle' =>
         | 
| 101 | 
            +
                                                             'snake_case')
         | 
| 102 | 
            +
                end
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                it 'registers an offence for correct + opposite' do
         | 
| 105 | 
            +
                  inspect_source(cop, ['def my_method',
         | 
| 106 | 
            +
                                       'end',
         | 
| 107 | 
            +
                                       'def myMethod',
         | 
| 108 | 
            +
                                       'end'])
         | 
| 88 109 | 
             
                  expect(cop.highlights).to eq(['my_method'])
         | 
| 110 | 
            +
                  expect(cop.config_to_allow_offences).to eq('Enabled' => false)
         | 
| 89 111 | 
             
                end
         | 
| 90 112 |  | 
| 91 113 | 
             
                include_examples 'always accepted'
         | 
| @@ -12,7 +12,7 @@ describe Rubocop::Cop::Style::MultilineBlockChain do | |
| 12 12 | 
             
                                       'end.c do',
         | 
| 13 13 | 
             
                                       '  d',
         | 
| 14 14 | 
             
                                       'end'])
         | 
| 15 | 
            -
                  expect(cop.offences).to  | 
| 15 | 
            +
                  expect(cop.offences.size).to eq(1)
         | 
| 16 16 | 
             
                  expect(cop.highlights).to eq(['end.c'])
         | 
| 17 17 | 
             
                end
         | 
| 18 18 |  | 
| @@ -22,7 +22,7 @@ describe Rubocop::Cop::Style::MultilineBlockChain do | |
| 22 22 | 
             
                                       'end.c1.c2 do',
         | 
| 23 23 | 
             
                                       '  d',
         | 
| 24 24 | 
             
                                       'end'])
         | 
| 25 | 
            -
                  expect(cop.offences).to  | 
| 25 | 
            +
                  expect(cop.offences.size).to eq(1)
         | 
| 26 26 | 
             
                  expect(cop.highlights).to eq(['end.c1.c2'])
         | 
| 27 27 | 
             
                end
         | 
| 28 28 |  | 
| @@ -34,7 +34,7 @@ describe Rubocop::Cop::Style::MultilineBlockChain do | |
| 34 34 | 
             
                                       'end.e do',
         | 
| 35 35 | 
             
                                       '  f',
         | 
| 36 36 | 
             
                                       'end'])
         | 
| 37 | 
            -
                  expect(cop.offences).to  | 
| 37 | 
            +
                  expect(cop.offences.size).to eq(2)
         | 
| 38 38 | 
             
                  expect(cop.highlights).to eq(['end.c', 'end.e'])
         | 
| 39 39 | 
             
                end
         | 
| 40 40 |  | 
| @@ -43,7 +43,7 @@ describe Rubocop::Cop::Style::MultilineBlockChain do | |
| 43 43 | 
             
                  inspect_source(cop, ['Thread.list.find_all { |t|',
         | 
| 44 44 | 
             
                                       '  t.alive?',
         | 
| 45 45 | 
             
                                       '}.map { |thread| thread.object_id }'])
         | 
| 46 | 
            -
                  expect(cop.offences).to  | 
| 46 | 
            +
                  expect(cop.offences.size).to eq(1)
         | 
| 47 47 | 
             
                  expect(cop.highlights).to eq(['}.map'])
         | 
| 48 48 | 
             
                end
         | 
| 49 49 |  |