cane 2.5.0 → 2.5.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.
- data/HISTORY.md +7 -0
 - data/README.md +3 -16
 - data/lib/cane/doc_check.rb +1 -1
 - data/lib/cane/file.rb +1 -1
 - data/lib/cane/threshold_check.rb +1 -1
 - data/lib/cane/version.rb +1 -1
 - data/spec/doc_check_spec.rb +4 -0
 - data/spec/threshold_check_spec.rb +16 -0
 - metadata +38 -13
 
    
        data/HISTORY.md
    CHANGED
    
    | 
         @@ -1,5 +1,12 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Cane History
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            ## 2.5.1 - 26 January 2013 (93819f19)
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            * Feature: documentation check supports `.mdown` and `.rdoc` extensions.
         
     | 
| 
      
 6 
     | 
    
         
            +
            * Feature: expanded threshold regex to support `coverage/.last_run.json` from
         
     | 
| 
      
 7 
     | 
    
         
            +
              `SimpleCov`.
         
     | 
| 
      
 8 
     | 
    
         
            +
            * Compat: Ruby 2.0 compatibility.
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
       3 
10 
     | 
    
         
             
            ## 2.5.0 - 17 November 2012 (628cc1e9)
         
     | 
| 
       4 
11 
     | 
    
         | 
| 
       5 
12 
     | 
    
         
             
            * Feature: `--doc-exclude` option to exclude globs from documentation checks.
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -112,26 +112,13 @@ recommended). 
     | 
|
| 
       112 
112 
     | 
    
         | 
| 
       113 
113 
     | 
    
         
             
            Any value in a file can be used as a threshold:
         
     | 
| 
       114 
114 
     | 
    
         | 
| 
       115 
     | 
    
         
            -
                > echo "89" > coverage 
     | 
| 
       116 
     | 
    
         
            -
                > cane --gte 'coverage 
     | 
| 
      
 115 
     | 
    
         
            +
                > echo "89" > coverage/.last_run.json
         
     | 
| 
      
 116 
     | 
    
         
            +
                > cane --gte 'coverage/.last_run.json,90'
         
     | 
| 
       117 
117 
     | 
    
         | 
| 
       118 
118 
     | 
    
         
             
                Quality threshold crossed
         
     | 
| 
       119 
119 
     | 
    
         | 
| 
       120 
120 
     | 
    
         
             
                  coverage/covered_percent is 89, should be >= 90
         
     | 
| 
       121 
121 
     | 
    
         | 
| 
       122 
     | 
    
         
            -
            You can use a `SimpleCov` formatter to create the required file:
         
     | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
       124 
     | 
    
         
            -
                class SimpleCov::Formatter::QualityFormatter
         
     | 
| 
       125 
     | 
    
         
            -
                  def format(result)
         
     | 
| 
       126 
     | 
    
         
            -
                    SimpleCov::Formatter::HTMLFormatter.new.format(result)
         
     | 
| 
       127 
     | 
    
         
            -
                    File.open("coverage/covered_percent", "w") do |f|
         
     | 
| 
       128 
     | 
    
         
            -
                      f.puts result.source_files.covered_percent.to_f
         
     | 
| 
       129 
     | 
    
         
            -
                    end
         
     | 
| 
       130 
     | 
    
         
            -
                  end
         
     | 
| 
       131 
     | 
    
         
            -
                end
         
     | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
       133 
     | 
    
         
            -
                SimpleCov.formatter = SimpleCov::Formatter::QualityFormatter
         
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
       135 
122 
     | 
    
         
             
            ## Implementing your own checks
         
     | 
| 
       136 
123 
     | 
    
         | 
| 
       137 
124 
     | 
    
         
             
            Checks must implement:
         
     | 
| 
         @@ -209,7 +196,7 @@ A good README should include at a minimum: 
     | 
|
| 
       209 
196 
     | 
    
         
             
            * Status of the project (spike, active development, stable in production).
         
     | 
| 
       210 
197 
     | 
    
         
             
            * Compatibility notes (1.8, 1.9, JRuby).
         
     | 
| 
       211 
198 
     | 
    
         
             
            * Any interesting technical or architectural decisions made on the project
         
     | 
| 
       212 
     | 
    
         
            -
              (this could be as simple as a to an external design document).
         
     | 
| 
      
 199 
     | 
    
         
            +
              (this could be as simple as a link to an external design document).
         
     | 
| 
       213 
200 
     | 
    
         | 
| 
       214 
201 
     | 
    
         
             
            ## Compatibility
         
     | 
| 
       215 
202 
     | 
    
         | 
    
        data/lib/cane/doc_check.rb
    CHANGED
    
    | 
         @@ -62,7 +62,7 @@ module Cane 
     | 
|
| 
       62 
62 
     | 
    
         
             
                  return result if opts[:no_readme]
         
     | 
| 
       63 
63 
     | 
    
         | 
| 
       64 
64 
     | 
    
         
             
                  filenames = ['README', 'readme']
         
     | 
| 
       65 
     | 
    
         
            -
                  extensions = ['', '.txt', '.md']
         
     | 
| 
      
 65 
     | 
    
         
            +
                  extensions = ['', '.txt', '.md', '.mdown', '.rdoc']
         
     | 
| 
       66 
66 
     | 
    
         
             
                  combinations = filenames.product(extensions)
         
     | 
| 
       67 
67 
     | 
    
         | 
| 
       68 
68 
     | 
    
         
             
                  if combinations.none? {|n, x| Cane::File.exists?(n + x) }
         
     | 
    
        data/lib/cane/file.rb
    CHANGED
    
    
    
        data/lib/cane/threshold_check.rb
    CHANGED
    
    
    
        data/lib/cane/version.rb
    CHANGED
    
    
    
        data/spec/doc_check_spec.rb
    CHANGED
    
    | 
         @@ -59,10 +59,14 @@ class Doc; end 
     | 
|
| 
       59 
59 
     | 
    
         
             
                stub_const("Cane::File", file)
         
     | 
| 
       60 
60 
     | 
    
         
             
                file.should_receive(:exists?).with("README").and_return(false)
         
     | 
| 
       61 
61 
     | 
    
         
             
                file.should_receive(:exists?).with("README.md").and_return(false)
         
     | 
| 
      
 62 
     | 
    
         
            +
                file.should_receive(:exists?).with("README.mdown").and_return(false)
         
     | 
| 
       62 
63 
     | 
    
         
             
                file.should_receive(:exists?).with("README.txt").and_return(false)
         
     | 
| 
      
 64 
     | 
    
         
            +
                file.should_receive(:exists?).with("README.rdoc").and_return(false)
         
     | 
| 
       63 
65 
     | 
    
         
             
                file.should_receive(:exists?).with("readme").and_return(false)
         
     | 
| 
       64 
66 
     | 
    
         
             
                file.should_receive(:exists?).with("readme.md").and_return(false)
         
     | 
| 
      
 67 
     | 
    
         
            +
                file.should_receive(:exists?).with("readme.mdown").and_return(false)
         
     | 
| 
       65 
68 
     | 
    
         
             
                file.should_receive(:exists?).with("readme.txt").and_return(false)
         
     | 
| 
      
 69 
     | 
    
         
            +
                file.should_receive(:exists?).with("readme.rdoc").and_return(false)
         
     | 
| 
       66 
70 
     | 
    
         | 
| 
       67 
71 
     | 
    
         
             
                violations = check("").violations
         
     | 
| 
       68 
72 
     | 
    
         
             
                violations.length.should == 1
         
     | 
| 
         @@ -4,6 +4,16 @@ require 'cane/threshold_check' 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            describe Cane::ThresholdCheck do
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
      
 7 
     | 
    
         
            +
              let(:simplecov_last_run) do
         
     | 
| 
      
 8 
     | 
    
         
            +
                <<-ENDL
         
     | 
| 
      
 9 
     | 
    
         
            +
                {
         
     | 
| 
      
 10 
     | 
    
         
            +
                  "result": {
         
     | 
| 
      
 11 
     | 
    
         
            +
                    "covered_percent": 93.88
         
     | 
| 
      
 12 
     | 
    
         
            +
                  }
         
     | 
| 
      
 13 
     | 
    
         
            +
                }
         
     | 
| 
      
 14 
     | 
    
         
            +
                ENDL
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       7 
17 
     | 
    
         
             
              context "checking violations" do
         
     | 
| 
       8 
18 
     | 
    
         | 
| 
       9 
19 
     | 
    
         
             
                context "when the current coverage cannot be read" do
         
     | 
| 
         @@ -45,6 +55,12 @@ describe Cane::ThresholdCheck do 
     | 
|
| 
       45 
55 
     | 
    
         
             
                  limit = subject.normalized_limit("/File.does.not.exist")
         
     | 
| 
       46 
56 
     | 
    
         
             
                  limit.should be_a Cane::ThresholdCheck::UnavailableValue
         
     | 
| 
       47 
57 
     | 
    
         
             
                end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                it 'normalizes a json file to a float' do
         
     | 
| 
      
 61 
     | 
    
         
            +
                  subject.normalized_limit(make_file(simplecov_last_run)).should == 93.88
         
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
       48 
64 
     | 
    
         
             
              end
         
     | 
| 
       49 
65 
     | 
    
         | 
| 
       50 
66 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: cane
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2.5. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.5.1
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,11 +9,11 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date:  
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2013-01-26 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: parallel
         
     | 
| 
       16 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       17 
17 
     | 
    
         
             
                none: false
         
     | 
| 
       18 
18 
     | 
    
         
             
                requirements:
         
     | 
| 
       19 
19 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -21,10 +21,15 @@ dependencies: 
     | 
|
| 
       21 
21 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       22 
22 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       23 
23 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       24 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 25 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 26 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 27 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 28 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 29 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       25 
30 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       26 
31 
     | 
    
         
             
              name: rspec
         
     | 
| 
       27 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 32 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       28 
33 
     | 
    
         
             
                none: false
         
     | 
| 
       29 
34 
     | 
    
         
             
                requirements:
         
     | 
| 
       30 
35 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -32,10 +37,15 @@ dependencies: 
     | 
|
| 
       32 
37 
     | 
    
         
             
                    version: '2.0'
         
     | 
| 
       33 
38 
     | 
    
         
             
              type: :development
         
     | 
| 
       34 
39 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       35 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 40 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 41 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 42 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 43 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 44 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 45 
     | 
    
         
            +
                    version: '2.0'
         
     | 
| 
       36 
46 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       37 
47 
     | 
    
         
             
              name: rake
         
     | 
| 
       38 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 48 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       39 
49 
     | 
    
         
             
                none: false
         
     | 
| 
       40 
50 
     | 
    
         
             
                requirements:
         
     | 
| 
       41 
51 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -43,10 +53,15 @@ dependencies: 
     | 
|
| 
       43 
53 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       44 
54 
     | 
    
         
             
              type: :development
         
     | 
| 
       45 
55 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       46 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 56 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 57 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 58 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 59 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 60 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 61 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       47 
62 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       48 
63 
     | 
    
         
             
              name: simplecov
         
     | 
| 
       49 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 64 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       50 
65 
     | 
    
         
             
                none: false
         
     | 
| 
       51 
66 
     | 
    
         
             
                requirements:
         
     | 
| 
       52 
67 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -54,10 +69,15 @@ dependencies: 
     | 
|
| 
       54 
69 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       55 
70 
     | 
    
         
             
              type: :development
         
     | 
| 
       56 
71 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       57 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 72 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 73 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 74 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 75 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 76 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 77 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       58 
78 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       59 
79 
     | 
    
         
             
              name: rspec-fire
         
     | 
| 
       60 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 80 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       61 
81 
     | 
    
         
             
                none: false
         
     | 
| 
       62 
82 
     | 
    
         
             
                requirements:
         
     | 
| 
       63 
83 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -65,7 +85,12 @@ dependencies: 
     | 
|
| 
       65 
85 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       66 
86 
     | 
    
         
             
              type: :development
         
     | 
| 
       67 
87 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       68 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 88 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 89 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 90 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 91 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 92 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 93 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       69 
94 
     | 
    
         
             
            description: Fails your build if code quality thresholds are not met
         
     | 
| 
       70 
95 
     | 
    
         
             
            email:
         
     | 
| 
       71 
96 
     | 
    
         
             
            - xavier@squareup.com
         
     | 
| 
         @@ -129,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       129 
154 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       130 
155 
     | 
    
         
             
            requirements: []
         
     | 
| 
       131 
156 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       132 
     | 
    
         
            -
            rubygems_version: 1.8. 
     | 
| 
      
 157 
     | 
    
         
            +
            rubygems_version: 1.8.23
         
     | 
| 
       133 
158 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       134 
159 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       135 
160 
     | 
    
         
             
            summary: Fails your build if code quality thresholds are not met. Provides complexity
         
     |