rubocop 0.4.0 → 0.8.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 +7 -0
- data/.gitignore +50 -0
- data/.rubocop.yml +5 -127
- data/.travis.yml +7 -1
- data/CHANGELOG.md +157 -0
- data/CONTRIBUTING.md +13 -6
- data/Gemfile +3 -8
- data/README.md +160 -9
- data/Rakefile +3 -17
- data/bin/rubocop +16 -10
- data/config/default.yml +46 -0
- data/config/disabled.yml +5 -0
- data/config/enabled.yml +322 -0
- data/lib/rubocop/cli.rb +248 -93
- data/lib/rubocop/config.rb +205 -0
- data/lib/rubocop/config_store.rb +37 -0
- data/lib/rubocop/cop/access_control.rb +41 -0
- data/lib/rubocop/cop/alias.rb +17 -0
- data/lib/rubocop/cop/align_parameters.rb +20 -95
- data/lib/rubocop/cop/and_or.rb +26 -0
- data/lib/rubocop/cop/ascii_comments.rb +13 -0
- data/lib/rubocop/cop/ascii_identifiers.rb +19 -0
- data/lib/rubocop/cop/avoid_class_vars.rb +15 -0
- data/lib/rubocop/cop/avoid_for.rb +17 -0
- data/lib/rubocop/cop/avoid_global_vars.rb +61 -0
- data/lib/rubocop/cop/avoid_perl_backrefs.rb +17 -0
- data/lib/rubocop/cop/avoid_perlisms.rb +47 -0
- data/lib/rubocop/cop/block_comments.rb +15 -0
- data/lib/rubocop/cop/blocks.rb +11 -47
- data/lib/rubocop/cop/case_indentation.rb +22 -0
- data/lib/rubocop/cop/class_and_module_camel_case.rb +20 -11
- data/lib/rubocop/cop/class_methods.rb +15 -0
- data/lib/rubocop/cop/collection_methods.rb +16 -16
- data/lib/rubocop/cop/colon_method_call.rb +20 -0
- data/lib/rubocop/cop/constant_name.rb +24 -0
- data/lib/rubocop/cop/cop.rb +34 -47
- data/lib/rubocop/cop/def_parentheses.rb +43 -35
- data/lib/rubocop/cop/empty_line_between_defs.rb +22 -0
- data/lib/rubocop/cop/empty_lines.rb +21 -13
- data/lib/rubocop/cop/empty_literal.rb +47 -0
- data/lib/rubocop/cop/encoding.rb +3 -3
- data/lib/rubocop/cop/end_of_line.rb +3 -3
- data/lib/rubocop/cop/ensure_return.rb +19 -0
- data/lib/rubocop/cop/eval.rb +19 -0
- data/lib/rubocop/cop/favor_join.rb +22 -0
- data/lib/rubocop/cop/favor_modifier.rb +38 -48
- data/lib/rubocop/cop/favor_percent_r.rb +19 -0
- data/lib/rubocop/cop/favor_sprintf.rb +21 -0
- data/lib/rubocop/cop/favor_unless_over_negated_if.rb +19 -17
- data/lib/rubocop/cop/handle_exceptions.rb +17 -0
- data/lib/rubocop/cop/hash_syntax.rb +29 -14
- data/lib/rubocop/cop/if_then_else.rb +32 -29
- data/lib/rubocop/cop/leading_comment_space.rb +17 -0
- data/lib/rubocop/cop/line_continuation.rb +15 -0
- data/lib/rubocop/cop/line_length.rb +4 -4
- data/lib/rubocop/cop/loop.rb +33 -0
- data/lib/rubocop/cop/method_and_variable_snake_case.rb +41 -17
- data/lib/rubocop/cop/method_length.rb +52 -0
- data/lib/rubocop/cop/new_lambda_literal.rb +8 -6
- data/lib/rubocop/cop/not.rb +21 -0
- data/lib/rubocop/cop/numeric_literals.rb +9 -7
- data/lib/rubocop/cop/offence.rb +12 -1
- data/lib/rubocop/cop/op_method.rb +26 -0
- data/lib/rubocop/cop/parameter_lists.rb +12 -6
- data/lib/rubocop/cop/parentheses_around_condition.rb +11 -11
- data/lib/rubocop/cop/percent_r.rb +19 -0
- data/lib/rubocop/cop/reduce_arguments.rb +29 -0
- data/lib/rubocop/cop/rescue_exception.rb +26 -0
- data/lib/rubocop/cop/rescue_modifier.rb +17 -0
- data/lib/rubocop/cop/semicolon.rb +31 -0
- data/lib/rubocop/cop/single_line_methods.rb +44 -0
- data/lib/rubocop/cop/space_after_comma_etc.rb +30 -10
- data/lib/rubocop/cop/space_after_control_keyword.rb +29 -0
- data/lib/rubocop/cop/string_literals.rb +9 -23
- data/lib/rubocop/cop/surrounding_space.rb +223 -83
- data/lib/rubocop/cop/symbol_array.rb +31 -0
- data/lib/rubocop/cop/symbol_name.rb +23 -0
- data/lib/rubocop/cop/syntax.rb +35 -5
- data/lib/rubocop/cop/tab.rb +3 -3
- data/lib/rubocop/cop/ternary_operator.rb +26 -24
- data/lib/rubocop/cop/trailing_whitespace.rb +3 -5
- data/lib/rubocop/cop/trivial_accessors.rb +26 -0
- data/lib/rubocop/cop/unless_else.rb +11 -7
- data/lib/rubocop/cop/util.rb +26 -0
- data/lib/rubocop/cop/variable_interpolation.rb +29 -0
- data/lib/rubocop/cop/when_then.rb +6 -14
- data/lib/rubocop/cop/word_array.rb +37 -0
- data/lib/rubocop/report/emacs_style.rb +2 -2
- data/lib/rubocop/report/plain_text.rb +1 -1
- data/lib/rubocop/version.rb +3 -1
- data/lib/rubocop.rb +48 -8
- data/rubocop.gemspec +32 -151
- data/spec/project_spec.rb +27 -0
- data/spec/rubocop/cli_spec.rb +573 -200
- data/spec/rubocop/config_spec.rb +409 -0
- data/spec/rubocop/config_store_spec.rb +66 -0
- data/spec/rubocop/cops/access_control_spec.rb +129 -0
- data/spec/rubocop/cops/alias_spec.rb +39 -0
- data/spec/rubocop/cops/align_parameters_spec.rb +66 -70
- data/spec/rubocop/cops/and_or_spec.rb +37 -0
- data/spec/rubocop/cops/ascii_comments_spec.rb +26 -0
- data/spec/rubocop/cops/ascii_identifiers_spec.rb +26 -0
- data/spec/rubocop/cops/avoid_class_vars_spec.rb +25 -0
- data/spec/rubocop/cops/avoid_for_spec.rb +35 -0
- data/spec/rubocop/cops/avoid_global_vars_spec.rb +32 -0
- data/spec/rubocop/cops/avoid_perl_backrefs_spec.rb +18 -0
- data/spec/rubocop/cops/avoid_perlisms_spec.rb +44 -0
- data/spec/rubocop/cops/block_comments_spec.rb +25 -0
- data/spec/rubocop/cops/blocks_spec.rb +33 -0
- data/spec/rubocop/cops/{indentation_spec.rb → case_indentation_spec.rb} +7 -7
- data/spec/rubocop/cops/class_and_module_camel_case_spec.rb +15 -5
- data/spec/rubocop/cops/class_methods_spec.rb +49 -0
- data/spec/rubocop/cops/collection_methods_spec.rb +9 -4
- data/spec/rubocop/cops/colon_method_call_spec.rb +53 -0
- data/spec/rubocop/cops/constant_name_spec.rb +42 -0
- data/spec/rubocop/cops/def_with_parentheses_spec.rb +13 -8
- data/spec/rubocop/cops/def_without_parentheses_spec.rb +11 -5
- data/spec/rubocop/cops/empty_line_between_defs_spec.rb +83 -0
- data/spec/rubocop/cops/empty_lines_spec.rb +14 -59
- data/spec/rubocop/cops/empty_literal_spec.rb +90 -0
- data/spec/rubocop/cops/encoding_spec.rb +11 -11
- data/spec/rubocop/cops/end_of_line_spec.rb +2 -2
- data/spec/rubocop/cops/ensure_return_spec.rb +35 -0
- data/spec/rubocop/cops/eval_spec.rb +39 -0
- data/spec/rubocop/cops/favor_join_spec.rb +35 -0
- data/spec/rubocop/cops/favor_modifier_spec.rb +16 -14
- data/spec/rubocop/cops/favor_percent_r_spec.rb +29 -0
- data/spec/rubocop/cops/favor_sprintf_spec.rb +51 -0
- data/spec/rubocop/cops/favor_unless_over_negated_if_spec.rb +4 -4
- data/spec/rubocop/cops/favor_until_over_negated_while_spec.rb +3 -3
- data/spec/rubocop/cops/handle_exceptions_spec.rb +34 -0
- data/spec/rubocop/cops/hash_syntax_spec.rb +11 -6
- data/spec/rubocop/cops/if_with_semicolon_spec.rb +7 -1
- data/spec/rubocop/cops/leading_comment_space_spec.rb +54 -0
- data/spec/rubocop/cops/line_continuation_spec.rb +24 -0
- data/spec/rubocop/cops/line_length_spec.rb +3 -2
- data/spec/rubocop/cops/loop_spec.rb +31 -0
- data/spec/rubocop/cops/method_and_variable_snake_case_spec.rb +55 -9
- data/spec/rubocop/cops/method_length_spec.rb +147 -0
- data/spec/rubocop/cops/multiline_if_then_spec.rb +15 -15
- data/spec/rubocop/cops/new_lambda_literal_spec.rb +5 -6
- data/spec/rubocop/cops/not_spec.rb +31 -0
- data/spec/rubocop/cops/numeric_literals_spec.rb +13 -13
- data/spec/rubocop/cops/offence_spec.rb +13 -0
- data/spec/rubocop/cops/one_line_conditional_spec.rb +1 -1
- data/spec/rubocop/cops/op_method_spec.rb +78 -0
- data/spec/rubocop/cops/parameter_lists_spec.rb +7 -7
- data/spec/rubocop/cops/parentheses_around_condition_spec.rb +41 -44
- data/spec/rubocop/cops/percent_r_spec.rb +29 -0
- data/spec/rubocop/cops/reduce_arguments_spec.rb +57 -0
- data/spec/rubocop/cops/rescue_exception_spec.rb +125 -0
- data/spec/rubocop/cops/rescue_modifier_spec.rb +37 -0
- data/spec/rubocop/cops/semicolon_spec.rb +88 -0
- data/spec/rubocop/cops/single_line_methods_spec.rb +50 -0
- data/spec/rubocop/cops/space_after_colon_spec.rb +3 -3
- data/spec/rubocop/cops/space_after_comma_spec.rb +14 -2
- data/spec/rubocop/cops/space_after_control_keyword_spec.rb +67 -0
- data/spec/rubocop/cops/space_after_semicolon_spec.rb +6 -1
- data/spec/rubocop/cops/space_around_braces_spec.rb +18 -3
- data/spec/rubocop/cops/space_around_equals_in_default_parameter_spec.rb +12 -2
- data/spec/rubocop/cops/space_around_operators_spec.rb +88 -26
- data/spec/rubocop/cops/space_inside_brackets_spec.rb +13 -7
- data/spec/rubocop/cops/space_inside_hash_literal_braces_spec.rb +79 -0
- data/spec/rubocop/cops/space_inside_parens_spec.rb +7 -3
- data/spec/rubocop/cops/string_literals_spec.rb +21 -6
- data/spec/rubocop/cops/symbol_array_spec.rb +41 -0
- data/spec/rubocop/cops/symbol_name_spec.rb +119 -0
- data/spec/rubocop/cops/syntax_spec.rb +28 -5
- data/spec/rubocop/cops/tab_spec.rb +2 -2
- data/spec/rubocop/cops/ternary_operator_spec.rb +13 -17
- data/spec/rubocop/cops/trailing_whitespace_spec.rb +3 -3
- data/spec/rubocop/cops/trivial_accessors_spec.rb +329 -0
- data/spec/rubocop/cops/unless_else_spec.rb +8 -8
- data/spec/rubocop/cops/variable_interpolation_spec.rb +49 -0
- data/spec/rubocop/cops/when_then_spec.rb +14 -14
- data/spec/rubocop/cops/word_array_spec.rb +47 -0
- data/spec/spec_helper.rb +30 -9
- data/spec/support/file_helper.rb +21 -0
- data/spec/support/isolated_environment.rb +27 -0
- metadata +235 -76
- data/.document +0 -5
- data/Gemfile.lock +0 -41
- data/VERSION +0 -1
- data/lib/rubocop/cop/ampersands_pipes_vs_and_or.rb +0 -25
- data/lib/rubocop/cop/grammar.rb +0 -135
- data/lib/rubocop/cop/indentation.rb +0 -44
- data/spec/rubocop/cops/ampersands_pipes_vs_and_or_spec.rb +0 -57
- data/spec/rubocop/cops/grammar_spec.rb +0 -71
- data/spec/rubocop/cops/multiline_blocks_spec.rb +0 -24
- data/spec/rubocop/cops/single_line_blocks_spec.rb +0 -22
| @@ -0,0 +1,35 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'spec_helper'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Rubocop
         | 
| 6 | 
            +
              module Cop
         | 
| 7 | 
            +
                describe FavorJoin do
         | 
| 8 | 
            +
                  let(:fj) { FavorJoin.new }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  it 'registers an offence for an array followed by string' do
         | 
| 11 | 
            +
                    inspect_source(fj,
         | 
| 12 | 
            +
                                   ['%w(one two three) * ", "'])
         | 
| 13 | 
            +
                    expect(fj.offences.size).to eq(1)
         | 
| 14 | 
            +
                    expect(fj.offences.map(&:message))
         | 
| 15 | 
            +
                      .to eq([FavorJoin::MSG])
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  it 'does not register an offence for numbers' do
         | 
| 19 | 
            +
                    inspect_source(fj,
         | 
| 20 | 
            +
                                   ['%w(one two three) * 4'])
         | 
| 21 | 
            +
                    expect(fj.offences).to be_empty
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                  it 'does not register an offence for ambiguous cases' do
         | 
| 25 | 
            +
                    inspect_source(fj,
         | 
| 26 | 
            +
                                   ['test * ", "'])
         | 
| 27 | 
            +
                    expect(fj.offences).to be_empty
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    inspect_source(fj,
         | 
| 30 | 
            +
                                   ['%w(one two three) * test'])
         | 
| 31 | 
            +
                    expect(fj.offences).to be_empty
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
            end
         | 
| @@ -4,13 +4,14 @@ require 'spec_helper' | |
| 4 4 |  | 
| 5 5 | 
             
            module Rubocop
         | 
| 6 6 | 
             
              module Cop
         | 
| 7 | 
            -
                describe FavorModifier do
         | 
| 7 | 
            +
                describe FavorModifier, broken: true do
         | 
| 8 8 | 
             
                  let(:if_until) { IfUnlessModifier.new }
         | 
| 9 9 | 
             
                  let(:while_until) { WhileUntilModifier.new }
         | 
| 10 | 
            +
                  before { LineLength.config = { 'Max' => 79 } }
         | 
| 10 11 |  | 
| 11 12 | 
             
                  it 'registers an offence for multiline if that fits on one line' do
         | 
| 12 13 | 
             
                    # This if statement fits exactly on one line if written as a modifier.
         | 
| 13 | 
            -
                    inspect_source(if_until, | 
| 14 | 
            +
                    inspect_source(if_until,
         | 
| 14 15 | 
             
                                   ['if a_condition_that_is_just_short_enough',
         | 
| 15 16 | 
             
                                    '  some_long_metod_name(followed_by_args)',
         | 
| 16 17 | 
             
                                    'end'])
         | 
| @@ -28,23 +29,24 @@ module Rubocop | |
| 28 29 | 
             
                  end
         | 
| 29 30 |  | 
| 30 31 | 
             
                  it 'registers an offence for multiline unless that fits on one line' do
         | 
| 31 | 
            -
                    inspect_source(if_until,  | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 32 | 
            +
                    inspect_source(if_until, ['unless a',
         | 
| 33 | 
            +
                                              '  b',
         | 
| 34 | 
            +
                                              'end'])
         | 
| 34 35 | 
             
                    expect(if_until.offences.map(&:message)).to eq(
         | 
| 35 36 | 
             
                      ['Favor modifier if/unless usage when you have a single-line body.' +
         | 
| 36 37 | 
             
                       ' Another good alternative is the usage of control flow and/or.'])
         | 
| 37 38 | 
             
                  end
         | 
| 38 39 |  | 
| 39 40 | 
             
                  it 'accepts code with EOL comment since user might want to keep it' do
         | 
| 40 | 
            -
                     | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 41 | 
            +
                    pending
         | 
| 42 | 
            +
                    inspect_source(if_until, ['unless a',
         | 
| 43 | 
            +
                                              '  b # A comment',
         | 
| 44 | 
            +
                                              'end'])
         | 
| 43 45 | 
             
                    expect(if_until.offences.map(&:message)).to be_empty
         | 
| 44 46 | 
             
                  end
         | 
| 45 47 |  | 
| 46 48 | 
             
                  it 'accepts if-else-end' do
         | 
| 47 | 
            -
                    inspect_source(if_until, | 
| 49 | 
            +
                    inspect_source(if_until,
         | 
| 48 50 | 
             
                                   ['if args.last.is_a? Hash then args.pop else ' +
         | 
| 49 51 | 
             
                                    'Hash.new end'])
         | 
| 50 52 | 
             
                    expect(if_until.offences.map(&:message)).to be_empty
         | 
| @@ -83,16 +85,16 @@ module Rubocop | |
| 83 85 | 
             
                  end
         | 
| 84 86 |  | 
| 85 87 | 
             
                  def check_really_short(cop, keyword)
         | 
| 86 | 
            -
                    inspect_source(cop,  | 
| 87 | 
            -
             | 
| 88 | 
            -
             | 
| 88 | 
            +
                    inspect_source(cop, ["#{keyword} a",
         | 
| 89 | 
            +
                                         '  b',
         | 
| 90 | 
            +
                                         'end'])
         | 
| 89 91 | 
             
                    expect(cop.offences.map(&:message)).to eq(
         | 
| 90 92 | 
             
                      ['Favor modifier while/until usage when you have a single-line ' +
         | 
| 91 93 | 
             
                       'body.'])
         | 
| 92 94 | 
             
                  end
         | 
| 93 95 |  | 
| 94 96 | 
             
                  def check_too_long(cop, keyword)
         | 
| 95 | 
            -
                    inspect_source(cop, | 
| 97 | 
            +
                    inspect_source(cop,
         | 
| 96 98 | 
             
                                   ["  #{keyword} a_lengthy_condition_that_goes_on_and_on",
         | 
| 97 99 | 
             
                                    '    some_long_metod_name(followed_by_args)',
         | 
| 98 100 | 
             
                                    '  end'])
         | 
| @@ -100,7 +102,7 @@ module Rubocop | |
| 100 102 | 
             
                  end
         | 
| 101 103 |  | 
| 102 104 | 
             
                  def check_short_multiline(cop, keyword)
         | 
| 103 | 
            -
                    inspect_source(cop, | 
| 105 | 
            +
                    inspect_source(cop,
         | 
| 104 106 | 
             
                                   ["#{keyword} ENV['COVERAGE']",
         | 
| 105 107 | 
             
                                    "  require 'simplecov'",
         | 
| 106 108 | 
             
                                    '  SimpleCov.start',
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'spec_helper'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Rubocop
         | 
| 6 | 
            +
              module Cop
         | 
| 7 | 
            +
                describe FavorPercentR do
         | 
| 8 | 
            +
                  let(:fpr) { FavorPercentR.new }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  it 'registers an offence for // with two slashes in regexp' do
         | 
| 11 | 
            +
                    inspect_source(fpr, ['x =~ /home\/\//',
         | 
| 12 | 
            +
                                         'y =~ /etc\/top\//'])
         | 
| 13 | 
            +
                    expect(fpr.offences.map(&:message))
         | 
| 14 | 
            +
                      .to eq([FavorPercentR::MSG] * 2)
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  it 'accepts // with only one slash in regexp' do
         | 
| 18 | 
            +
                    inspect_source(fpr, ['x =~ /\/home/',
         | 
| 19 | 
            +
                                         'y =~ /\//'])
         | 
| 20 | 
            +
                    expect(fpr.offences.map(&:message)).to be_empty
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  it 'accepts %r delimiters for regexp with two or more slashes' do
         | 
| 24 | 
            +
                    inspect_source(fpr, ['x =~ %r(/home/)'])
         | 
| 25 | 
            +
                    expect(fpr.offences.map(&:message)).to be_empty
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
            end
         | 
| @@ -0,0 +1,51 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'spec_helper'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Rubocop
         | 
| 6 | 
            +
              module Cop
         | 
| 7 | 
            +
                describe FavorSprintf do
         | 
| 8 | 
            +
                  let(:fs) { FavorSprintf.new }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  it 'registers an offence for a string followed by something' do
         | 
| 11 | 
            +
                    inspect_source(fs,
         | 
| 12 | 
            +
                                   ['puts "%d" % 10'])
         | 
| 13 | 
            +
                    expect(fs.offences.size).to eq(1)
         | 
| 14 | 
            +
                    expect(fs.offences.map(&:message))
         | 
| 15 | 
            +
                      .to eq([FavorSprintf::MSG])
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  it 'registers an offence for something followed by an array' do
         | 
| 19 | 
            +
                    inspect_source(fs,
         | 
| 20 | 
            +
                                   ['puts x % [10, 11]'])
         | 
| 21 | 
            +
                    expect(fs.offences.size).to eq(1)
         | 
| 22 | 
            +
                    expect(fs.offences.map(&:message))
         | 
| 23 | 
            +
                      .to eq([FavorSprintf::MSG])
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  it 'does not register an offence for numbers' do
         | 
| 27 | 
            +
                    inspect_source(fs,
         | 
| 28 | 
            +
                                   ['puts 10 % 4'])
         | 
| 29 | 
            +
                    expect(fs.offences).to be_empty
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                  it 'does not register an offence for ambiguous cases' do
         | 
| 33 | 
            +
                    inspect_source(fs,
         | 
| 34 | 
            +
                                   ['puts x % 4'])
         | 
| 35 | 
            +
                    expect(fs.offences).to be_empty
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    inspect_source(fs,
         | 
| 38 | 
            +
                                   ['puts x % Y'])
         | 
| 39 | 
            +
                    expect(fs.offences).to be_empty
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  it 'works if the first operand contains embedded expressions' do
         | 
| 43 | 
            +
                    inspect_source(fs,
         | 
| 44 | 
            +
                                   ['puts "#{x * 5} %d #{@test}" % 10'])
         | 
| 45 | 
            +
                    expect(fs.offences.size).to eq(1)
         | 
| 46 | 
            +
                    expect(fs.offences.map(&:message))
         | 
| 47 | 
            +
                      .to eq([FavorSprintf::MSG])
         | 
| 48 | 
            +
                  end
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
              end
         | 
| 51 | 
            +
            end
         | 
| @@ -8,7 +8,7 @@ module Rubocop | |
| 8 8 | 
             
                  let(:fav_unless) { FavorUnlessOverNegatedIf.new }
         | 
| 9 9 |  | 
| 10 10 | 
             
                  it 'registers an offence for if with exclamation point condition' do
         | 
| 11 | 
            -
                    inspect_source(fav_unless, | 
| 11 | 
            +
                    inspect_source(fav_unless,
         | 
| 12 12 | 
             
                                   ['if !a_condition',
         | 
| 13 13 | 
             
                                    '  some_method',
         | 
| 14 14 | 
             
                                    'end',
         | 
| @@ -20,7 +20,7 @@ module Rubocop | |
| 20 20 | 
             
                  end
         | 
| 21 21 |  | 
| 22 22 | 
             
                  it 'registers an offence for if with "not" condition' do
         | 
| 23 | 
            -
                    inspect_source(fav_unless, | 
| 23 | 
            +
                    inspect_source(fav_unless,
         | 
| 24 24 | 
             
                                   ['if not a_condition',
         | 
| 25 25 | 
             
                                    '  some_method',
         | 
| 26 26 | 
             
                                    'end',
         | 
| @@ -32,7 +32,7 @@ module Rubocop | |
| 32 32 | 
             
                  end
         | 
| 33 33 |  | 
| 34 34 | 
             
                  it 'accepts an if/else with negative condition' do
         | 
| 35 | 
            -
                    inspect_source(fav_unless, | 
| 35 | 
            +
                    inspect_source(fav_unless,
         | 
| 36 36 | 
             
                                   ['if !a_condition',
         | 
| 37 37 | 
             
                                    '  some_method',
         | 
| 38 38 | 
             
                                    'else',
         | 
| @@ -47,7 +47,7 @@ module Rubocop | |
| 47 47 | 
             
                  end
         | 
| 48 48 |  | 
| 49 49 | 
             
                  it 'accepts an if where only part of the contition is negated' do
         | 
| 50 | 
            -
                    inspect_source(fav_unless, | 
| 50 | 
            +
                    inspect_source(fav_unless,
         | 
| 51 51 | 
             
                                   ['if !a_condition && another_condition',
         | 
| 52 52 | 
             
                                    '  some_method',
         | 
| 53 53 | 
             
                                    'end',
         | 
| @@ -8,7 +8,7 @@ module Rubocop | |
| 8 8 | 
             
                  let(:fav_until) { FavorUntilOverNegatedWhile.new }
         | 
| 9 9 |  | 
| 10 10 | 
             
                  it 'registers an offence for while with exclamation point condition' do
         | 
| 11 | 
            -
                    inspect_source(fav_until, | 
| 11 | 
            +
                    inspect_source(fav_until,
         | 
| 12 12 | 
             
                                   ['while !a_condition',
         | 
| 13 13 | 
             
                                    '  some_method',
         | 
| 14 14 | 
             
                                    'end',
         | 
| @@ -19,7 +19,7 @@ module Rubocop | |
| 19 19 | 
             
                  end
         | 
| 20 20 |  | 
| 21 21 | 
             
                  it 'registers an offence for while with "not" condition' do
         | 
| 22 | 
            -
                    inspect_source(fav_until, | 
| 22 | 
            +
                    inspect_source(fav_until,
         | 
| 23 23 | 
             
                                   ['while (not a_condition)',
         | 
| 24 24 | 
             
                                    '  some_method',
         | 
| 25 25 | 
             
                                    'end',
         | 
| @@ -30,7 +30,7 @@ module Rubocop | |
| 30 30 | 
             
                  end
         | 
| 31 31 |  | 
| 32 32 | 
             
                  it 'accepts an while where only part of the contition is negated' do
         | 
| 33 | 
            -
                    inspect_source(fav_until, | 
| 33 | 
            +
                    inspect_source(fav_until,
         | 
| 34 34 | 
             
                                   ['while !a_condition && another_condition',
         | 
| 35 35 | 
             
                                    '  some_method',
         | 
| 36 36 | 
             
                                    'end',
         | 
| @@ -0,0 +1,34 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'spec_helper'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Rubocop
         | 
| 6 | 
            +
              module Cop
         | 
| 7 | 
            +
                describe HandleExceptions do
         | 
| 8 | 
            +
                  let(:he) { HandleExceptions.new }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  it 'registers an offence for empty rescue block' do
         | 
| 11 | 
            +
                    inspect_source(he,
         | 
| 12 | 
            +
                                   ['begin',
         | 
| 13 | 
            +
                                    '  something',
         | 
| 14 | 
            +
                                    'rescue',
         | 
| 15 | 
            +
                                    '  #do nothing',
         | 
| 16 | 
            +
                                    'end'])
         | 
| 17 | 
            +
                    expect(he.offences.size).to eq(1)
         | 
| 18 | 
            +
                    expect(he.offences.map(&:message))
         | 
| 19 | 
            +
                      .to eq([HandleExceptions::MSG])
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  it 'does not register an offence for rescue with body' do
         | 
| 23 | 
            +
                    inspect_source(he,
         | 
| 24 | 
            +
                                   ['begin',
         | 
| 25 | 
            +
                                    '  something',
         | 
| 26 | 
            +
                                    '  return',
         | 
| 27 | 
            +
                                    'rescue',
         | 
| 28 | 
            +
                                    '  file.close',
         | 
| 29 | 
            +
                                    'end'])
         | 
| 30 | 
            +
                    expect(he.offences).to be_empty
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
            end
         | 
| @@ -8,35 +8,40 @@ module Rubocop | |
| 8 8 | 
             
                  let(:hash_syntax) { HashSyntax.new }
         | 
| 9 9 |  | 
| 10 10 | 
             
                  it 'registers an offence for hash rocket syntax when new is possible' do
         | 
| 11 | 
            -
                    inspect_source(hash_syntax,  | 
| 11 | 
            +
                    inspect_source(hash_syntax, ['x = { :a => 0 }'])
         | 
| 12 12 | 
             
                    expect(hash_syntax.offences.map(&:message)).to eq(
         | 
| 13 13 | 
             
                      ['Ruby 1.8 hash syntax detected'])
         | 
| 14 14 | 
             
                  end
         | 
| 15 15 |  | 
| 16 16 | 
             
                  it 'registers an offence for mixed syntax when new is possible' do
         | 
| 17 | 
            -
                    inspect_source(hash_syntax,  | 
| 17 | 
            +
                    inspect_source(hash_syntax, ['x = { :a => 0, b: 1 }'])
         | 
| 18 18 | 
             
                    expect(hash_syntax.offences.map(&:message)).to eq(
         | 
| 19 19 | 
             
                      ['Ruby 1.8 hash syntax detected'])
         | 
| 20 20 | 
             
                  end
         | 
| 21 21 |  | 
| 22 22 | 
             
                  it 'registers an offence for hash rockets in method calls' do
         | 
| 23 | 
            -
                    inspect_source(hash_syntax,  | 
| 23 | 
            +
                    inspect_source(hash_syntax, ['func(3, :a => 0)'])
         | 
| 24 24 | 
             
                    expect(hash_syntax.offences.map(&:message)).to eq(
         | 
| 25 25 | 
             
                      ['Ruby 1.8 hash syntax detected'])
         | 
| 26 26 | 
             
                  end
         | 
| 27 27 |  | 
| 28 28 | 
             
                  it 'accepts hash rockets when keys have different types' do
         | 
| 29 | 
            -
                    inspect_source(hash_syntax,  | 
| 29 | 
            +
                    inspect_source(hash_syntax, ['x = { :a => 0, "b" => 1 }'])
         | 
| 30 | 
            +
                    expect(hash_syntax.offences.map(&:message)).to be_empty
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  it 'accepts hash rockets when keys special symbols in them' do
         | 
| 34 | 
            +
                    inspect_source(hash_syntax, ['x = { :"t o" => 0, :"\xab" => 1 }'])
         | 
| 30 35 | 
             
                    expect(hash_syntax.offences.map(&:message)).to be_empty
         | 
| 31 36 | 
             
                  end
         | 
| 32 37 |  | 
| 33 38 | 
             
                  it 'accepts new syntax in a hash literal' do
         | 
| 34 | 
            -
                    inspect_source(hash_syntax,  | 
| 39 | 
            +
                    inspect_source(hash_syntax, ['x = { a: 0, b: 1 }'])
         | 
| 35 40 | 
             
                    expect(hash_syntax.offences.map(&:message)).to be_empty
         | 
| 36 41 | 
             
                  end
         | 
| 37 42 |  | 
| 38 43 | 
             
                  it 'accepts new syntax in method calls' do
         | 
| 39 | 
            -
                    inspect_source(hash_syntax,  | 
| 44 | 
            +
                    inspect_source(hash_syntax, ['func(3, a: 0)'])
         | 
| 40 45 | 
             
                    expect(hash_syntax.offences.map(&:message)).to be_empty
         | 
| 41 46 | 
             
                  end
         | 
| 42 47 | 
             
                end
         | 
| @@ -8,10 +8,16 @@ module Rubocop | |
| 8 8 | 
             
                  let(:iws) { IfWithSemicolon.new }
         | 
| 9 9 |  | 
| 10 10 | 
             
                  it 'registers an offence for one line if/;/end' do
         | 
| 11 | 
            -
                    inspect_source(iws,  | 
| 11 | 
            +
                    inspect_source(iws, ['if cond; run else dont end'])
         | 
| 12 12 | 
             
                    expect(iws.offences.map(&:message)).to eq(
         | 
| 13 13 | 
             
                      ['Never use if x; Use the ternary operator instead.'])
         | 
| 14 14 | 
             
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  it 'can handle modifier conditionals' do
         | 
| 17 | 
            +
                    inspect_source(iws, ['class Hash',
         | 
| 18 | 
            +
                                         'end if RUBY_VERSION < "1.8.7"'])
         | 
| 19 | 
            +
                    expect(iws.offences.map(&:message)).to be_empty
         | 
| 20 | 
            +
                  end
         | 
| 15 21 | 
             
                end
         | 
| 16 22 | 
             
              end
         | 
| 17 23 | 
             
            end
         | 
| @@ -0,0 +1,54 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'spec_helper'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Rubocop
         | 
| 6 | 
            +
              module Cop
         | 
| 7 | 
            +
                describe LeadingCommentSpace do
         | 
| 8 | 
            +
                  let(:lcs) { LeadingCommentSpace.new }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  it 'registers an offence for comment without leading space' do
         | 
| 11 | 
            +
                    inspect_source(lcs,
         | 
| 12 | 
            +
                                   ['#missing space'])
         | 
| 13 | 
            +
                    expect(lcs.offences.size).to eq(1)
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  it 'does not register an offence for # followed by no text' do
         | 
| 17 | 
            +
                    inspect_source(lcs,
         | 
| 18 | 
            +
                                   ['#'])
         | 
| 19 | 
            +
                    expect(lcs.offences).to be_empty
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  it 'does not register an offence for more than one space' do
         | 
| 23 | 
            +
                    inspect_source(lcs,
         | 
| 24 | 
            +
                                   ['#   heavily indented'])
         | 
| 25 | 
            +
                    expect(lcs.offences).to be_empty
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  it 'does not register an offence for more than one #' do
         | 
| 29 | 
            +
                    inspect_source(lcs,
         | 
| 30 | 
            +
                                   ['###### heavily indented'])
         | 
| 31 | 
            +
                    expect(lcs.offences).to be_empty
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  it 'does not register an offence for only #s' do
         | 
| 35 | 
            +
                    inspect_source(lcs,
         | 
| 36 | 
            +
                                   ['######'])
         | 
| 37 | 
            +
                    expect(lcs.offences).to be_empty
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  it 'does not register an offence for #! on first line' do
         | 
| 41 | 
            +
                    inspect_source(lcs,
         | 
| 42 | 
            +
                                   ['#!/usr/bin/ruby',
         | 
| 43 | 
            +
                                    'test'])
         | 
| 44 | 
            +
                    expect(lcs.offences).to be_empty
         | 
| 45 | 
            +
                  end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  it 'registers an offence for #! after the first line' do
         | 
| 48 | 
            +
                    inspect_source(lcs,
         | 
| 49 | 
            +
                                   ['test', '#!/usr/bin/ruby'])
         | 
| 50 | 
            +
                    expect(lcs.offences.size).to eq(1)
         | 
| 51 | 
            +
                  end
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
            end
         | 
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'spec_helper'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Rubocop
         | 
| 6 | 
            +
              module Cop
         | 
| 7 | 
            +
                describe LineContinuation do
         | 
| 8 | 
            +
                  let(:lc) { LineContinuation.new }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  it 'registers an offence for line continuation char' do
         | 
| 11 | 
            +
                    inspect_source(lc,
         | 
| 12 | 
            +
                                   ['test = 5 \\', '+ 5'])
         | 
| 13 | 
            +
                    expect(lc.offences.size).to eq(1)
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  it 'does not register an offence for cont char in a string' do
         | 
| 17 | 
            +
                    inspect_source(lc,
         | 
| 18 | 
            +
                                   ['result = "test string\\\n"',
         | 
| 19 | 
            +
                                    'more'])
         | 
| 20 | 
            +
                    expect(lc.offences).to be_empty
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
| @@ -6,15 +6,16 @@ module Rubocop | |
| 6 6 | 
             
              module Cop
         | 
| 7 7 | 
             
                describe LineLength do
         | 
| 8 8 | 
             
                  let(:ll) { LineLength.new }
         | 
| 9 | 
            +
                  before { LineLength.config = { 'Max' => 79 } }
         | 
| 9 10 |  | 
| 10 11 | 
             
                  it "registers an offence for a line that's 80 characters wide" do
         | 
| 11 | 
            -
                    ll.inspect( | 
| 12 | 
            +
                    ll.inspect(['#' * 80], nil, nil, nil)
         | 
| 12 13 | 
             
                    expect(ll.offences.size).to eq(1)
         | 
| 13 14 | 
             
                    expect(ll.offences.first.message).to eq('Line is too long. [80/79]')
         | 
| 14 15 | 
             
                  end
         | 
| 15 16 |  | 
| 16 17 | 
             
                  it "accepts a line that's 79 characters wide" do
         | 
| 17 | 
            -
                    ll.inspect( | 
| 18 | 
            +
                    ll.inspect(['#' * 79], nil, nil, nil)
         | 
| 18 19 | 
             
                    expect(ll.offences).to be_empty
         | 
| 19 20 | 
             
                  end
         | 
| 20 21 | 
             
                end
         | 
| @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'spec_helper'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Rubocop
         | 
| 6 | 
            +
              module Cop
         | 
| 7 | 
            +
                describe Loop do
         | 
| 8 | 
            +
                  let(:loop) { Loop.new }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  it 'registers an offence for begin/end/while' do
         | 
| 11 | 
            +
                    inspect_source(loop, ['begin something; top; end while test'])
         | 
| 12 | 
            +
                    expect(loop.offences.size).to eq(1)
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  it 'registers an offence for begin/end/until' do
         | 
| 16 | 
            +
                    inspect_source(loop, ['begin something; top; end until test'])
         | 
| 17 | 
            +
                    expect(loop.offences.size).to eq(1)
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  it 'accepts normal while' do
         | 
| 21 | 
            +
                    inspect_source(loop, ['while test; one; two; end'])
         | 
| 22 | 
            +
                    expect(loop.offences).to be_empty
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  it 'accepts normal until' do
         | 
| 26 | 
            +
                    inspect_source(loop, ['until test; one; two; end'])
         | 
| 27 | 
            +
                    expect(loop.offences).to be_empty
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
            end
         | 
| @@ -7,20 +7,55 @@ module Rubocop | |
| 7 7 | 
             
                describe MethodAndVariableSnakeCase do
         | 
| 8 8 | 
             
                  let(:snake_case) { MethodAndVariableSnakeCase.new }
         | 
| 9 9 |  | 
| 10 | 
            -
                  it 'registers an offence for camel case in  | 
| 11 | 
            -
                    inspect_source(snake_case, | 
| 10 | 
            +
                  it 'registers an offence for camel case in instance method name' do
         | 
| 11 | 
            +
                    inspect_source(snake_case,
         | 
| 12 12 | 
             
                                   ['def myMethod',
         | 
| 13 | 
            -
                                    '   | 
| 14 | 
            -
                                    '  self.mySetter = 2',
         | 
| 15 | 
            -
                                    '  @myAttribute = 3',
         | 
| 13 | 
            +
                                    '  # ...',
         | 
| 16 14 | 
             
                                    'end',
         | 
| 17 15 | 
             
                                   ])
         | 
| 18 16 | 
             
                    expect(snake_case.offences.map(&:message)).to eq(
         | 
| 19 | 
            -
                      ['Use snake_case for methods and variables.'] | 
| 17 | 
            +
                      ['Use snake_case for methods and variables.'])
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  it 'registers an offence for camel case in singleton method name' do
         | 
| 21 | 
            +
                    inspect_source(snake_case,
         | 
| 22 | 
            +
                                   ['def self.myMethod',
         | 
| 23 | 
            +
                                    '  # ...',
         | 
| 24 | 
            +
                                    'end',
         | 
| 25 | 
            +
                                   ])
         | 
| 26 | 
            +
                    expect(snake_case.offences.map(&:message)).to eq(
         | 
| 27 | 
            +
                      ['Use snake_case for methods and variables.'])
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  it 'registers an offence for camel case in local variable name' do
         | 
| 31 | 
            +
                    inspect_source(snake_case, ['myLocal = 1'])
         | 
| 32 | 
            +
                    expect(snake_case.offences.map(&:message)).to eq(
         | 
| 33 | 
            +
                      ['Use snake_case for methods and variables.'])
         | 
| 34 | 
            +
                  end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                  it 'registers an offence for camel case in instance variable name' do
         | 
| 37 | 
            +
                    inspect_source(snake_case, ['@myAttribute = 3'])
         | 
| 38 | 
            +
                    expect(snake_case.offences.map(&:message)).to eq(
         | 
| 39 | 
            +
                      ['Use snake_case for methods and variables.'])
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  it 'registers an offence for camel case in setter name' do
         | 
| 43 | 
            +
                    inspect_source(snake_case, ['self.mySetter = 2'])
         | 
| 44 | 
            +
                    expect(snake_case.offences.map(&:message)).to eq(
         | 
| 45 | 
            +
                      ['Use snake_case for methods and variables.'])
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                  it 'registers an offence for capitalized camel case' do
         | 
| 49 | 
            +
                    inspect_source(snake_case,
         | 
| 50 | 
            +
                                   ['def MyMethod',
         | 
| 51 | 
            +
                                    'end',
         | 
| 52 | 
            +
                                   ])
         | 
| 53 | 
            +
                    expect(snake_case.offences.map(&:message)).to eq(
         | 
| 54 | 
            +
                      ['Use snake_case for methods and variables.'])
         | 
| 20 55 | 
             
                  end
         | 
| 21 56 |  | 
| 22 57 | 
             
                  it 'accepts snake case in names' do
         | 
| 23 | 
            -
                    inspect_source(snake_case, | 
| 58 | 
            +
                    inspect_source(snake_case,
         | 
| 24 59 | 
             
                                   ['def my_method',
         | 
| 25 60 | 
             
                                    '  my_local_html = 1',
         | 
| 26 61 | 
             
                                    '  self.my_setter = 2',
         | 
| @@ -31,7 +66,7 @@ module Rubocop | |
| 31 66 | 
             
                  end
         | 
| 32 67 |  | 
| 33 68 | 
             
                  it 'registers an offence for mixed snake case and camel case' do
         | 
| 34 | 
            -
                    inspect_source(snake_case, | 
| 69 | 
            +
                    inspect_source(snake_case,
         | 
| 35 70 | 
             
                                   ['def visit_Arel_Nodes_SelectStatement',
         | 
| 36 71 | 
             
                                    'end'])
         | 
| 37 72 | 
             
                    expect(snake_case.offences.map(&:message)).to eq(
         | 
| @@ -39,7 +74,18 @@ module Rubocop | |
| 39 74 | 
             
                  end
         | 
| 40 75 |  | 
| 41 76 | 
             
                  it 'accepts screaming snake case globals' do
         | 
| 42 | 
            -
                    inspect_source(snake_case,  | 
| 77 | 
            +
                    inspect_source(snake_case, ['$MY_GLOBAL = 0'])
         | 
| 78 | 
            +
                    expect(snake_case.offences.map(&:message)).to be_empty
         | 
| 79 | 
            +
                  end
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                  it 'accepts screaming snake case constants' do
         | 
| 82 | 
            +
                    inspect_source(snake_case, ['MY_CONSTANT = 0'])
         | 
| 83 | 
            +
                    expect(snake_case.offences.map(&:message)).to be_empty
         | 
| 84 | 
            +
                  end
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                  it 'accepts assigning to camel case constant' do
         | 
| 87 | 
            +
                    inspect_source(snake_case,
         | 
| 88 | 
            +
                                   ['Paren = Struct.new :left, :right, :kind'])
         | 
| 43 89 | 
             
                    expect(snake_case.offences.map(&:message)).to be_empty
         | 
| 44 90 | 
             
                  end
         | 
| 45 91 | 
             
                end
         |