rubocop 0.6.0 → 0.6.1
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/.rubocop.yml +6 -2
 - data/CHANGELOG.md +22 -0
 - data/Gemfile +4 -0
 - data/README.md +14 -0
 - data/lib/rubocop.rb +3 -6
 - data/lib/rubocop/cli.rb +71 -26
 - data/lib/rubocop/cop/array_literal.rb +2 -2
 - data/lib/rubocop/cop/{ascii_identifiers_and_comments.rb → ascii_comments.rb} +3 -3
 - data/lib/rubocop/cop/ascii_identifiers.rb +18 -0
 - data/lib/rubocop/cop/cop.rb +5 -0
 - data/lib/rubocop/cop/hash_literal.rb +2 -2
 - data/lib/rubocop/cop/op_method.rb +6 -1
 - data/lib/rubocop/cop/space_after_comma_etc.rb +4 -5
 - data/lib/rubocop/cop/symbol_snake_case.rb +20 -0
 - data/lib/rubocop/report/plain_text.rb +1 -1
 - data/lib/rubocop/version.rb +1 -1
 - data/rubocop.gemspec +1 -1
 - data/spec/rubocop/cli_spec.rb +123 -17
 - data/spec/rubocop/cops/array_literal_spec.rb +10 -0
 - data/spec/rubocop/cops/ascii_comments_spec.rb +27 -0
 - data/spec/rubocop/cops/ascii_identifiers_spec.rb +27 -0
 - data/spec/rubocop/cops/hash_literal_spec.rb +10 -0
 - data/spec/rubocop/cops/op_method_spec.rb +11 -0
 - data/spec/rubocop/cops/space_after_semicolon_spec.rb +5 -0
 - data/spec/rubocop/cops/symbol_snake_case_spec.rb +13 -0
 - data/spec/spec_helper.rb +6 -0
 - metadata +17 -31
 - data/spec/rubocop/cops/ascii_identifiers_and_comments_spec.rb +0 -38
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 59160d74a2b79a8d6402bca657745ea9aadaf27c
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 074abc5e163cfff8ad8c3f11fc61bbf309be6515
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 84391e7848783db7aeaf55918c3ef7c93819f7329a1d22cbaf1cc072d62b02494d1e9a87b71d0fa79f620cf3368be3f96b314d69f5f6633962714be57126c58a
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: aedd8920e0a1ab20d364c149283f9954c4f15b33054de3e53edfd3364817a1af23c852167256fd1e3c95f38da49398c63a780b270581df077cff12026f3b892e
         
     | 
    
        data/.rubocop.yml
    CHANGED
    
    | 
         @@ -232,8 +232,12 @@ EnsureReturn: 
     | 
|
| 
       232 
232 
     | 
    
         
             
            HandleExceptions:
         
     | 
| 
       233 
233 
     | 
    
         
             
              Enabled: true
         
     | 
| 
       234 
234 
     | 
    
         | 
| 
       235 
     | 
    
         
            -
            # Use only ascii symbols in identifiers 
     | 
| 
       236 
     | 
    
         
            -
             
     | 
| 
      
 235 
     | 
    
         
            +
            # Use only ascii symbols in identifiers.
         
     | 
| 
      
 236 
     | 
    
         
            +
            AsciiIdentifiers:
         
     | 
| 
      
 237 
     | 
    
         
            +
              Enabled: true
         
     | 
| 
      
 238 
     | 
    
         
            +
             
     | 
| 
      
 239 
     | 
    
         
            +
            # Use only ascii symbols in comments.
         
     | 
| 
      
 240 
     | 
    
         
            +
            AsciiComments:
         
     | 
| 
       237 
241 
     | 
    
         
             
              Enabled: true
         
     | 
| 
       238 
242 
     | 
    
         | 
| 
       239 
243 
     | 
    
         
             
            # Avoid rescuing the Exception class.
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -6,6 +6,28 @@ 
     | 
|
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            ### Bugs fixed
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
      
 9 
     | 
    
         
            +
            ## 0.6.1 (04/28/2013)
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            ### New features
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            * Split AsciiIdentifiersAndComments cop in two separate cops
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            ### Bugs fixed
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            * [#90](https://github.com/bbatsov/rubocop/issues/90) Two cops crash when scanning code using super
         
     | 
| 
      
 18 
     | 
    
         
            +
            * [#93](https://github.com/bbatsov/rubocop/issues/93) Issue with whitespace?': undefined method
         
     | 
| 
      
 19 
     | 
    
         
            +
            * [#97](https://github.com/bbatsov/rubocop/issues/97) Build fails
         
     | 
| 
      
 20 
     | 
    
         
            +
            * [#100](https://github.com/bbatsov/rubocop/issues/100) OpMethod cop doesn't work if method arg is not in braces
         
     | 
| 
      
 21 
     | 
    
         
            +
            * SymbolSnakeCase now tracks Ruby 1.9 hash labels as well as regular symbols
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            ### Misc
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            * [#88](https://github.com/bbatsov/rubocop/issues/88) Abort gracefully when interrupted with Ctrl-C
         
     | 
| 
      
 26 
     | 
    
         
            +
            * No longer crashes on bugs within cops. Now problematic checks are skipped and a message is displayed.
         
     | 
| 
      
 27 
     | 
    
         
            +
            * Replaced Term::ANSIColor with Rainbow.
         
     | 
| 
      
 28 
     | 
    
         
            +
            * Add an option to disable colors in the output.
         
     | 
| 
      
 29 
     | 
    
         
            +
            * Cop names are now displayed alongside messages when `-d/--debug` is passed.
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
       9 
31 
     | 
    
         
             
            ## 0.6.0 (04/23/2013)
         
     | 
| 
       10 
32 
     | 
    
         | 
| 
       11 
33 
     | 
    
         
             
            ### New features
         
     | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,5 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            [](http://badge.fury.io/rb/rubocop)
         
     | 
| 
       2 
2 
     | 
    
         
             
            [](https://travis-ci.org/bbatsov/rubocop)
         
     | 
| 
      
 3 
     | 
    
         
            +
            [](https://coveralls.io/r/bbatsov/rubocop)
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
       4 
5 
     | 
    
         
             
            # RuboCop
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
         @@ -114,11 +115,24 @@ and quickly jump between problems in your code. 
     | 
|
| 
       114 
115 
     | 
    
         
             
            [flycheck](https://github.com/lunaryorn/flycheck) > 0.9 also supports
         
     | 
| 
       115 
116 
     | 
    
         
             
            RuboCop and uses it by default when available.
         
     | 
| 
       116 
117 
     | 
    
         | 
| 
      
 118 
     | 
    
         
            +
            ### Vim
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
            The [vim-rubocop](https://github.com/ngmy/vim-rubocop) plugin runs
         
     | 
| 
      
 121 
     | 
    
         
            +
            RuboCop and displays the results in Vim.
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
       117 
123 
     | 
    
         
             
            ### Other Editors
         
     | 
| 
       118 
124 
     | 
    
         | 
| 
       119 
125 
     | 
    
         
             
            Here's one great opportunity to contribute to RuboCop - implement
         
     | 
| 
       120 
126 
     | 
    
         
             
            RuboCop integration for your favorite editor.
         
     | 
| 
       121 
127 
     | 
    
         | 
| 
      
 128 
     | 
    
         
            +
            ## Guard integration
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
            If you're fond of [Guard](https://github.com/guard/guard) you might
         
     | 
| 
      
 131 
     | 
    
         
            +
            like
         
     | 
| 
      
 132 
     | 
    
         
            +
            [guard-rubocop](https://github.com/yujinakayama/guard-rubocop). It
         
     | 
| 
      
 133 
     | 
    
         
            +
            allows you to automatically check Ruby code style with RuboCop when
         
     | 
| 
      
 134 
     | 
    
         
            +
            files are modified.
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
       122 
136 
     | 
    
         
             
            ## Contributors
         
     | 
| 
       123 
137 
     | 
    
         | 
| 
       124 
138 
     | 
    
         
             
            Here's a [list](https://github.com/bbatsov/rubocop/contributors) of
         
     | 
    
        data/lib/rubocop.rb
    CHANGED
    
    | 
         @@ -1,11 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # encoding: utf-8
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            require 'ripper'
         
     | 
| 
       4 
     | 
    
         
            -
            require ' 
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            class String
         
     | 
| 
       7 
     | 
    
         
            -
              include Term::ANSIColor
         
     | 
| 
       8 
     | 
    
         
            -
            end
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'rainbow'
         
     | 
| 
       9 
5 
     | 
    
         | 
| 
       10 
6 
     | 
    
         
             
            require 'rubocop/cop/offence'
         
     | 
| 
       11 
7 
     | 
    
         
             
            require 'rubocop/cop/cop'
         
     | 
| 
         @@ -53,7 +49,8 @@ require 'rubocop/cop/brace_after_percent' 
     | 
|
| 
       53 
49 
     | 
    
         
             
            require 'rubocop/cop/ensure_return'
         
     | 
| 
       54 
50 
     | 
    
         
             
            require 'rubocop/cop/handle_exceptions'
         
     | 
| 
       55 
51 
     | 
    
         
             
            require 'rubocop/cop/rescue_exception'
         
     | 
| 
       56 
     | 
    
         
            -
            require 'rubocop/cop/ 
     | 
| 
      
 52 
     | 
    
         
            +
            require 'rubocop/cop/ascii_identifiers'
         
     | 
| 
      
 53 
     | 
    
         
            +
            require 'rubocop/cop/ascii_comments'
         
     | 
| 
       57 
54 
     | 
    
         
             
            require 'rubocop/cop/hash_literal'
         
     | 
| 
       58 
55 
     | 
    
         
             
            require 'rubocop/cop/array_literal'
         
     | 
| 
       59 
56 
     | 
    
         
             
            require 'rubocop/cop/method_length'
         
     | 
    
        data/lib/rubocop/cli.rb
    CHANGED
    
    | 
         @@ -8,40 +8,32 @@ module Rubocop 
     | 
|
| 
       8 
8 
     | 
    
         
             
              # The CLI is a class responsible of handling all the command line interface
         
     | 
| 
       9 
9 
     | 
    
         
             
              # logic.
         
     | 
| 
       10 
10 
     | 
    
         
             
              class CLI
         
     | 
| 
      
 11 
     | 
    
         
            +
                # If set true while running,
         
     | 
| 
      
 12 
     | 
    
         
            +
                # RuboCop will abort processing and exit gracefully.
         
     | 
| 
      
 13 
     | 
    
         
            +
                attr_accessor :wants_to_quit
         
     | 
| 
      
 14 
     | 
    
         
            +
                alias_method :wants_to_quit?, :wants_to_quit
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
       11 
16 
     | 
    
         
             
                # Entry point for the application logic. Here we
         
     | 
| 
       12 
17 
     | 
    
         
             
                # do the command line arguments processing and inspect
         
     | 
| 
       13 
18 
     | 
    
         
             
                # the target files
         
     | 
| 
       14 
19 
     | 
    
         
             
                # @return [Fixnum] UNIX exit code
         
     | 
| 
       15 
20 
     | 
    
         
             
                def run(args = ARGV)
         
     | 
| 
      
 21 
     | 
    
         
            +
                  trap_interrupt
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
       16 
23 
     | 
    
         
             
                  $options = { mode: :default }
         
     | 
| 
       17 
24 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
                   
     | 
| 
       19 
     | 
    
         
            -
                    opts.banner = 'Usage: rubocop [options] [file1, file2, ...]'
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                    opts.on('-d', '--[no-]debug', 'Display debug info') do |d|
         
     | 
| 
       22 
     | 
    
         
            -
                      $options[:debug] = d
         
     | 
| 
       23 
     | 
    
         
            -
                    end
         
     | 
| 
       24 
     | 
    
         
            -
                    opts.on('-e', '--emacs', 'Emacs style output') do
         
     | 
| 
       25 
     | 
    
         
            -
                      $options[:mode] = :emacs_style
         
     | 
| 
       26 
     | 
    
         
            -
                    end
         
     | 
| 
       27 
     | 
    
         
            -
                    opts.on('-c FILE', '--config FILE', 'Configuration file') do |f|
         
     | 
| 
       28 
     | 
    
         
            -
                      $options[:config] = YAML.load_file(f)
         
     | 
| 
       29 
     | 
    
         
            -
                    end
         
     | 
| 
       30 
     | 
    
         
            -
                    opts.on('-s', '--silent', 'Silence summary') do |s|
         
     | 
| 
       31 
     | 
    
         
            -
                      $options[:silent] = s
         
     | 
| 
       32 
     | 
    
         
            -
                    end
         
     | 
| 
       33 
     | 
    
         
            -
                    opts.on('-v', '--version', 'Display version') do
         
     | 
| 
       34 
     | 
    
         
            -
                      puts Rubocop::Version::STRING
         
     | 
| 
       35 
     | 
    
         
            -
                      exit(0)
         
     | 
| 
       36 
     | 
    
         
            -
                    end
         
     | 
| 
       37 
     | 
    
         
            -
                  end.parse!(args)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  parse_options(args)
         
     | 
| 
       38 
26 
     | 
    
         | 
| 
       39 
27 
     | 
    
         
             
                  cops = Cop::Cop.all
         
     | 
| 
       40 
28 
     | 
    
         
             
                  show_cops_on_duty(cops) if $options[:debug]
         
     | 
| 
      
 29 
     | 
    
         
            +
                  processed_file_count = 0
         
     | 
| 
       41 
30 
     | 
    
         
             
                  total_offences = 0
         
     | 
| 
      
 31 
     | 
    
         
            +
                  errors_count = 0
         
     | 
| 
       42 
32 
     | 
    
         
             
                  @configs = {}
         
     | 
| 
       43 
33 
     | 
    
         | 
| 
       44 
34 
     | 
    
         
             
                  target_files(args).each do |file|
         
     | 
| 
      
 35 
     | 
    
         
            +
                    break if wants_to_quit?
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
       45 
37 
     | 
    
         
             
                    puts "Scanning #{file}" if $options[:debug]
         
     | 
| 
       46 
38 
     | 
    
         | 
| 
       47 
39 
     | 
    
         
             
                    report = Report.create(file, $options[:mode])
         
     | 
| 
         @@ -71,24 +63,68 @@ module Rubocop 
     | 
|
| 
       71 
63 
     | 
    
         
             
                          cop = cop_klass.new
         
     | 
| 
       72 
64 
     | 
    
         
             
                          cop.correlations = correlations
         
     | 
| 
       73 
65 
     | 
    
         
             
                          cop.disabled_lines = disabled_lines[cop_name]
         
     | 
| 
       74 
     | 
    
         
            -
                           
     | 
| 
      
 66 
     | 
    
         
            +
                          begin
         
     | 
| 
      
 67 
     | 
    
         
            +
                            cop.inspect(file, source, tokens, sexp)
         
     | 
| 
      
 68 
     | 
    
         
            +
                          rescue => e
         
     | 
| 
      
 69 
     | 
    
         
            +
                            errors_count += 1
         
     | 
| 
      
 70 
     | 
    
         
            +
                            warn "An error occurred while #{cop.name} cop" +
         
     | 
| 
      
 71 
     | 
    
         
            +
                              " was inspecting #{file}."
         
     | 
| 
      
 72 
     | 
    
         
            +
                            warn 'To see the complete backtrace run rubocop -d.'
         
     | 
| 
      
 73 
     | 
    
         
            +
                            puts e.backtrace if $options[:debug]
         
     | 
| 
      
 74 
     | 
    
         
            +
                          end
         
     | 
| 
       75 
75 
     | 
    
         
             
                          total_offences += cop.offences.count
         
     | 
| 
       76 
76 
     | 
    
         
             
                          report << cop if cop.has_report?
         
     | 
| 
       77 
77 
     | 
    
         
             
                        end
         
     | 
| 
       78 
78 
     | 
    
         
             
                      end
         
     | 
| 
       79 
79 
     | 
    
         
             
                    end
         
     | 
| 
       80 
80 
     | 
    
         | 
| 
      
 81 
     | 
    
         
            +
                    processed_file_count += 1
         
     | 
| 
       81 
82 
     | 
    
         
             
                    report.display unless report.empty?
         
     | 
| 
       82 
83 
     | 
    
         
             
                  end
         
     | 
| 
       83 
84 
     | 
    
         | 
| 
       84 
85 
     | 
    
         
             
                  unless $options[:silent]
         
     | 
| 
       85 
     | 
    
         
            -
                    display_summary( 
     | 
| 
      
 86 
     | 
    
         
            +
                    display_summary(processed_file_count, total_offences, errors_count)
         
     | 
| 
       86 
87 
     | 
    
         
             
                  end
         
     | 
| 
       87 
88 
     | 
    
         | 
| 
       88 
     | 
    
         
            -
                   
     | 
| 
      
 89 
     | 
    
         
            +
                  (total_offences == 0) && !wants_to_quit ? 0 : 1
         
     | 
| 
      
 90 
     | 
    
         
            +
                end
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                def parse_options(args)
         
     | 
| 
      
 93 
     | 
    
         
            +
                  OptionParser.new do |opts|
         
     | 
| 
      
 94 
     | 
    
         
            +
                    opts.banner = 'Usage: rubocop [options] [file1, file2, ...]'
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                    opts.on('-d', '--debug', 'Display debug info') do |d|
         
     | 
| 
      
 97 
     | 
    
         
            +
                      $options[:debug] = d
         
     | 
| 
      
 98 
     | 
    
         
            +
                    end
         
     | 
| 
      
 99 
     | 
    
         
            +
                    opts.on('-e', '--emacs', 'Emacs style output') do
         
     | 
| 
      
 100 
     | 
    
         
            +
                      $options[:mode] = :emacs_style
         
     | 
| 
      
 101 
     | 
    
         
            +
                    end
         
     | 
| 
      
 102 
     | 
    
         
            +
                    opts.on('-c FILE', '--config FILE', 'Configuration file') do |f|
         
     | 
| 
      
 103 
     | 
    
         
            +
                      $options[:config] = YAML.load_file(f)
         
     | 
| 
      
 104 
     | 
    
         
            +
                    end
         
     | 
| 
      
 105 
     | 
    
         
            +
                    opts.on('-s', '--silent', 'Silence summary') do |s|
         
     | 
| 
      
 106 
     | 
    
         
            +
                      $options[:silent] = s
         
     | 
| 
      
 107 
     | 
    
         
            +
                    end
         
     | 
| 
      
 108 
     | 
    
         
            +
                    opts.on('-n', '--no-color', 'Disable color output') do |s|
         
     | 
| 
      
 109 
     | 
    
         
            +
                      Sickill::Rainbow.enabled = false
         
     | 
| 
      
 110 
     | 
    
         
            +
                    end
         
     | 
| 
      
 111 
     | 
    
         
            +
                    opts.on('-v', '--version', 'Display version') do
         
     | 
| 
      
 112 
     | 
    
         
            +
                      puts Rubocop::Version::STRING
         
     | 
| 
      
 113 
     | 
    
         
            +
                      exit(0)
         
     | 
| 
      
 114 
     | 
    
         
            +
                    end
         
     | 
| 
      
 115 
     | 
    
         
            +
                  end.parse!(args)
         
     | 
| 
       89 
116 
     | 
    
         
             
                end
         
     | 
| 
       90 
117 
     | 
    
         | 
| 
       91 
     | 
    
         
            -
                def  
     | 
| 
      
 118 
     | 
    
         
            +
                def trap_interrupt
         
     | 
| 
      
 119 
     | 
    
         
            +
                  Signal.trap('INT') do
         
     | 
| 
      
 120 
     | 
    
         
            +
                    exit!(1) if wants_to_quit?
         
     | 
| 
      
 121 
     | 
    
         
            +
                    self.wants_to_quit = true
         
     | 
| 
      
 122 
     | 
    
         
            +
                    STDERR.puts
         
     | 
| 
      
 123 
     | 
    
         
            +
                    STDERR.puts 'Exiting... Interrupt again to exit immediately.'
         
     | 
| 
      
 124 
     | 
    
         
            +
                  end
         
     | 
| 
      
 125 
     | 
    
         
            +
                end
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
                def display_summary(num_files, total_offences, errors_count)
         
     | 
| 
       92 
128 
     | 
    
         
             
                  print "\n#{num_files} file#{num_files > 1 ? 's' : ''} inspected, "
         
     | 
| 
       93 
129 
     | 
    
         
             
                  offences_string = if total_offences.zero?
         
     | 
| 
       94 
130 
     | 
    
         
             
                                      'no offences'
         
     | 
| 
         @@ -98,7 +134,14 @@ module Rubocop 
     | 
|
| 
       98 
134 
     | 
    
         
             
                                      "#{total_offences} offences"
         
     | 
| 
       99 
135 
     | 
    
         
             
                                    end
         
     | 
| 
       100 
136 
     | 
    
         
             
                  puts "#{offences_string} detected"
         
     | 
| 
       101 
     | 
    
         
            -
                    . 
     | 
| 
      
 137 
     | 
    
         
            +
                    .color(total_offences.zero? ? :green : :red)
         
     | 
| 
      
 138 
     | 
    
         
            +
             
     | 
| 
      
 139 
     | 
    
         
            +
                  if errors_count > 0
         
     | 
| 
      
 140 
     | 
    
         
            +
                    plural = errors_count > 1 ? 's' : ''
         
     | 
| 
      
 141 
     | 
    
         
            +
                    puts "\n#{errors_count} error#{plural} occurred.".color(:red)
         
     | 
| 
      
 142 
     | 
    
         
            +
                    puts 'Errors are usually caused by RuboCop bugs.'
         
     | 
| 
      
 143 
     | 
    
         
            +
                    puts 'Please, report your problems to RuboCop\'s issue tracker.'
         
     | 
| 
      
 144 
     | 
    
         
            +
                  end
         
     | 
| 
       102 
145 
     | 
    
         
             
                end
         
     | 
| 
       103 
146 
     | 
    
         | 
| 
       104 
147 
     | 
    
         
             
                def disabled_lines_in(source)
         
     | 
| 
         @@ -188,7 +231,9 @@ module Rubocop 
     | 
|
| 
       188 
231 
     | 
    
         | 
| 
       189 
232 
     | 
    
         
             
                def show_cops_on_duty(cops)
         
     | 
| 
       190 
233 
     | 
    
         
             
                  puts '== Reporting for duty =='
         
     | 
| 
       191 
     | 
    
         
            -
                  cops.each  
     | 
| 
      
 234 
     | 
    
         
            +
                  cops.each do |c|
         
     | 
| 
      
 235 
     | 
    
         
            +
                    puts ' * '.color(:yellow) + c.to_s.color(:green)
         
     | 
| 
      
 236 
     | 
    
         
            +
                  end
         
     | 
| 
       192 
237 
     | 
    
         
             
                  puts '========================'
         
     | 
| 
       193 
238 
     | 
    
         
             
                end
         
     | 
| 
       194 
239 
     | 
    
         | 
| 
         @@ -9,8 +9,8 @@ module Rubocop 
     | 
|
| 
       9 
9 
     | 
    
         
             
                    each(:method_add_arg, sexp) do |s|
         
     | 
| 
       10 
10 
     | 
    
         
             
                      potential_class = s[1][1][1]
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                      if potential_class 
     | 
| 
       13 
     | 
    
         
            -
                          s[2] == [:arg_paren, nil]
         
     | 
| 
      
 12 
     | 
    
         
            +
                      if potential_class && potential_class[1] == 'Array' &&
         
     | 
| 
      
 13 
     | 
    
         
            +
                          s[1][3][1] == 'new' && s[2] == [:arg_paren, nil]
         
     | 
| 
       14 
14 
     | 
    
         
             
                        add_offence(:convention,
         
     | 
| 
       15 
15 
     | 
    
         
             
                                    potential_class[2].lineno,
         
     | 
| 
       16 
16 
     | 
    
         
             
                                    ERROR_MESSAGE)
         
     | 
| 
         @@ -2,12 +2,12 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module Rubocop
         
     | 
| 
       4 
4 
     | 
    
         
             
              module Cop
         
     | 
| 
       5 
     | 
    
         
            -
                class  
     | 
| 
       6 
     | 
    
         
            -
                  ERROR_MESSAGE = 'Use only ascii symbols in  
     | 
| 
      
 5 
     | 
    
         
            +
                class AsciiComments < Cop
         
     | 
| 
      
 6 
     | 
    
         
            +
                  ERROR_MESSAGE = 'Use only ascii symbols in comments.'
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
                  def inspect(file, source, tokens, sexp)
         
     | 
| 
       9 
9 
     | 
    
         
             
                    tokens.each do |t|
         
     | 
| 
       10 
     | 
    
         
            -
                      if  
     | 
| 
      
 10 
     | 
    
         
            +
                      if t.type == :on_comment &&
         
     | 
| 
       11 
11 
     | 
    
         
             
                          t.text =~ /[^\x00-\x7f]/
         
     | 
| 
       12 
12 
     | 
    
         
             
                        add_offence(:convention, t.pos.lineno, ERROR_MESSAGE)
         
     | 
| 
       13 
13 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # encoding: utf-8
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Rubocop
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Cop
         
     | 
| 
      
 5 
     | 
    
         
            +
                class AsciiIdentifiers < Cop
         
     | 
| 
      
 6 
     | 
    
         
            +
                  ERROR_MESSAGE = 'Use only ascii symbols in identifiers.'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def inspect(file, source, tokens, sexp)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    tokens.each do |t|
         
     | 
| 
      
 10 
     | 
    
         
            +
                      if t.type == :on_ident &&
         
     | 
| 
      
 11 
     | 
    
         
            +
                          t.text =~ /[^\x00-\x7f]/
         
     | 
| 
      
 12 
     | 
    
         
            +
                        add_offence(:convention, t.pos.lineno, ERROR_MESSAGE)
         
     | 
| 
      
 13 
     | 
    
         
            +
                      end
         
     | 
| 
      
 14 
     | 
    
         
            +
                    end
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/rubocop/cop/cop.rb
    CHANGED
    
    | 
         @@ -56,10 +56,15 @@ module Rubocop 
     | 
|
| 
       56 
56 
     | 
    
         | 
| 
       57 
57 
     | 
    
         
             
                  def add_offence(severity, line_number, message)
         
     | 
| 
       58 
58 
     | 
    
         
             
                    unless @disabled_lines && @disabled_lines.include?(line_number)
         
     | 
| 
      
 59 
     | 
    
         
            +
                      message = $options[:debug] ? "#{name}: #{message}" : message
         
     | 
| 
       59 
60 
     | 
    
         
             
                      @offences << Offence.new(severity, line_number, message)
         
     | 
| 
       60 
61 
     | 
    
         
             
                    end
         
     | 
| 
       61 
62 
     | 
    
         
             
                  end
         
     | 
| 
       62 
63 
     | 
    
         | 
| 
      
 64 
     | 
    
         
            +
                  def name
         
     | 
| 
      
 65 
     | 
    
         
            +
                    self.class.to_s.split('::')[-1]
         
     | 
| 
      
 66 
     | 
    
         
            +
                  end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
       63 
68 
     | 
    
         
             
                  private
         
     | 
| 
       64 
69 
     | 
    
         | 
| 
       65 
70 
     | 
    
         
             
                  def each_parent_of(sym, sexp)
         
     | 
| 
         @@ -9,8 +9,8 @@ module Rubocop 
     | 
|
| 
       9 
9 
     | 
    
         
             
                    each(:method_add_arg, sexp) do |s|
         
     | 
| 
       10 
10 
     | 
    
         
             
                      potential_class = s[1][1][1]
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                      if potential_class 
     | 
| 
       13 
     | 
    
         
            -
                          s[2] == [:arg_paren, nil]
         
     | 
| 
      
 12 
     | 
    
         
            +
                      if potential_class && potential_class[1] == 'Hash' &&
         
     | 
| 
      
 13 
     | 
    
         
            +
                          s[1][3][1] == 'new' && s[2] == [:arg_paren, nil]
         
     | 
| 
       14 
14 
     | 
    
         
             
                        add_offence(:convention,
         
     | 
| 
       15 
15 
     | 
    
         
             
                                    potential_class[2].lineno,
         
     | 
| 
       16 
16 
     | 
    
         
             
                                    ERROR_MESSAGE)
         
     | 
| 
         @@ -8,7 +8,12 @@ module Rubocop 
     | 
|
| 
       8 
8 
     | 
    
         
             
                  def inspect(file, source, tokens, sexp)
         
     | 
| 
       9 
9 
     | 
    
         
             
                    each(:def, sexp) do |s|
         
     | 
| 
       10 
10 
     | 
    
         
             
                      if s[1][0] == :@op && !%w([] []= <<).include?(s[1][1])
         
     | 
| 
       11 
     | 
    
         
            -
                         
     | 
| 
      
 11 
     | 
    
         
            +
                        if s[2][0] == :paren
         
     | 
| 
      
 12 
     | 
    
         
            +
                          # param is surrounded by braces
         
     | 
| 
      
 13 
     | 
    
         
            +
                          param = s[2][1][1][0]
         
     | 
| 
      
 14 
     | 
    
         
            +
                        else
         
     | 
| 
      
 15 
     | 
    
         
            +
                          param = s[2][1][0]
         
     | 
| 
      
 16 
     | 
    
         
            +
                        end
         
     | 
| 
       12 
17 
     | 
    
         | 
| 
       13 
18 
     | 
    
         
             
                        unless param[1] == 'other'
         
     | 
| 
       14 
19 
     | 
    
         
             
                          add_offence(:convention,
         
     | 
| 
         @@ -6,11 +6,10 @@ module Rubocop 
     | 
|
| 
       6 
6 
     | 
    
         
             
                  ERROR_MESSAGE = 'Space missing after %s.'
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
                  def inspect(file, source, tokens, sexp)
         
     | 
| 
       9 
     | 
    
         
            -
                    tokens. 
     | 
| 
       10 
     | 
    
         
            -
                       
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                                    sprintf(ERROR_MESSAGE, kind(t)))
         
     | 
| 
      
 9 
     | 
    
         
            +
                    tokens.each_cons(2) do |t1, t2|
         
     | 
| 
      
 10 
     | 
    
         
            +
                      if kind(t1) && !whitespace?(t2)
         
     | 
| 
      
 11 
     | 
    
         
            +
                        add_offence(:convention, t1.pos.lineno,
         
     | 
| 
      
 12 
     | 
    
         
            +
                                    sprintf(ERROR_MESSAGE, kind(t1)))
         
     | 
| 
       14 
13 
     | 
    
         
             
                      end
         
     | 
| 
       15 
14 
     | 
    
         
             
                    end
         
     | 
| 
       16 
15 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -6,6 +6,13 @@ module Rubocop 
     | 
|
| 
       6 
6 
     | 
    
         
             
                  ERROR_MESSAGE = 'Use snake_case for symbols.'
         
     | 
| 
       7 
7 
     | 
    
         
             
                  SNAKE_CASE = /^@?[\da-z_]+[!?=]?$/
         
     | 
| 
       8 
8 
     | 
    
         
             
                  def inspect(file, source, tokens, sexp)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    check_for_symbols(sexp)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    check_for_hash_labels(sexp)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                  private
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  def check_for_symbols(sexp)
         
     | 
| 
       9 
16 
     | 
    
         
             
                    each(:symbol_literal, sexp) do |s|
         
     | 
| 
       10 
17 
     | 
    
         
             
                      symbol_type = s[1][1][0]
         
     | 
| 
       11 
18 
     | 
    
         | 
| 
         @@ -22,6 +29,19 @@ module Rubocop 
     | 
|
| 
       22 
29 
     | 
    
         
             
                      end
         
     | 
| 
       23 
30 
     | 
    
         
             
                    end
         
     | 
| 
       24 
31 
     | 
    
         
             
                  end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                  def check_for_hash_labels(sexp)
         
     | 
| 
      
 34 
     | 
    
         
            +
                    each(:@label, sexp) do |s|
         
     | 
| 
      
 35 
     | 
    
         
            +
                      label_ident = s[1].chop
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                      unless label_ident =~ SNAKE_CASE
         
     | 
| 
      
 38 
     | 
    
         
            +
                        line_no = s[2].lineno
         
     | 
| 
      
 39 
     | 
    
         
            +
                        add_offence(:convention,
         
     | 
| 
      
 40 
     | 
    
         
            +
                                    line_no,
         
     | 
| 
      
 41 
     | 
    
         
            +
                                    ERROR_MESSAGE)
         
     | 
| 
      
 42 
     | 
    
         
            +
                      end
         
     | 
| 
      
 43 
     | 
    
         
            +
                    end
         
     | 
| 
      
 44 
     | 
    
         
            +
                  end
         
     | 
| 
       25 
45 
     | 
    
         
             
                end
         
     | 
| 
       26 
46 
     | 
    
         
             
              end
         
     | 
| 
       27 
47 
     | 
    
         
             
            end
         
     | 
    
        data/lib/rubocop/version.rb
    CHANGED
    
    
    
        data/rubocop.gemspec
    CHANGED
    
    | 
         @@ -33,7 +33,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       33 
33 
     | 
    
         
             
              s.rubygems_version = '1.8.23'
         
     | 
| 
       34 
34 
     | 
    
         
             
              s.summary = 'Automatic Ruby code style checking tool.'
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
              s.add_runtime_dependency(%q< 
     | 
| 
      
 36 
     | 
    
         
            +
              s.add_runtime_dependency(%q<rainbow>, '>= 1.1.4')
         
     | 
| 
       37 
37 
     | 
    
         
             
              s.add_development_dependency(%q<rake>, '~> 10.0')
         
     | 
| 
       38 
38 
     | 
    
         
             
              s.add_development_dependency(%q<rspec>, '~> 2.13')
         
     | 
| 
       39 
39 
     | 
    
         
             
              s.add_development_dependency(%q<yard>, '~> 0.8')
         
     | 
    
        data/spec/rubocop/cli_spec.rb
    CHANGED
    
    | 
         @@ -15,10 +15,11 @@ module Rubocop 
     | 
|
| 
       15 
15 
     | 
    
         
             
                    expect { cli.run ['-h'] }.to exit_with_code(0)
         
     | 
| 
       16 
16 
     | 
    
         
             
                    expect { cli.run ['--help'] }.to exit_with_code(0)
         
     | 
| 
       17 
17 
     | 
    
         
             
                    message = ['Usage: rubocop [options] [file1, file2, ...]',
         
     | 
| 
       18 
     | 
    
         
            -
                               '    -d, -- 
     | 
| 
      
 18 
     | 
    
         
            +
                               '    -d, --debug                      Display debug info',
         
     | 
| 
       19 
19 
     | 
    
         
             
                               '    -e, --emacs                      Emacs style output',
         
     | 
| 
       20 
20 
     | 
    
         
             
                               '    -c, --config FILE                Configuration file',
         
     | 
| 
       21 
21 
     | 
    
         
             
                               '    -s, --silent                     Silence summary',
         
     | 
| 
      
 22 
     | 
    
         
            +
                               '    -n, --no-color                   Disable color output',
         
     | 
| 
       22 
23 
     | 
    
         
             
                               '    -v, --version                    Display version']
         
     | 
| 
       23 
24 
     | 
    
         
             
                    expect($stdout.string).to eq((message * 2).join("\n") + "\n")
         
     | 
| 
       24 
25 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -29,6 +30,74 @@ module Rubocop 
     | 
|
| 
       29 
30 
     | 
    
         
             
                    expect($stdout.string).to eq((Rubocop::Version::STRING + "\n") * 2)
         
     | 
| 
       30 
31 
     | 
    
         
             
                  end
         
     | 
| 
       31 
32 
     | 
    
         | 
| 
      
 33 
     | 
    
         
            +
                  describe '#wants_to_quit?' do
         
     | 
| 
      
 34 
     | 
    
         
            +
                    it 'is initially false' do
         
     | 
| 
      
 35 
     | 
    
         
            +
                      expect(cli.wants_to_quit?).to be_false
         
     | 
| 
      
 36 
     | 
    
         
            +
                    end
         
     | 
| 
      
 37 
     | 
    
         
            +
                  end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                  context 'when interrupted with Ctrl-C' do
         
     | 
| 
      
 40 
     | 
    
         
            +
                    def execute_rubocop
         
     | 
| 
      
 41 
     | 
    
         
            +
                      project_root = File.expand_path('../..', File.dirname(__FILE__))
         
     | 
| 
      
 42 
     | 
    
         
            +
                      rubocop_command = File.join(project_root, 'bin', 'rubocop')
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                      _, stdout, stderr, thread = Open3.popen3(rubocop_command, '--debug')
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                      unless IO.select([stdout], nil, nil, 10)
         
     | 
| 
      
 47 
     | 
    
         
            +
                        fail 'rubocop took too long to start running'
         
     | 
| 
      
 48 
     | 
    
         
            +
                      end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                      yield stdout, stderr, thread.pid
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                      thread.value.exitstatus
         
     | 
| 
      
 53 
     | 
    
         
            +
                    ensure
         
     | 
| 
      
 54 
     | 
    
         
            +
                      thread.terminate
         
     | 
| 
      
 55 
     | 
    
         
            +
                    end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                    def wait_for_output(output)
         
     | 
| 
      
 58 
     | 
    
         
            +
                      IO.select([output], nil, nil, 10)
         
     | 
| 
      
 59 
     | 
    
         
            +
                    end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                    it 'exits with status 1' do
         
     | 
| 
      
 62 
     | 
    
         
            +
                      exit_status = execute_rubocop do |stdout, stderr, pid|
         
     | 
| 
      
 63 
     | 
    
         
            +
                        Process.kill('INT', pid)
         
     | 
| 
      
 64 
     | 
    
         
            +
                      end
         
     | 
| 
      
 65 
     | 
    
         
            +
                      expect(exit_status).to eq(1)
         
     | 
| 
      
 66 
     | 
    
         
            +
                    end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                    it 'exits gracefully without dumping backtraces' do
         
     | 
| 
      
 69 
     | 
    
         
            +
                      execute_rubocop do |stdout, stderr, pid|
         
     | 
| 
      
 70 
     | 
    
         
            +
                        Process.kill('INT', pid)
         
     | 
| 
      
 71 
     | 
    
         
            +
                        wait_for_output(stderr)
         
     | 
| 
      
 72 
     | 
    
         
            +
                        expect(stderr.read).not_to match(/from .+:\d+:in /)
         
     | 
| 
      
 73 
     | 
    
         
            +
                      end
         
     | 
| 
      
 74 
     | 
    
         
            +
                    end
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                    context 'with Ctrl-C once' do
         
     | 
| 
      
 77 
     | 
    
         
            +
                      it 'reports summary' do
         
     | 
| 
      
 78 
     | 
    
         
            +
                        execute_rubocop do |stdout, stderr, pid|
         
     | 
| 
      
 79 
     | 
    
         
            +
                          Process.kill('INT', pid)
         
     | 
| 
      
 80 
     | 
    
         
            +
                          wait_for_output(stdout)
         
     | 
| 
      
 81 
     | 
    
         
            +
                          output = stdout.read
         
     | 
| 
      
 82 
     | 
    
         
            +
                          expect(output).to match(/files? inspected/)
         
     | 
| 
      
 83 
     | 
    
         
            +
                        end
         
     | 
| 
      
 84 
     | 
    
         
            +
                      end
         
     | 
| 
      
 85 
     | 
    
         
            +
                    end
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
                    context 'with Ctrl-C twice' do
         
     | 
| 
      
 88 
     | 
    
         
            +
                      it 'exits immediately without reporting summary' do
         
     | 
| 
      
 89 
     | 
    
         
            +
                        execute_rubocop do |stdout, stderr, pid|
         
     | 
| 
      
 90 
     | 
    
         
            +
                          Process.kill('INT', pid)
         
     | 
| 
      
 91 
     | 
    
         
            +
                          wait_for_output(stderr) # Wait for "Exiting...".
         
     | 
| 
      
 92 
     | 
    
         
            +
                          Process.kill('INT', pid)
         
     | 
| 
      
 93 
     | 
    
         
            +
                          wait_for_output(stdout)
         
     | 
| 
      
 94 
     | 
    
         
            +
                          output = stdout.read
         
     | 
| 
      
 95 
     | 
    
         
            +
                          expect(output).not_to match(/files? inspected/)
         
     | 
| 
      
 96 
     | 
    
         
            +
                        end
         
     | 
| 
      
 97 
     | 
    
         
            +
                      end
         
     | 
| 
      
 98 
     | 
    
         
            +
                    end
         
     | 
| 
      
 99 
     | 
    
         
            +
                  end
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
       32 
101 
     | 
    
         
             
                  it 'checks a given correct file and returns 0' do
         
     | 
| 
       33 
102 
     | 
    
         
             
                    File.open('example.rb', 'w') do |f|
         
     | 
| 
       34 
103 
     | 
    
         
             
                      f.puts '# encoding: utf-8'
         
     | 
| 
         @@ -37,7 +106,7 @@ module Rubocop 
     | 
|
| 
       37 
106 
     | 
    
         
             
                    end
         
     | 
| 
       38 
107 
     | 
    
         
             
                    begin
         
     | 
| 
       39 
108 
     | 
    
         
             
                      expect(cli.run(['example.rb'])).to eq(0)
         
     | 
| 
       40 
     | 
    
         
            -
                      expect($stdout.string 
     | 
| 
      
 109 
     | 
    
         
            +
                      expect($stdout.string)
         
     | 
| 
       41 
110 
     | 
    
         
             
                        .to eq("\n1 file inspected, no offences detected\n")
         
     | 
| 
       42 
111 
     | 
    
         
             
                    ensure
         
     | 
| 
       43 
112 
     | 
    
         
             
                      File.delete 'example.rb'
         
     | 
| 
         @@ -52,7 +121,7 @@ module Rubocop 
     | 
|
| 
       52 
121 
     | 
    
         
             
                    end
         
     | 
| 
       53 
122 
     | 
    
         
             
                    begin
         
     | 
| 
       54 
123 
     | 
    
         
             
                      expect(cli.run(['example.rb'])).to eq(1)
         
     | 
| 
       55 
     | 
    
         
            -
                      expect($stdout.string 
     | 
| 
      
 124 
     | 
    
         
            +
                      expect($stdout.string)
         
     | 
| 
       56 
125 
     | 
    
         
             
                        .to eq ['== example.rb ==',
         
     | 
| 
       57 
126 
     | 
    
         
             
                                'C:  2: Trailing whitespace detected.',
         
     | 
| 
       58 
127 
     | 
    
         
             
                                '',
         
     | 
| 
         @@ -68,7 +137,7 @@ module Rubocop 
     | 
|
| 
       68 
137 
     | 
    
         
             
                    File.open('example2.rb', 'w') { |f| f.puts "\tx = 0", 'puts x' }
         
     | 
| 
       69 
138 
     | 
    
         
             
                    begin
         
     | 
| 
       70 
139 
     | 
    
         
             
                      expect(cli.run(['--emacs', 'example1.rb', 'example2.rb'])).to eq(1)
         
     | 
| 
       71 
     | 
    
         
            -
                      expect($stdout.string 
     | 
| 
      
 140 
     | 
    
         
            +
                      expect($stdout.string)
         
     | 
| 
       72 
141 
     | 
    
         
             
                        .to eq(
         
     | 
| 
       73 
142 
     | 
    
         
             
                        ['example1.rb:1: C: Missing utf-8 encoding comment.',
         
     | 
| 
       74 
143 
     | 
    
         
             
                         'example1.rb:1: C: Trailing whitespace detected.',
         
     | 
| 
         @@ -90,7 +159,7 @@ module Rubocop 
     | 
|
| 
       90 
159 
     | 
    
         
             
                    File.open('example2.rb', 'w') { |f| f.puts "\tx = 0", 'puts x' }
         
     | 
| 
       91 
160 
     | 
    
         
             
                    begin
         
     | 
| 
       92 
161 
     | 
    
         
             
                      expect(cli.run(['--emacs', 'example1.rb', 'example2.rb'])).to eq(1)
         
     | 
| 
       93 
     | 
    
         
            -
                      expect($stdout.string 
     | 
| 
      
 162 
     | 
    
         
            +
                      expect($stdout.string)
         
     | 
| 
       94 
163 
     | 
    
         
             
                        .to eq(
         
     | 
| 
       95 
164 
     | 
    
         
             
                        ['example1.rb:1: C: Trailing whitespace detected.',
         
     | 
| 
       96 
165 
     | 
    
         
             
                         "example1.rb:1: C: Surrounding space missing for operator '='.",
         
     | 
| 
         @@ -143,6 +212,21 @@ module Rubocop 
     | 
|
| 
       143 
212 
     | 
    
         
             
                    end
         
     | 
| 
       144 
213 
     | 
    
         
             
                  end
         
     | 
| 
       145 
214 
     | 
    
         | 
| 
      
 215 
     | 
    
         
            +
                  it 'shows cop names when --debug is passed', ruby: 2.0 do
         
     | 
| 
      
 216 
     | 
    
         
            +
                    File.open('example1.rb', 'w') { |f| f.puts "\tputs 0" }
         
     | 
| 
      
 217 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 218 
     | 
    
         
            +
                      expect(cli.run(['--emacs',
         
     | 
| 
      
 219 
     | 
    
         
            +
                                      '--silent',
         
     | 
| 
      
 220 
     | 
    
         
            +
                                      '--debug',
         
     | 
| 
      
 221 
     | 
    
         
            +
                                      'example1.rb'])).to eq(1)
         
     | 
| 
      
 222 
     | 
    
         
            +
                      expect($stdout.string.lines[-1]).to eq(
         
     | 
| 
      
 223 
     | 
    
         
            +
                        ['example1.rb:1: C: Tab: Tab detected.',
         
     | 
| 
      
 224 
     | 
    
         
            +
                         ''].join("\n"))
         
     | 
| 
      
 225 
     | 
    
         
            +
                    ensure
         
     | 
| 
      
 226 
     | 
    
         
            +
                      File.delete 'example1.rb'
         
     | 
| 
      
 227 
     | 
    
         
            +
                    end
         
     | 
| 
      
 228 
     | 
    
         
            +
                  end
         
     | 
| 
      
 229 
     | 
    
         
            +
             
     | 
| 
       146 
230 
     | 
    
         
             
                  it 'can be configured with option to disable a certain error' do
         
     | 
| 
       147 
231 
     | 
    
         
             
                    File.open('example1.rb', 'w') { |f| f.puts 'puts 0 ' }
         
     | 
| 
       148 
232 
     | 
    
         
             
                    File.open('rubocop.yml', 'w') do |f|
         
     | 
| 
         @@ -154,7 +238,7 @@ module Rubocop 
     | 
|
| 
       154 
238 
     | 
    
         
             
                    end
         
     | 
| 
       155 
239 
     | 
    
         
             
                    begin
         
     | 
| 
       156 
240 
     | 
    
         
             
                      expect(cli.run(['-c', 'rubocop.yml', 'example1.rb'])).to eq(1)
         
     | 
| 
       157 
     | 
    
         
            -
                      expect($stdout.string 
     | 
| 
      
 241 
     | 
    
         
            +
                      expect($stdout.string).to eq(
         
     | 
| 
       158 
242 
     | 
    
         
             
                        ['== example1.rb ==',
         
     | 
| 
       159 
243 
     | 
    
         
             
                         'C:  1: Trailing whitespace detected.',
         
     | 
| 
       160 
244 
     | 
    
         
             
                         '',
         
     | 
| 
         @@ -178,7 +262,7 @@ module Rubocop 
     | 
|
| 
       178 
262 
     | 
    
         
             
                    end
         
     | 
| 
       179 
263 
     | 
    
         
             
                    begin
         
     | 
| 
       180 
264 
     | 
    
         
             
                      expect(cli.run(['example_src/example1.rb'])).to eq(1)
         
     | 
| 
       181 
     | 
    
         
            -
                      expect($stdout.string 
     | 
| 
      
 265 
     | 
    
         
            +
                      expect($stdout.string).to eq(
         
     | 
| 
       182 
266 
     | 
    
         
             
                        ['== example_src/example1.rb ==',
         
     | 
| 
       183 
267 
     | 
    
         
             
                         'C:  1: Trailing whitespace detected.',
         
     | 
| 
       184 
268 
     | 
    
         
             
                         '',
         
     | 
| 
         @@ -202,7 +286,7 @@ module Rubocop 
     | 
|
| 
       202 
286 
     | 
    
         
             
                    end
         
     | 
| 
       203 
287 
     | 
    
         
             
                    begin
         
     | 
| 
       204 
288 
     | 
    
         
             
                      expect(cli.run(['example_src/example1.rb'])).to eq(0)
         
     | 
| 
       205 
     | 
    
         
            -
                      expect($stdout.string 
     | 
| 
      
 289 
     | 
    
         
            +
                      expect($stdout.string).to eq(
         
     | 
| 
       206 
290 
     | 
    
         
             
                        ['', '1 file inspected, no offences detected',
         
     | 
| 
       207 
291 
     | 
    
         
             
                         ''].join("\n"))
         
     | 
| 
       208 
292 
     | 
    
         
             
                    ensure
         
     | 
| 
         @@ -225,7 +309,7 @@ module Rubocop 
     | 
|
| 
       225 
309 
     | 
    
         
             
                    end
         
     | 
| 
       226 
310 
     | 
    
         
             
                    begin
         
     | 
| 
       227 
311 
     | 
    
         
             
                      expect(cli.run(['example'])).to eq(1)
         
     | 
| 
       228 
     | 
    
         
            -
                      expect($stdout.string 
     | 
| 
      
 312 
     | 
    
         
            +
                      expect($stdout.string).to eq(
         
     | 
| 
       229 
313 
     | 
    
         
             
                        ['== example/lib/example1.rb ==',
         
     | 
| 
       230 
314 
     | 
    
         
             
                         'C:  2: Line is too long. [90/79]',
         
     | 
| 
       231 
315 
     | 
    
         
             
                         '',
         
     | 
| 
         @@ -257,7 +341,7 @@ module Rubocop 
     | 
|
| 
       257 
341 
     | 
    
         
             
                      end
         
     | 
| 
       258 
342 
     | 
    
         
             
                      begin
         
     | 
| 
       259 
343 
     | 
    
         
             
                        expect(cli.run(['example_src/example1.rb'])).to eq(0)
         
     | 
| 
       260 
     | 
    
         
            -
                        expect($stdout.string 
     | 
| 
      
 344 
     | 
    
         
            +
                        expect($stdout.string).to eq(
         
     | 
| 
       261 
345 
     | 
    
         
             
                          ['', '1 file inspected, no offences detected',
         
     | 
| 
       262 
346 
     | 
    
         
             
                           ''].join("\n"))
         
     | 
| 
       263 
347 
     | 
    
         
             
                      ensure
         
     | 
| 
         @@ -271,7 +355,7 @@ module Rubocop 
     | 
|
| 
       271 
355 
     | 
    
         
             
                    # Need to pass an empty array explicitly
         
     | 
| 
       272 
356 
     | 
    
         
             
                    # so that the CLI does not refer arguments of `rspec`
         
     | 
| 
       273 
357 
     | 
    
         
             
                    cli.run([])
         
     | 
| 
       274 
     | 
    
         
            -
                    expect($stdout.string 
     | 
| 
      
 358 
     | 
    
         
            +
                    expect($stdout.string).to match(
         
     | 
| 
       275 
359 
     | 
    
         
             
                      /files inspected, no offences detected\n/
         
     | 
| 
       276 
360 
     | 
    
         
             
                    )
         
     | 
| 
       277 
361 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -285,7 +369,7 @@ module Rubocop 
     | 
|
| 
       285 
369 
     | 
    
         
             
                    begin
         
     | 
| 
       286 
370 
     | 
    
         
             
                      expect(cli.run(['--emacs', 'example.rb'])).to eq(1)
         
     | 
| 
       287 
371 
     | 
    
         
             
                      unexpected_part = RUBY_VERSION >= '2.0' ? 'end-of-input' : '$end'
         
     | 
| 
       288 
     | 
    
         
            -
                      expect($stdout.string 
     | 
| 
      
 372 
     | 
    
         
            +
                      expect($stdout.string).to eq(
         
     | 
| 
       289 
373 
     | 
    
         
             
                        ["example.rb:3: E: Syntax error, unexpected #{unexpected_part}, " +
         
     | 
| 
       290 
374 
     | 
    
         
             
                         'expecting keyword_end',
         
     | 
| 
       291 
375 
     | 
    
         
             
                         '',
         
     | 
| 
         @@ -333,7 +417,7 @@ module Rubocop 
     | 
|
| 
       333 
417 
     | 
    
         
             
                      expect(cli.run(['--emacs', 'example.rb'])).to eq(1)
         
     | 
| 
       334 
418 
     | 
    
         
             
                      # all cops were disabled, then 2 were enabled again, so we
         
     | 
| 
       335 
419 
     | 
    
         
             
                      # should get 2 offences reported.
         
     | 
| 
       336 
     | 
    
         
            -
                      expect($stdout.string 
     | 
| 
      
 420 
     | 
    
         
            +
                      expect($stdout.string).to eq(
         
     | 
| 
       337 
421 
     | 
    
         
             
                        ['example.rb:8: C: Line is too long. [95/79]',
         
     | 
| 
       338 
422 
     | 
    
         
             
                         "example.rb:10: C: Prefer single-quoted strings when you don't " +
         
     | 
| 
       339 
423 
     | 
    
         
             
                         'need string interpolation or special symbols.',
         
     | 
| 
         @@ -363,7 +447,7 @@ module Rubocop 
     | 
|
| 
       363 
447 
     | 
    
         
             
                      expect(cli.run(['--emacs', 'example.rb'])).to eq(1)
         
     | 
| 
       364 
448 
     | 
    
         
             
                      # 3 cops were disabled, then 2 were enabled again, so we
         
     | 
| 
       365 
449 
     | 
    
         
             
                      # should get 2 offences reported.
         
     | 
| 
       366 
     | 
    
         
            -
                      expect($stdout.string 
     | 
| 
      
 450 
     | 
    
         
            +
                      expect($stdout.string).to eq(
         
     | 
| 
       367 
451 
     | 
    
         
             
                        ['example.rb:8: C: Line is too long. [95/79]',
         
     | 
| 
       368 
452 
     | 
    
         
             
                         "example.rb:10: C: Prefer single-quoted strings when you don't " +
         
     | 
| 
       369 
453 
     | 
    
         
             
                         'need string interpolation or special symbols.',
         
     | 
| 
         @@ -382,7 +466,7 @@ module Rubocop 
     | 
|
| 
       382 
466 
     | 
    
         
             
                    end
         
     | 
| 
       383 
467 
     | 
    
         
             
                    begin
         
     | 
| 
       384 
468 
     | 
    
         
             
                      expect(cli.run(['--emacs', 'example.rb'])).to eq(0)
         
     | 
| 
       385 
     | 
    
         
            -
                      expect($stdout.string 
     | 
| 
      
 469 
     | 
    
         
            +
                      expect($stdout.string).to eq(
         
     | 
| 
       386 
470 
     | 
    
         
             
                        ['',
         
     | 
| 
       387 
471 
     | 
    
         
             
                         '1 file inspected, no offences detected',
         
     | 
| 
       388 
472 
     | 
    
         
             
                         ''].join("\n"))
         
     | 
| 
         @@ -400,7 +484,7 @@ module Rubocop 
     | 
|
| 
       400 
484 
     | 
    
         
             
                    end
         
     | 
| 
       401 
485 
     | 
    
         
             
                    begin
         
     | 
| 
       402 
486 
     | 
    
         
             
                      expect(cli.run(['--emacs', 'example.rb'])).to eq(1)
         
     | 
| 
       403 
     | 
    
         
            -
                      expect($stdout.string 
     | 
| 
      
 487 
     | 
    
         
            +
                      expect($stdout.string).to eq(
         
     | 
| 
       404 
488 
     | 
    
         
             
                        ['example.rb:3: C: Line is too long. [95/79]',
         
     | 
| 
       405 
489 
     | 
    
         
             
                         '',
         
     | 
| 
       406 
490 
     | 
    
         
             
                         '1 file inspected, 1 offence detected',
         
     | 
| 
         @@ -423,7 +507,7 @@ module Rubocop 
     | 
|
| 
       423 
507 
     | 
    
         
             
                        # Need to pass an empty array explicitly
         
     | 
| 
       424 
508 
     | 
    
         
             
                        # so that the CLI does not refer arguments of `rspec`
         
     | 
| 
       425 
509 
     | 
    
         
             
                        expect(cli.run([])).to eq(0)
         
     | 
| 
       426 
     | 
    
         
            -
                        expect($stdout.string 
     | 
| 
      
 510 
     | 
    
         
            +
                        expect($stdout.string).to eq(
         
     | 
| 
       427 
511 
     | 
    
         
             
                          ['', '1 file inspected, no offences detected',
         
     | 
| 
       428 
512 
     | 
    
         
             
                           ''].join("\n"))
         
     | 
| 
       429 
513 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -431,6 +515,28 @@ module Rubocop 
     | 
|
| 
       431 
515 
     | 
    
         
             
                      FileUtils::rm_rf 'test'
         
     | 
| 
       432 
516 
     | 
    
         
             
                    end
         
     | 
| 
       433 
517 
     | 
    
         
             
                  end
         
     | 
| 
      
 518 
     | 
    
         
            +
             
     | 
| 
      
 519 
     | 
    
         
            +
                  describe '#display_summary' do
         
     | 
| 
      
 520 
     | 
    
         
            +
                    it 'handles pluralization correctly' do
         
     | 
| 
      
 521 
     | 
    
         
            +
                      cli.display_summary(1, 0, 0)
         
     | 
| 
      
 522 
     | 
    
         
            +
                      expect($stdout.string).to eq(
         
     | 
| 
      
 523 
     | 
    
         
            +
                        "\n1 file inspected, no offences detected\n")
         
     | 
| 
      
 524 
     | 
    
         
            +
                      $stdout = StringIO.new
         
     | 
| 
      
 525 
     | 
    
         
            +
                      cli.display_summary(1, 1, 0)
         
     | 
| 
      
 526 
     | 
    
         
            +
                      expect($stdout.string).to eq(
         
     | 
| 
      
 527 
     | 
    
         
            +
                        "\n1 file inspected, 1 offence detected\n")
         
     | 
| 
      
 528 
     | 
    
         
            +
                      $stdout = StringIO.new
         
     | 
| 
      
 529 
     | 
    
         
            +
                      cli.display_summary(2, 2, 0)
         
     | 
| 
      
 530 
     | 
    
         
            +
                      expect($stdout.string).to eq(
         
     | 
| 
      
 531 
     | 
    
         
            +
                        "\n2 files inspected, 2 offences detected\n")
         
     | 
| 
      
 532 
     | 
    
         
            +
                    end
         
     | 
| 
      
 533 
     | 
    
         
            +
             
     | 
| 
      
 534 
     | 
    
         
            +
                    it 'displays an error message when errors are present' do
         
     | 
| 
      
 535 
     | 
    
         
            +
                      cli.display_summary(1, 1, 1)
         
     | 
| 
      
 536 
     | 
    
         
            +
                      expect($stdout.string.lines.to_a[-3])
         
     | 
| 
      
 537 
     | 
    
         
            +
                        .to eq("1 error occurred.\n")
         
     | 
| 
      
 538 
     | 
    
         
            +
                    end
         
     | 
| 
      
 539 
     | 
    
         
            +
                  end
         
     | 
| 
       434 
540 
     | 
    
         
             
                end
         
     | 
| 
       435 
541 
     | 
    
         
             
              end
         
     | 
| 
       436 
542 
     | 
    
         
             
            end
         
     | 
| 
         @@ -24,6 +24,16 @@ module Rubocop 
     | 
|
| 
       24 
24 
     | 
    
         
             
                                   ['test = Array.new(3)'])
         
     | 
| 
       25 
25 
     | 
    
         
             
                    expect(a.offences).to be_empty
         
     | 
| 
       26 
26 
     | 
    
         
             
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  it 'does not crash when a method is called on super' do
         
     | 
| 
      
 29 
     | 
    
         
            +
                    inspect_source(a,
         
     | 
| 
      
 30 
     | 
    
         
            +
                                   'file.rb',
         
     | 
| 
      
 31 
     | 
    
         
            +
                                   ['class Derived < Base',
         
     | 
| 
      
 32 
     | 
    
         
            +
                                    '  def func',
         
     | 
| 
      
 33 
     | 
    
         
            +
                                    '    super.slice(1..2)',
         
     | 
| 
      
 34 
     | 
    
         
            +
                                    '  end',
         
     | 
| 
      
 35 
     | 
    
         
            +
                                    'end'])
         
     | 
| 
      
 36 
     | 
    
         
            +
                  end
         
     | 
| 
       27 
37 
     | 
    
         
             
                end
         
     | 
| 
       28 
38 
     | 
    
         
             
              end
         
     | 
| 
       29 
39 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # encoding: utf-8
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            module Rubocop
         
     | 
| 
      
 6 
     | 
    
         
            +
              module Cop
         
     | 
| 
      
 7 
     | 
    
         
            +
                describe AsciiComments do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  let(:ascii) { AsciiComments.new }
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  it 'registers an offence for a comment with non-ascii chars' do
         
     | 
| 
      
 11 
     | 
    
         
            +
                    inspect_source(ascii,
         
     | 
| 
      
 12 
     | 
    
         
            +
                                   'file.rb',
         
     | 
| 
      
 13 
     | 
    
         
            +
                                   ['# 这是什么?'])
         
     | 
| 
      
 14 
     | 
    
         
            +
                    expect(ascii.offences.size).to eq(1)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    expect(ascii.offences.map(&:message))
         
     | 
| 
      
 16 
     | 
    
         
            +
                      .to eq([AsciiComments::ERROR_MESSAGE])
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                  it 'accepts comments with only ascii chars' do
         
     | 
| 
      
 20 
     | 
    
         
            +
                    inspect_source(ascii,
         
     | 
| 
      
 21 
     | 
    
         
            +
                                   'file.rb',
         
     | 
| 
      
 22 
     | 
    
         
            +
                                   ['# AZaz1@$%~,;*_`|'])
         
     | 
| 
      
 23 
     | 
    
         
            +
                    expect(ascii.offences).to be_empty
         
     | 
| 
      
 24 
     | 
    
         
            +
                  end
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # encoding: utf-8
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            module Rubocop
         
     | 
| 
      
 6 
     | 
    
         
            +
              module Cop
         
     | 
| 
      
 7 
     | 
    
         
            +
                describe AsciiIdentifiers do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  let(:ascii) { AsciiIdentifiers.new }
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  it 'registers an offence for a variable name with non-ascii chars' do
         
     | 
| 
      
 11 
     | 
    
         
            +
                    inspect_source(ascii,
         
     | 
| 
      
 12 
     | 
    
         
            +
                                   'file.rb',
         
     | 
| 
      
 13 
     | 
    
         
            +
                                   ['älg = 1'])
         
     | 
| 
      
 14 
     | 
    
         
            +
                    expect(ascii.offences.size).to eq(1)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    expect(ascii.offences.map(&:message))
         
     | 
| 
      
 16 
     | 
    
         
            +
                      .to eq([AsciiIdentifiers::ERROR_MESSAGE])
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                  it 'accepts identifiers with only ascii chars' do
         
     | 
| 
      
 20 
     | 
    
         
            +
                    inspect_source(ascii,
         
     | 
| 
      
 21 
     | 
    
         
            +
                                   'file.rb',
         
     | 
| 
      
 22 
     | 
    
         
            +
                                   ['x.empty?'])
         
     | 
| 
      
 23 
     | 
    
         
            +
                    expect(ascii.offences).to be_empty
         
     | 
| 
      
 24 
     | 
    
         
            +
                  end
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -24,6 +24,16 @@ module Rubocop 
     | 
|
| 
       24 
24 
     | 
    
         
             
                                   ['test = Hash.new(3)'])
         
     | 
| 
       25 
25 
     | 
    
         
             
                    expect(a.offences).to be_empty
         
     | 
| 
       26 
26 
     | 
    
         
             
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  it 'does not crash when a method is called on super' do
         
     | 
| 
      
 29 
     | 
    
         
            +
                    inspect_source(a,
         
     | 
| 
      
 30 
     | 
    
         
            +
                                   'file.rb',
         
     | 
| 
      
 31 
     | 
    
         
            +
                                   ['class Derived < Base',
         
     | 
| 
      
 32 
     | 
    
         
            +
                                    '  def func',
         
     | 
| 
      
 33 
     | 
    
         
            +
                                    '    super.slice(1..2)',
         
     | 
| 
      
 34 
     | 
    
         
            +
                                    '  end',
         
     | 
| 
      
 35 
     | 
    
         
            +
                                    'end'])
         
     | 
| 
      
 36 
     | 
    
         
            +
                  end
         
     | 
| 
       27 
37 
     | 
    
         
             
                end
         
     | 
| 
       28 
38 
     | 
    
         
             
              end
         
     | 
| 
       29 
39 
     | 
    
         
             
            end
         
     | 
| 
         @@ -18,6 +18,17 @@ module Rubocop 
     | 
|
| 
       18 
18 
     | 
    
         
             
                      .to eq([sprintf(OpMethod::ERROR_MESSAGE, '+')])
         
     | 
| 
       19 
19 
     | 
    
         
             
                  end
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
      
 21 
     | 
    
         
            +
                  it 'works properly even if the argument is not surrounded with braces' do
         
     | 
| 
      
 22 
     | 
    
         
            +
                    inspect_source(om,
         
     | 
| 
      
 23 
     | 
    
         
            +
                                   'file.rb',
         
     | 
| 
      
 24 
     | 
    
         
            +
                                   ['def + another',
         
     | 
| 
      
 25 
     | 
    
         
            +
                                    '  another',
         
     | 
| 
      
 26 
     | 
    
         
            +
                                    'end'])
         
     | 
| 
      
 27 
     | 
    
         
            +
                    expect(om.offences.size).to eq(1)
         
     | 
| 
      
 28 
     | 
    
         
            +
                    expect(om.offences.map(&:message))
         
     | 
| 
      
 29 
     | 
    
         
            +
                      .to eq([sprintf(OpMethod::ERROR_MESSAGE, '+')])
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
       21 
32 
     | 
    
         
             
                  it 'does not register an offence for arg named other' do
         
     | 
| 
       22 
33 
     | 
    
         
             
                    inspect_source(om,
         
     | 
| 
       23 
34 
     | 
    
         
             
                                   'file.rb',
         
     | 
| 
         @@ -12,6 +12,11 @@ module Rubocop 
     | 
|
| 
       12 
12 
     | 
    
         
             
                    expect(space.offences.map(&:message)).to eq(
         
     | 
| 
       13 
13 
     | 
    
         
             
                      ['Space missing after semicolon.'])
         
     | 
| 
       14 
14 
     | 
    
         
             
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  it 'does not crash if semicolon is the last character of the file' do
         
     | 
| 
      
 17 
     | 
    
         
            +
                    inspect_source(space, 'file.rb', ['x = 1;'])
         
     | 
| 
      
 18 
     | 
    
         
            +
                    expect(space.offences.map(&:message)).to be_empty
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
       15 
20 
     | 
    
         
             
                end
         
     | 
| 
       16 
21 
     | 
    
         
             
              end
         
     | 
| 
       17 
22 
     | 
    
         
             
            end
         
     | 
| 
         @@ -14,12 +14,25 @@ module Rubocop 
     | 
|
| 
       14 
14 
     | 
    
         
             
                      ['Use snake_case for symbols.'])
         
     | 
| 
       15 
15 
     | 
    
         
             
                  end
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
      
 17 
     | 
    
         
            +
                  it 'registers an offence for symbol used as hash label' do
         
     | 
| 
      
 18 
     | 
    
         
            +
                    inspect_source(snake_case, 'file.rb',
         
     | 
| 
      
 19 
     | 
    
         
            +
                                   ['{ ONE: 1, TWO: 2 }'])
         
     | 
| 
      
 20 
     | 
    
         
            +
                    expect(snake_case.offences.map(&:message)).to eq(
         
     | 
| 
      
 21 
     | 
    
         
            +
                      ['Use snake_case for symbols.'] * 2)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
       17 
24 
     | 
    
         
             
                  it 'accepts snake case in names' do
         
     | 
| 
       18 
25 
     | 
    
         
             
                    inspect_source(snake_case, 'file.rb',
         
     | 
| 
       19 
26 
     | 
    
         
             
                                   ['test = :good_idea'])
         
     | 
| 
       20 
27 
     | 
    
         
             
                    expect(snake_case.offences).to be_empty
         
     | 
| 
       21 
28 
     | 
    
         
             
                  end
         
     | 
| 
       22 
29 
     | 
    
         | 
| 
      
 30 
     | 
    
         
            +
                  it 'accepts snake case in hash label names' do
         
     | 
| 
      
 31 
     | 
    
         
            +
                    inspect_source(snake_case, 'file.rb',
         
     | 
| 
      
 32 
     | 
    
         
            +
                                   ['{ one: 1, one_more_3: 2 }'])
         
     | 
| 
      
 33 
     | 
    
         
            +
                    expect(snake_case.offences).to be_empty
         
     | 
| 
      
 34 
     | 
    
         
            +
                  end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
       23 
36 
     | 
    
         
             
                  it 'accepts snake case with a prefix @ in names' do
         
     | 
| 
       24 
37 
     | 
    
         
             
                    inspect_source(snake_case, 'file.rb',
         
     | 
| 
       25 
38 
     | 
    
         
             
                                   ['test = :@good_idea'])
         
     | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | 
         @@ -1,5 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # encoding: utf-8
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            require 'coveralls'
         
     | 
| 
      
 4 
     | 
    
         
            +
            Coveralls.wear!
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
       3 
6 
     | 
    
         
             
            if ENV['COVERAGE']
         
     | 
| 
       4 
7 
     | 
    
         
             
              require 'simplecov'
         
     | 
| 
       5 
8 
     | 
    
         
             
              SimpleCov.start
         
     | 
| 
         @@ -11,6 +14,9 @@ require 'rspec' 
     | 
|
| 
       11 
14 
     | 
    
         
             
            require 'rubocop'
         
     | 
| 
       12 
15 
     | 
    
         
             
            require 'rubocop/cli'
         
     | 
| 
       13 
16 
     | 
    
         | 
| 
      
 17 
     | 
    
         
            +
            # disable colors in specs
         
     | 
| 
      
 18 
     | 
    
         
            +
            Sickill::Rainbow.enabled = false
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
       14 
20 
     | 
    
         
             
            # Requires supporting files with custom matchers and macros, etc,
         
     | 
| 
       15 
21 
     | 
    
         
             
            # in ./support/ and its subdirectories.
         
     | 
| 
       16 
22 
     | 
    
         
             
            Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,8 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: rubocop
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.6. 
     | 
| 
       5 
     | 
    
         
            -
              prerelease: 
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.6.1
         
     | 
| 
       6 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       8 
7 
     | 
    
         
             
            - Bozhidar Batsov
         
     | 
| 
         @@ -12,25 +11,22 @@ cert_chain: [] 
     | 
|
| 
       12 
11 
     | 
    
         
             
            date: 2013-04-17 00:00:00.000000000 Z
         
     | 
| 
       13 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
     | 
    
         
            -
              name:  
     | 
| 
      
 14 
     | 
    
         
            +
              name: rainbow
         
     | 
| 
       16 
15 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       17 
     | 
    
         
            -
                none: false
         
     | 
| 
       18 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       19 
     | 
    
         
            -
                - -  
     | 
| 
      
 17 
     | 
    
         
            +
                - - '>='
         
     | 
| 
       20 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       21 
     | 
    
         
            -
                    version:  
     | 
| 
      
 19 
     | 
    
         
            +
                    version: 1.1.4
         
     | 
| 
       22 
20 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       23 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       24 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       25 
     | 
    
         
            -
                none: false
         
     | 
| 
       26 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       27 
     | 
    
         
            -
                - -  
     | 
| 
      
 24 
     | 
    
         
            +
                - - '>='
         
     | 
| 
       28 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       29 
     | 
    
         
            -
                    version:  
     | 
| 
      
 26 
     | 
    
         
            +
                    version: 1.1.4
         
     | 
| 
       30 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       31 
28 
     | 
    
         
             
              name: rake
         
     | 
| 
       32 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       33 
     | 
    
         
            -
                none: false
         
     | 
| 
       34 
30 
     | 
    
         
             
                requirements:
         
     | 
| 
       35 
31 
     | 
    
         
             
                - - ~>
         
     | 
| 
       36 
32 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -38,7 +34,6 @@ dependencies: 
     | 
|
| 
       38 
34 
     | 
    
         
             
              type: :development
         
     | 
| 
       39 
35 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       40 
36 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       41 
     | 
    
         
            -
                none: false
         
     | 
| 
       42 
37 
     | 
    
         
             
                requirements:
         
     | 
| 
       43 
38 
     | 
    
         
             
                - - ~>
         
     | 
| 
       44 
39 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -46,7 +41,6 @@ dependencies: 
     | 
|
| 
       46 
41 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       47 
42 
     | 
    
         
             
              name: rspec
         
     | 
| 
       48 
43 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       49 
     | 
    
         
            -
                none: false
         
     | 
| 
       50 
44 
     | 
    
         
             
                requirements:
         
     | 
| 
       51 
45 
     | 
    
         
             
                - - ~>
         
     | 
| 
       52 
46 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -54,7 +48,6 @@ dependencies: 
     | 
|
| 
       54 
48 
     | 
    
         
             
              type: :development
         
     | 
| 
       55 
49 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       56 
50 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       57 
     | 
    
         
            -
                none: false
         
     | 
| 
       58 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       59 
52 
     | 
    
         
             
                - - ~>
         
     | 
| 
       60 
53 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -62,7 +55,6 @@ dependencies: 
     | 
|
| 
       62 
55 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       63 
56 
     | 
    
         
             
              name: yard
         
     | 
| 
       64 
57 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       65 
     | 
    
         
            -
                none: false
         
     | 
| 
       66 
58 
     | 
    
         
             
                requirements:
         
     | 
| 
       67 
59 
     | 
    
         
             
                - - ~>
         
     | 
| 
       68 
60 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -70,7 +62,6 @@ dependencies: 
     | 
|
| 
       70 
62 
     | 
    
         
             
              type: :development
         
     | 
| 
       71 
63 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       72 
64 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       73 
     | 
    
         
            -
                none: false
         
     | 
| 
       74 
65 
     | 
    
         
             
                requirements:
         
     | 
| 
       75 
66 
     | 
    
         
             
                - - ~>
         
     | 
| 
       76 
67 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -78,7 +69,6 @@ dependencies: 
     | 
|
| 
       78 
69 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       79 
70 
     | 
    
         
             
              name: bundler
         
     | 
| 
       80 
71 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       81 
     | 
    
         
            -
                none: false
         
     | 
| 
       82 
72 
     | 
    
         
             
                requirements:
         
     | 
| 
       83 
73 
     | 
    
         
             
                - - ~>
         
     | 
| 
       84 
74 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -86,7 +76,6 @@ dependencies: 
     | 
|
| 
       86 
76 
     | 
    
         
             
              type: :development
         
     | 
| 
       87 
77 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       88 
78 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       89 
     | 
    
         
            -
                none: false
         
     | 
| 
       90 
79 
     | 
    
         
             
                requirements:
         
     | 
| 
       91 
80 
     | 
    
         
             
                - - ~>
         
     | 
| 
       92 
81 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -94,7 +83,6 @@ dependencies: 
     | 
|
| 
       94 
83 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       95 
84 
     | 
    
         
             
              name: simplecov
         
     | 
| 
       96 
85 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       97 
     | 
    
         
            -
                none: false
         
     | 
| 
       98 
86 
     | 
    
         
             
                requirements:
         
     | 
| 
       99 
87 
     | 
    
         
             
                - - ~>
         
     | 
| 
       100 
88 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -102,7 +90,6 @@ dependencies: 
     | 
|
| 
       102 
90 
     | 
    
         
             
              type: :development
         
     | 
| 
       103 
91 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       104 
92 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       105 
     | 
    
         
            -
                none: false
         
     | 
| 
       106 
93 
     | 
    
         
             
                requirements:
         
     | 
| 
       107 
94 
     | 
    
         
             
                - - ~>
         
     | 
| 
       108 
95 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
         @@ -134,7 +121,8 @@ files: 
     | 
|
| 
       134 
121 
     | 
    
         
             
            - lib/rubocop/cop/align_parameters.rb
         
     | 
| 
       135 
122 
     | 
    
         
             
            - lib/rubocop/cop/ampersands_pipes_vs_and_or.rb
         
     | 
| 
       136 
123 
     | 
    
         
             
            - lib/rubocop/cop/array_literal.rb
         
     | 
| 
       137 
     | 
    
         
            -
            - lib/rubocop/cop/ 
     | 
| 
      
 124 
     | 
    
         
            +
            - lib/rubocop/cop/ascii_comments.rb
         
     | 
| 
      
 125 
     | 
    
         
            +
            - lib/rubocop/cop/ascii_identifiers.rb
         
     | 
| 
       138 
126 
     | 
    
         
             
            - lib/rubocop/cop/avoid_class_vars.rb
         
     | 
| 
       139 
127 
     | 
    
         
             
            - lib/rubocop/cop/avoid_for.rb
         
     | 
| 
       140 
128 
     | 
    
         
             
            - lib/rubocop/cop/avoid_perl_backrefs.rb
         
     | 
| 
         @@ -195,7 +183,8 @@ files: 
     | 
|
| 
       195 
183 
     | 
    
         
             
            - spec/rubocop/cops/align_parameters_spec.rb
         
     | 
| 
       196 
184 
     | 
    
         
             
            - spec/rubocop/cops/ampersands_pipes_vs_and_or_spec.rb
         
     | 
| 
       197 
185 
     | 
    
         
             
            - spec/rubocop/cops/array_literal_spec.rb
         
     | 
| 
       198 
     | 
    
         
            -
            - spec/rubocop/cops/ 
     | 
| 
      
 186 
     | 
    
         
            +
            - spec/rubocop/cops/ascii_comments_spec.rb
         
     | 
| 
      
 187 
     | 
    
         
            +
            - spec/rubocop/cops/ascii_identifiers_spec.rb
         
     | 
| 
       199 
188 
     | 
    
         
             
            - spec/rubocop/cops/avoid_class_vars_spec.rb
         
     | 
| 
       200 
189 
     | 
    
         
             
            - spec/rubocop/cops/avoid_for_spec.rb
         
     | 
| 
       201 
190 
     | 
    
         
             
            - spec/rubocop/cops/avoid_perl_backrefs_spec.rb
         
     | 
| 
         @@ -263,30 +252,26 @@ files: 
     | 
|
| 
       263 
252 
     | 
    
         
             
            homepage: http://github.com/bbatsov/rubocop
         
     | 
| 
       264 
253 
     | 
    
         
             
            licenses:
         
     | 
| 
       265 
254 
     | 
    
         
             
            - MIT
         
     | 
| 
      
 255 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
       266 
256 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       267 
257 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       268 
258 
     | 
    
         
             
            require_paths:
         
     | 
| 
       269 
259 
     | 
    
         
             
            - lib
         
     | 
| 
       270 
260 
     | 
    
         
             
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
       271 
     | 
    
         
            -
              none: false
         
     | 
| 
       272 
261 
     | 
    
         
             
              requirements:
         
     | 
| 
       273 
     | 
    
         
            -
              - -  
     | 
| 
      
 262 
     | 
    
         
            +
              - - '>='
         
     | 
| 
       274 
263 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       275 
264 
     | 
    
         
             
                  version: 1.9.2
         
     | 
| 
       276 
265 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       277 
     | 
    
         
            -
              none: false
         
     | 
| 
       278 
266 
     | 
    
         
             
              requirements:
         
     | 
| 
       279 
     | 
    
         
            -
              - -  
     | 
| 
      
 267 
     | 
    
         
            +
              - - '>='
         
     | 
| 
       280 
268 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       281 
269 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       282 
     | 
    
         
            -
                  segments:
         
     | 
| 
       283 
     | 
    
         
            -
                  - 0
         
     | 
| 
       284 
     | 
    
         
            -
                  hash: 4221530219562804900
         
     | 
| 
       285 
270 
     | 
    
         
             
            requirements: []
         
     | 
| 
       286 
271 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       287 
     | 
    
         
            -
            rubygems_version:  
     | 
| 
      
 272 
     | 
    
         
            +
            rubygems_version: 2.0.3
         
     | 
| 
       288 
273 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       289 
     | 
    
         
            -
            specification_version:  
     | 
| 
      
 274 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
       290 
275 
     | 
    
         
             
            summary: Automatic Ruby code style checking tool.
         
     | 
| 
       291 
276 
     | 
    
         
             
            test_files:
         
     | 
| 
       292 
277 
     | 
    
         
             
            - spec/rubocop/cli_spec.rb
         
     | 
| 
         @@ -294,7 +279,8 @@ test_files: 
     | 
|
| 
       294 
279 
     | 
    
         
             
            - spec/rubocop/cops/align_parameters_spec.rb
         
     | 
| 
       295 
280 
     | 
    
         
             
            - spec/rubocop/cops/ampersands_pipes_vs_and_or_spec.rb
         
     | 
| 
       296 
281 
     | 
    
         
             
            - spec/rubocop/cops/array_literal_spec.rb
         
     | 
| 
       297 
     | 
    
         
            -
            - spec/rubocop/cops/ 
     | 
| 
      
 282 
     | 
    
         
            +
            - spec/rubocop/cops/ascii_comments_spec.rb
         
     | 
| 
      
 283 
     | 
    
         
            +
            - spec/rubocop/cops/ascii_identifiers_spec.rb
         
     | 
| 
       298 
284 
     | 
    
         
             
            - spec/rubocop/cops/avoid_class_vars_spec.rb
         
     | 
| 
       299 
285 
     | 
    
         
             
            - spec/rubocop/cops/avoid_for_spec.rb
         
     | 
| 
       300 
286 
     | 
    
         
             
            - spec/rubocop/cops/avoid_perl_backrefs_spec.rb
         
     | 
| 
         @@ -1,38 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'spec_helper'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            module Rubocop
         
     | 
| 
       6 
     | 
    
         
            -
              module Cop
         
     | 
| 
       7 
     | 
    
         
            -
                describe AsciiIdentifiersAndComments do
         
     | 
| 
       8 
     | 
    
         
            -
                  let(:ascii) { AsciiIdentifiersAndComments.new }
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                  it 'registers an offence for a variable name with non-ascii chars' do
         
     | 
| 
       11 
     | 
    
         
            -
                    inspect_source(ascii,
         
     | 
| 
       12 
     | 
    
         
            -
                                   'file.rb',
         
     | 
| 
       13 
     | 
    
         
            -
                                   ['älg = 1'])
         
     | 
| 
       14 
     | 
    
         
            -
                    expect(ascii.offences.size).to eq(1)
         
     | 
| 
       15 
     | 
    
         
            -
                    expect(ascii.offences.map(&:message))
         
     | 
| 
       16 
     | 
    
         
            -
                      .to eq([AsciiIdentifiersAndComments::ERROR_MESSAGE])
         
     | 
| 
       17 
     | 
    
         
            -
                  end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  it 'registers an offence for a comment with non-ascii chars' do
         
     | 
| 
       20 
     | 
    
         
            -
                    inspect_source(ascii,
         
     | 
| 
       21 
     | 
    
         
            -
                                   'file.rb',
         
     | 
| 
       22 
     | 
    
         
            -
                                   ['# 这是什么?'])
         
     | 
| 
       23 
     | 
    
         
            -
                    expect(ascii.offences.size).to eq(1)
         
     | 
| 
       24 
     | 
    
         
            -
                    expect(ascii.offences.map(&:message))
         
     | 
| 
       25 
     | 
    
         
            -
                      .to eq([AsciiIdentifiersAndComments::ERROR_MESSAGE])
         
     | 
| 
       26 
     | 
    
         
            -
                  end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                  it 'accepts comments and identifiers with only ascii chars' do
         
     | 
| 
       29 
     | 
    
         
            -
                    inspect_source(ascii,
         
     | 
| 
       30 
     | 
    
         
            -
                                   'file.rb',
         
     | 
| 
       31 
     | 
    
         
            -
                                   ['# AZaz1@$%~,;*_`|',
         
     | 
| 
       32 
     | 
    
         
            -
                                    'x.empty?'])
         
     | 
| 
       33 
     | 
    
         
            -
                    expect(ascii.offences.size).to eq(0)
         
     | 
| 
       34 
     | 
    
         
            -
                    expect(ascii.offences.map(&:message)).to be_empty
         
     | 
| 
       35 
     | 
    
         
            -
                  end
         
     | 
| 
       36 
     | 
    
         
            -
                end
         
     | 
| 
       37 
     | 
    
         
            -
              end
         
     | 
| 
       38 
     | 
    
         
            -
            end
         
     |