Skip to content

Commit b6e0039

Browse files
committed
Changes to support tddium parallelization.
1 parent e73f9cb commit b6e0039

File tree

1 file changed

+32
-15
lines changed

1 file changed

+32
-15
lines changed

lib/codeclimate-test-reporter.rb

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
require "digest/sha1"
33
require "net/https"
44
require "uri"
5+
require "tmpdir"
6+
require "securerandom"
57

68
module CodeClimate
79
class TestReporter
@@ -43,8 +45,31 @@ def self.post_results(result)
4345

4446
class Formatter
4547
def format(result)
46-
totals = Hash.new(0)
48+
print "Coverage = #{result.covered_percent.round(2)}%."
49+
50+
payload = to_payload(result)
51+
if tddium? || ENV["TO_FILE"]
52+
file_path = File.join(Dir.tmpdir, "coverage-worker-#{SecureRandom.uuid}.json")
53+
print "Coverage results saved to #{file_path}..."
54+
File.open(file_path, "w") { |file| file.write(payload.to_json) }
55+
else
56+
print "Sending report to #{API.host}... "
57+
API.post_results(payload)
58+
end
59+
60+
puts "done."
61+
true
62+
rescue => ex
63+
puts "\nCode Climate encountered an exception: #{ex.class}"
64+
puts ex.message
65+
ex.backtrace.each do |line|
66+
puts line
67+
end
68+
false
69+
end
4770

71+
def to_payload(result)
72+
totals = Hash.new(0)
4873
source_files = result.files.map do |file|
4974
totals[:total] += file.lines.count
5075
totals[:covered] += file.covered_lines.count
@@ -64,9 +89,7 @@ def format(result)
6489
}
6590
end
6691

67-
print "Coverage = #{result.covered_percent.round(2)}%. Sending report to #{API.host}... "
68-
69-
API.post_results({
92+
{
7093
repo_token: ENV["CODECLIMATE_REPO_TOKEN"],
7194
source_files: source_files,
7295
run_at: result.created_at,
@@ -86,17 +109,7 @@ def format(result)
86109
gem_version: VERSION
87110
},
88111
ci_service: ci_service_data
89-
})
90-
91-
puts "done."
92-
true
93-
rescue => ex
94-
puts "\nCode Climate encountered an exception: #{ex.class}"
95-
puts ex.message
96-
ex.backtrace.each do |line|
97-
puts line
98-
end
99-
false
112+
}
100113
end
101114

102115
def ci_service_data
@@ -161,6 +174,10 @@ def git_branch
161174
branch = [branch].flatten.first
162175
branch ? branch.gsub("* ","") : nil
163176
end
177+
178+
def tddium?
179+
ci_service_data && ci_service_data[:name] == "tddium"
180+
end
164181
end
165182

166183
def self.start

0 commit comments

Comments
 (0)