codeclimate-test-reporter 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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=