codeclimate-test-reporter 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile CHANGED
@@ -2,3 +2,11 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in codeclimate-test-reporter.gemspec
4
4
  gemspec
5
+
6
+ platform :ruby_19 do
7
+ gem "pry-debugger", group: :development
8
+ end
9
+
10
+ platform :ruby_21 do
11
+ gem "pry-byebug", group: :development
12
+ end
data/README.md CHANGED
@@ -9,8 +9,8 @@ Code Climate - [https://codeclimate.com](https://codeclimate.com)
9
9
 
10
10
  ## Installation
11
11
 
12
- This gem only works with Code Climate accounts, so if you don't have one the
13
- first step is to create an account at: [https://codeclimate.com](https://codeclimate.com). Then:
12
+ This gem requires a user, but not necessarily a paid account, on Code Climate, so if you don't have one the
13
+ first step is to signup at: [https://codeclimate.com](https://codeclimate.com). Then:
14
14
 
15
15
  1. Add this to your Gemfile:
16
16
 
@@ -24,5 +24,4 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "rspec"
25
25
  spec.add_development_dependency "artifice"
26
26
  spec.add_development_dependency "pry"
27
- spec.add_development_dependency "pry-debugger"
28
27
  end
@@ -15,23 +15,27 @@ module CodeClimate
15
15
  end
16
16
 
17
17
  def self.environment_variable_set?
18
- environment_variable_set = !!ENV["CODECLIMATE_REPO_TOKEN"]
19
- unless environment_variable_set
18
+ return @environment_variable_set if defined?(@environment_variable_set)
19
+
20
+ @environment_variable_set = !!ENV["CODECLIMATE_REPO_TOKEN"]
21
+ unless @environment_variable_set
20
22
  logger.info("Not reporting to Code Climate because ENV['CODECLIMATE_REPO_TOKEN'] is not set.")
21
23
  end
22
24
 
23
- environment_variable_set
25
+ @environment_variable_set
24
26
  end
25
27
 
26
28
  def self.run_on_current_branch?
27
- return true if configured_branch.nil?
29
+ return @run_on_current_branch if defined?(@run_on_current_branch)
30
+
31
+ @run_on_current_branch = true if configured_branch.nil?
32
+ @run_on_current_branch ||= !!(current_branch =~ /#{configured_branch}/i)
28
33
 
29
- run_on_current_branch = !!(current_branch =~ /#{configured_branch}/i)
30
- unless run_on_current_branch
34
+ unless @run_on_current_branch
31
35
  logger.info("Not reporting to Code Climate because #{configured_branch} is set as the reporting branch.")
32
36
  end
33
37
 
34
- run_on_current_branch
38
+ @run_on_current_branch
35
39
  end
36
40
 
37
41
  def self.configured_branch
@@ -37,6 +37,14 @@ module CodeClimate
37
37
  build_identifier: ENV['TDDIUM_SESSION_ID'],
38
38
  worker_id: ENV['TDDIUM_TID']
39
39
  }
40
+ elsif ENV['WERCKER']
41
+ {
42
+ name: "wercker",
43
+ build_identifier: ENV['WERCKER_BUILD_ID'],
44
+ build_url: ENV['WERCKER_BUILD_URL'],
45
+ branch: ENV['WERCKER_GIT_BRANCH'],
46
+ commit_sha: ENV['WERCKER_GIT_COMMIT']
47
+ }
40
48
  elsif ENV['CI_NAME'] =~ /codeship/i
41
49
  {
42
50
  name: "codeship",
@@ -53,8 +53,13 @@ module CodeClimate
53
53
  request = Net::HTTP::Post.new(uri.path)
54
54
  request["User-Agent"] = USER_AGENT
55
55
  request["Content-Type"] = "application/json"
56
- request["Content-Encoding"] = "gzip"
57
- request.body = compress(result.to_json)
56
+
57
+ if CodeClimate::TestReporter.configuration.gzip_request
58
+ request["Content-Encoding"] = "gzip"
59
+ request.body = compress(result.to_json)
60
+ else
61
+ request.body = result.to_json
62
+ end
58
63
 
59
64
  response = http.request(request)
60
65
 
@@ -19,7 +19,11 @@ module CodeClimate
19
19
  end
20
20
 
21
21
  class Configuration
22
- attr_accessor :branch, :logger, :profile, :path_prefix
22
+ attr_accessor :branch, :logger, :profile, :path_prefix, :gzip_request
23
+
24
+ def initialize
25
+ @gzip_request = true
26
+ end
23
27
 
24
28
  def logger
25
29
  @logger ||= default_logger
@@ -11,6 +11,8 @@ module CodeClimate
11
11
  module TestReporter
12
12
  class Formatter
13
13
  def format(result)
14
+ return true unless CodeClimate::TestReporter.run?
15
+
14
16
  print "Coverage = #{round(result.covered_percent, 2)}%. "
15
17
 
16
18
  payload = to_payload(result)
@@ -1,5 +1,5 @@
1
1
  module CodeClimate
2
2
  module TestReporter
3
- VERSION = "0.3.0"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
@@ -86,33 +86,47 @@ module CodeClimate::TestReporter
86
86
  end
87
87
 
88
88
  it "sends an http request with all the coverage information" do
89
+ allow(CodeClimate::TestReporter).to receive(:run?).and_return(true)
90
+
89
91
  app = FakeCodeClimateEndpoint.new
90
92
  Artifice.activate_with(app) do
91
93
  formatter.format(simplecov_result)
92
94
  end
93
- app.path_info.should == "/test_reports"
94
- app.content_type.should == "application/json"
95
- app.http_content_encoding.should == "gzip"
95
+
96
+ expect(app.path_info).to eq("/test_reports")
97
+ expect(app.content_type).to eq("application/json")
98
+ expect(app.http_content_encoding).to eq("gzip")
99
+
96
100
  uncompressed = inflate(app.request_body)
97
- JSON.parse(uncompressed).should == expected_request
98
- app.http_user_agent.should include("v#{CodeClimate::TestReporter::VERSION}")
101
+
102
+ expect(JSON.parse(uncompressed)).to eq(expected_request)
103
+ expect(app.http_user_agent).to include("v#{CodeClimate::TestReporter::VERSION}")
99
104
  end
100
105
  end
101
106
 
102
107
  describe '#short_filename' do
108
+ let(:formatter) { CodeClimate::TestReporter::Formatter.new }
103
109
  it 'should return the filename of the file relative to the SimpleCov root' do
104
- CodeClimate::TestReporter::Formatter.new.short_filename('file1').should == 'file1'
105
- CodeClimate::TestReporter::Formatter.new.short_filename("#{::SimpleCov.root}/file1").should == 'file1'
110
+ expect(formatter.short_filename('file1')).to eq('file1')
111
+ expect(formatter.short_filename("#{::SimpleCov.root}/file1")).to eq('file1')
106
112
  end
107
113
 
108
- it 'should include the path prefix if set' do
109
- CodeClimate::TestReporter.configure do |config|
110
- config.path_prefix = 'custom'
114
+ context "with path prefix" do
115
+ before do
116
+ CodeClimate::TestReporter.configure do |config|
117
+ config.path_prefix = 'custom'
118
+ end
111
119
  end
112
- CodeClimate::TestReporter::Formatter.new.short_filename('file1').should == 'custom/file1'
113
- CodeClimate::TestReporter::Formatter.new.short_filename("#{::SimpleCov.root}/file1").should == 'custom/file1'
114
- CodeClimate::TestReporter.configure do |config|
115
- config.path_prefix = nil
120
+
121
+ after do
122
+ CodeClimate::TestReporter.configure do |config|
123
+ config.path_prefix = nil
124
+ end
125
+ end
126
+
127
+ it 'should include the path prefix if set' do
128
+ expect(formatter.short_filename('file1')).to eq('custom/file1')
129
+ expect(formatter.short_filename("#{::SimpleCov.root}/file1")).to eq('custom/file1')
116
130
  end
117
131
  end
118
132
  end
@@ -1,33 +1,35 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe CodeClimate::TestReporter do
4
+ let(:reporter) { CodeClimate::TestReporter.dup }
4
5
 
5
6
  describe '.run_on_current_branch?' do
6
7
  it 'returns true if there is no branch configured' do
7
- allow(CodeClimate::TestReporter).to receive(:configured_branch).and_return(nil)
8
- expect(CodeClimate::TestReporter.run_on_current_branch?).to be_true
8
+ allow(reporter).to receive(:configured_branch).and_return(nil)
9
+ expect(reporter).to be_run_on_current_branch
9
10
  end
10
11
 
11
12
  it 'returns true if the current branch matches the configured branch' do
12
- allow(CodeClimate::TestReporter).to receive(:current_branch).and_return("master\n")
13
- allow(CodeClimate::TestReporter).to receive(:configured_branch).and_return(:master)
13
+ allow(reporter).to receive(:current_branch).and_return("master\n")
14
+ allow(reporter).to receive(:configured_branch).and_return(:master)
14
15
 
15
- expect(CodeClimate::TestReporter.run_on_current_branch?).to be_true
16
+ expect(reporter).to be_run_on_current_branch
16
17
  end
17
18
 
18
19
  it 'returns false if the current branch and configured branch dont match' do
19
- allow(CodeClimate::TestReporter).to receive(:current_branch).and_return("some-branch")
20
- allow(CodeClimate::TestReporter).to receive(:configured_branch).and_return(:master)
20
+ allow(reporter).to receive(:current_branch).and_return("some-branch")
21
+ allow(reporter).to receive(:configured_branch).and_return(:master)
21
22
 
22
- expect(CodeClimate::TestReporter.run_on_current_branch?).to be_false
23
+ expect(reporter).to_not be_run_on_current_branch
23
24
  end
24
25
 
25
26
  it 'logs a message if false' do
26
27
  expect_any_instance_of(Logger).to receive(:info)
27
- allow(CodeClimate::TestReporter).to receive(:current_branch).and_return("another-branch")
28
- allow(CodeClimate::TestReporter).to receive(:configured_branch).and_return(:master)
29
28
 
30
- CodeClimate::TestReporter.run_on_current_branch?
29
+ allow(reporter).to receive(:current_branch).and_return("another-branch")
30
+ allow(reporter).to receive(:configured_branch).and_return(:master)
31
+
32
+ reporter.run_on_current_branch?
31
33
  end
32
34
  end
33
35
 
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codeclimate-test-reporter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Bryan Helmkamp
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-01-24 00:00:00.000000000 Z
12
+ date: 2014-08-01 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: simplecov
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ! '>='
18
20
  - !ruby/object:Gem::Version
@@ -23,6 +25,7 @@ dependencies:
23
25
  type: :runtime
24
26
  prerelease: false
25
27
  version_requirements: !ruby/object:Gem::Requirement
28
+ none: false
26
29
  requirements:
27
30
  - - ! '>='
28
31
  - !ruby/object:Gem::Version
@@ -33,6 +36,7 @@ dependencies:
33
36
  - !ruby/object:Gem::Dependency
34
37
  name: bundler
35
38
  requirement: !ruby/object:Gem::Requirement
39
+ none: false
36
40
  requirements:
37
41
  - - ~>
38
42
  - !ruby/object:Gem::Version
@@ -40,6 +44,7 @@ dependencies:
40
44
  type: :development
41
45
  prerelease: false
42
46
  version_requirements: !ruby/object:Gem::Requirement
47
+ none: false
43
48
  requirements:
44
49
  - - ~>
45
50
  - !ruby/object:Gem::Version
@@ -47,6 +52,7 @@ dependencies:
47
52
  - !ruby/object:Gem::Dependency
48
53
  name: rake
49
54
  requirement: !ruby/object:Gem::Requirement
55
+ none: false
50
56
  requirements:
51
57
  - - ! '>='
52
58
  - !ruby/object:Gem::Version
@@ -54,6 +60,7 @@ dependencies:
54
60
  type: :development
55
61
  prerelease: false
56
62
  version_requirements: !ruby/object:Gem::Requirement
63
+ none: false
57
64
  requirements:
58
65
  - - ! '>='
59
66
  - !ruby/object:Gem::Version
@@ -61,6 +68,7 @@ dependencies:
61
68
  - !ruby/object:Gem::Dependency
62
69
  name: rspec
63
70
  requirement: !ruby/object:Gem::Requirement
71
+ none: false
64
72
  requirements:
65
73
  - - ! '>='
66
74
  - !ruby/object:Gem::Version
@@ -68,6 +76,7 @@ dependencies:
68
76
  type: :development
69
77
  prerelease: false
70
78
  version_requirements: !ruby/object:Gem::Requirement
79
+ none: false
71
80
  requirements:
72
81
  - - ! '>='
73
82
  - !ruby/object:Gem::Version
@@ -75,6 +84,7 @@ dependencies:
75
84
  - !ruby/object:Gem::Dependency
76
85
  name: artifice
77
86
  requirement: !ruby/object:Gem::Requirement
87
+ none: false
78
88
  requirements:
79
89
  - - ! '>='
80
90
  - !ruby/object:Gem::Version
@@ -82,6 +92,7 @@ dependencies:
82
92
  type: :development
83
93
  prerelease: false
84
94
  version_requirements: !ruby/object:Gem::Requirement
95
+ none: false
85
96
  requirements:
86
97
  - - ! '>='
87
98
  - !ruby/object:Gem::Version
@@ -89,6 +100,7 @@ dependencies:
89
100
  - !ruby/object:Gem::Dependency
90
101
  name: pry
91
102
  requirement: !ruby/object:Gem::Requirement
103
+ none: false
92
104
  requirements:
93
105
  - - ! '>='
94
106
  - !ruby/object:Gem::Version
@@ -96,20 +108,7 @@ dependencies:
96
108
  type: :development
97
109
  prerelease: false
98
110
  version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ! '>='
101
- - !ruby/object:Gem::Version
102
- version: '0'
103
- - !ruby/object:Gem::Dependency
104
- name: pry-debugger
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
111
+ none: false
113
112
  requirements:
114
113
  - - ! '>='
115
114
  - !ruby/object:Gem::Version
@@ -152,26 +151,27 @@ files:
152
151
  homepage: ''
153
152
  licenses:
154
153
  - MIT
155
- metadata: {}
156
154
  post_install_message:
157
155
  rdoc_options: []
158
156
  require_paths:
159
157
  - lib
160
158
  required_ruby_version: !ruby/object:Gem::Requirement
159
+ none: false
161
160
  requirements:
162
161
  - - ! '>='
163
162
  - !ruby/object:Gem::Version
164
163
  version: '0'
165
164
  required_rubygems_version: !ruby/object:Gem::Requirement
165
+ none: false
166
166
  requirements:
167
167
  - - ! '>='
168
168
  - !ruby/object:Gem::Version
169
169
  version: '0'
170
170
  requirements: []
171
171
  rubyforge_project:
172
- rubygems_version: 2.2.1
172
+ rubygems_version: 1.8.23.2
173
173
  signing_key:
174
- specification_version: 4
174
+ specification_version: 3
175
175
  summary: Uploads Ruby test coverage data to Code Climate.
176
176
  test_files:
177
177
  - spec/lib/ci_spec.rb
@@ -181,3 +181,4 @@ test_files:
181
181
  - spec/lib/payload_validator_spec.rb
182
182
  - spec/lib/test_reporter_spec.rb
183
183
  - spec/spec_helper.rb
184
+ has_rdoc:
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZGE4Y2ZjZDBmYzMyMzdhNzhkN2M1NGNhZWI5N2JkNWVmY2FjNzAxNA==
5
- data.tar.gz: !binary |-
6
- YTc5MjYzNTJmMGViZDdkNTQ5MzhkNjQ4MTE3ODYwMzM4OTk4NGIyMA==
7
- SHA512:
8
- metadata.gz: !binary |-
9
- MTM2ZTY3YWU4MjlmZTdlM2U2NjgyNDVlYTQ1NWI5Y2EwMmRkYTU0MjM3YTM3
10
- N2I4YzJjZWZmNmM3NGNlNTkwMDQzNTFjNmZhY2M2YWUwMzQ3YTA4MTc0ZTVi
11
- NGI2NjI5NmM3Yzg5MzEyNjJlNWZiYzE0NGIxZGFkNTczMDk3Mjg=
12
- data.tar.gz: !binary |-
13
- NDc4NzgxNWY5ZWQzMzA2NDBkYmYyMzY2MGJiNjVlYzhlZjZkNjdlMDYzZGY3
14
- MzNlNDI0NWJiZWM0YTA0M2U1ZmIzYTg2NDQ1OTIzODEwYjdlMDJkZTVlMTRm
15
- ZjM3YWFiNmVkZTY0ZWNjNTIyODIzNjZmNmEyNTA4YWI5Y2VlZTE=