codecov 0.2.7 → 0.2.12
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.
- checksums.yaml +4 -4
- data/lib/codecov.rb +49 -16
- data/test/test_codecov.rb +48 -0
- metadata +6 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98728653c21cce7decd7a9b031e54e950da789d70c464bb61e53e1964372ac1d
|
4
|
+
data.tar.gz: 8d45300d929ff5bd39cb5cfb562960ef1bf3b36b1f51754376f25c8ac8ae3a31
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bdd1f35739f17cc5110ea0c2fa51bf4939812b96ff96009311dfb52ea67b63107cdbfbb8ad6e9b76f1cdc1104a136407bf1f9e89d1509c717131d9b03e62a986
|
7
|
+
data.tar.gz: 84673f1a411a1b7746b04448a79aa9a84b3e5606d14f7c70b6adee66be765f66ba2caed073cda2dc837788b7a67cc3a0c6c232655533e1170ea0865b30f77c93
|
data/lib/codecov.rb
CHANGED
@@ -4,11 +4,10 @@ require 'uri'
|
|
4
4
|
require 'json'
|
5
5
|
require 'net/http'
|
6
6
|
require 'simplecov'
|
7
|
-
require 'colorize'
|
8
7
|
require 'zlib'
|
9
8
|
|
10
9
|
class SimpleCov::Formatter::Codecov
|
11
|
-
VERSION = '0.2.
|
10
|
+
VERSION = '0.2.12'
|
12
11
|
|
13
12
|
### CIs
|
14
13
|
RECOGNIZED_CIS = [
|
@@ -18,6 +17,7 @@ class SimpleCov::Formatter::Codecov
|
|
18
17
|
BITRISE = 'Bitrise CI',
|
19
18
|
BUILDKITE = 'Buildkite CI',
|
20
19
|
CIRCLE = 'Circle CI',
|
20
|
+
CODEBUILD = 'Codebuild CI',
|
21
21
|
CODESHIP = 'Codeship CI',
|
22
22
|
DRONEIO = 'Drone CI',
|
23
23
|
GITHUB = 'GitHub Actions',
|
@@ -59,6 +59,8 @@ class SimpleCov::Formatter::Codecov
|
|
59
59
|
BUILDKITE
|
60
60
|
elsif (ENV['CI'] == 'true') && (ENV['CIRCLECI'] == 'true')
|
61
61
|
CIRCLE
|
62
|
+
elsif ENV['CODEBUILD_CI'] == 'true'
|
63
|
+
CODEBUILD
|
62
64
|
elsif (ENV['CI'] == 'true') && (ENV['CI_NAME'] == 'codeship')
|
63
65
|
CODESHIP
|
64
66
|
elsif ((ENV['CI'] == 'true') || (ENV['CI'] == 'drone')) && (ENV['DRONE'] == 'true')
|
@@ -86,7 +88,7 @@ class SimpleCov::Formatter::Codecov
|
|
86
88
|
end
|
87
89
|
|
88
90
|
if !RECOGNIZED_CIS.include?(ci)
|
89
|
-
puts ['x>'
|
91
|
+
puts [red('x>'), 'No CI provider detected.'].join(' ')
|
90
92
|
else
|
91
93
|
puts "==> #{ci} detected"
|
92
94
|
end
|
@@ -158,6 +160,18 @@ class SimpleCov::Formatter::Codecov
|
|
158
160
|
params[:pr] = ENV['CIRCLE_PR_NUMBER']
|
159
161
|
params[:branch] = ENV['CIRCLE_BRANCH']
|
160
162
|
params[:commit] = ENV['CIRCLE_SHA1']
|
163
|
+
when CODEBUILD
|
164
|
+
# https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html
|
165
|
+
params[:service] = 'codebuild'
|
166
|
+
params[:branch] = ENV['CODEBUILD_WEBHOOK_HEAD_REF'].split('/')[2]
|
167
|
+
params[:build] = ENV['CODEBUILD_BUILD_ID']
|
168
|
+
params[:commit] = ENV['CODEBUILD_RESOLVED_SOURCE_VERSION']
|
169
|
+
params[:job] = ENV['CODEBUILD_BUILD_ID']
|
170
|
+
params[:slug] = ENV['CODEBUILD_SOURCE_REPO_URL'].match(/.*github.com\/(?<slug>.*).git/)['slug']
|
171
|
+
params[:pr] = if ENV['CODEBUILD_SOURCE_VERSION']
|
172
|
+
matched = ENV['CODEBUILD_SOURCE_VERSION'].match(%r{pr/(?<pr>.*)})
|
173
|
+
matched.nil? ? ENV['CODEBUILD_SOURCE_VERSION'] : matched['pr']
|
174
|
+
end
|
161
175
|
when CODESHIP
|
162
176
|
# https://www.codeship.io/documentation/continuous-integration/set-environment-variables/
|
163
177
|
params[:service] = 'codeship'
|
@@ -308,6 +322,7 @@ class SimpleCov::Formatter::Codecov
|
|
308
322
|
puts 'Error uploading coverage reports to Codecov. Sorry'
|
309
323
|
puts e.class.name
|
310
324
|
puts e
|
325
|
+
puts "Backtrace:\n\t#{e.backtrace}"
|
311
326
|
return response
|
312
327
|
end
|
313
328
|
|
@@ -325,7 +340,7 @@ class SimpleCov::Formatter::Codecov
|
|
325
340
|
end
|
326
341
|
|
327
342
|
def gzip_report(report)
|
328
|
-
puts ['==>'
|
343
|
+
puts [green('==>'), 'Gzipping contents'].join(' ')
|
329
344
|
|
330
345
|
io = StringIO.new
|
331
346
|
gzip = Zlib::GzipWriter.new(io)
|
@@ -351,7 +366,7 @@ class SimpleCov::Formatter::Codecov
|
|
351
366
|
report['params'] = params
|
352
367
|
report['query'] = query
|
353
368
|
|
354
|
-
puts ['==>'
|
369
|
+
puts [green('==>'), 'Uploading reports'].join(' ')
|
355
370
|
puts " url: #{url}"
|
356
371
|
puts " query: #{query_without_token}"
|
357
372
|
|
@@ -369,7 +384,7 @@ class SimpleCov::Formatter::Codecov
|
|
369
384
|
https = Net::HTTP.new(uri.host, uri.port)
|
370
385
|
https.use_ssl = !url.match(/^https/).nil?
|
371
386
|
|
372
|
-
puts ['-> '
|
387
|
+
puts [green('-> '), 'Pinging Codecov'].join(' ')
|
373
388
|
puts "#{url}#{uri.path}?#{query_without_token}"
|
374
389
|
|
375
390
|
req = Net::HTTP::Post.new(
|
@@ -382,13 +397,13 @@ class SimpleCov::Formatter::Codecov
|
|
382
397
|
)
|
383
398
|
response = retry_request(req, https)
|
384
399
|
if !response&.code || response.code == '400'
|
385
|
-
puts response&.body
|
400
|
+
puts red(response&.body)
|
386
401
|
return false
|
387
402
|
end
|
388
403
|
|
389
404
|
reports_url = response.body.lines[0]
|
390
405
|
s3target = response.body.lines[1]
|
391
|
-
puts ['-> '
|
406
|
+
puts [green('-> '), 'Uploading to'].join(' ')
|
392
407
|
puts s3target
|
393
408
|
|
394
409
|
uri = URI(s3target)
|
@@ -403,7 +418,7 @@ class SimpleCov::Formatter::Codecov
|
|
403
418
|
)
|
404
419
|
req.body = report
|
405
420
|
res = retry_request(req, https)
|
406
|
-
if res
|
421
|
+
if res&.body == ''
|
407
422
|
{
|
408
423
|
'uploaded' => true,
|
409
424
|
'url' => reports_url,
|
@@ -413,8 +428,8 @@ class SimpleCov::Formatter::Codecov
|
|
413
428
|
'message' => 'Coverage reports upload successfully'
|
414
429
|
}.to_json
|
415
430
|
else
|
416
|
-
puts ['-> '
|
417
|
-
puts res
|
431
|
+
puts [black('-> '), 'Could not upload reports via v4 API, defaulting to v2'].join(' ')
|
432
|
+
puts red(res&.body || 'nil')
|
418
433
|
nil
|
419
434
|
end
|
420
435
|
end
|
@@ -424,7 +439,7 @@ class SimpleCov::Formatter::Codecov
|
|
424
439
|
https = Net::HTTP.new(uri.host, uri.port)
|
425
440
|
https.use_ssl = !url.match(/^https/).nil?
|
426
441
|
|
427
|
-
puts ['-> '
|
442
|
+
puts [green('-> '), 'Uploading to Codecov'].join(' ')
|
428
443
|
puts "#{url}#{uri.path}?#{query_without_token}"
|
429
444
|
|
430
445
|
req = Net::HTTP::Post.new(
|
@@ -445,7 +460,7 @@ class SimpleCov::Formatter::Codecov
|
|
445
460
|
if report['result']['uploaded']
|
446
461
|
puts " View reports at #{report['result']['url']}"
|
447
462
|
else
|
448
|
-
puts ' X> Failed to upload coverage reports'
|
463
|
+
puts red(' X> Failed to upload coverage reports')
|
449
464
|
end
|
450
465
|
end
|
451
466
|
|
@@ -497,16 +512,21 @@ class SimpleCov::Formatter::Codecov
|
|
497
512
|
].freeze
|
498
513
|
|
499
514
|
invalid_directories = [
|
500
|
-
'node_modules/'
|
515
|
+
'node_modules/',
|
516
|
+
'public/',
|
517
|
+
'storage/',
|
518
|
+
'tmp/',
|
519
|
+
'vendor/'
|
501
520
|
]
|
502
521
|
|
503
|
-
puts ['==>'
|
522
|
+
puts [green('==>'), 'Appending file network'].join(' ')
|
504
523
|
network = []
|
505
524
|
Dir['**/*'].keep_if do |file|
|
506
|
-
if File.file?(file) && !file.end_with?(*invalid_file_types) &&
|
525
|
+
if File.file?(file) && !file.end_with?(*invalid_file_types) && invalid_directories.none? { |dir| file.include?(dir) }
|
507
526
|
network.push(file)
|
508
527
|
end
|
509
528
|
end
|
529
|
+
|
510
530
|
network.push('<<<<<< network')
|
511
531
|
network
|
512
532
|
end
|
@@ -586,4 +606,17 @@ class SimpleCov::Formatter::Codecov
|
|
586
606
|
|
587
607
|
true
|
588
608
|
end
|
609
|
+
|
610
|
+
# Convenience color methods
|
611
|
+
def black(str)
|
612
|
+
str.nil? ? '' : "\e[30m#{str}\e[0m"
|
613
|
+
end
|
614
|
+
|
615
|
+
def red(str)
|
616
|
+
str.nil? ? '' : "\e[31m#{str}\e[0m"
|
617
|
+
end
|
618
|
+
|
619
|
+
def green(str)
|
620
|
+
str.nil? ? '' : "\e[32m#{str}\e[0m"
|
621
|
+
end
|
589
622
|
end
|
data/test/test_codecov.rb
CHANGED
@@ -167,6 +167,12 @@ class TestCodecov < Minitest::Test
|
|
167
167
|
ENV['CIRCLE_PROJECT_USERNAME'] = nil
|
168
168
|
ENV['CIRCLE_SHA1'] = nil
|
169
169
|
ENV['CIRCLECI'] = nil
|
170
|
+
ENV['CODEBUILD_CI'] = nil
|
171
|
+
ENV['CODEBUILD_BUILD_ID'] = nil
|
172
|
+
ENV['CODEBUILD_RESOLVED_SOURCE_VERSION'] = nil
|
173
|
+
ENV['CODEBUILD_WEBHOOK_HEAD_REF'] = nil
|
174
|
+
ENV['CODEBUILD_SOURCE_VERSION'] = nil
|
175
|
+
ENV['CODEBUILD_SOURCE_REPO_URL'] = nil
|
170
176
|
ENV['CODECOV_ENV'] = nil
|
171
177
|
ENV['CODECOV_SLUG'] = nil
|
172
178
|
ENV['CODECOV_TOKEN'] = nil
|
@@ -612,6 +618,48 @@ class TestCodecov < Minitest::Test
|
|
612
618
|
assert_equal('f881216b-b5c0-4eb1-8f21-b51887d1d506', result['params']['token'])
|
613
619
|
end
|
614
620
|
|
621
|
+
def test_codebuild
|
622
|
+
ENV['CODEBUILD_CI'] = "true"
|
623
|
+
ENV['CODEBUILD_BUILD_ID'] = "codebuild-project:458dq3q8-7354-4513-8702-ea7b9c81efb3"
|
624
|
+
ENV['CODEBUILD_RESOLVED_SOURCE_VERSION'] = 'd653b934ed59c1a785cc1cc79d08c9aaa4eba73b'
|
625
|
+
ENV['CODEBUILD_WEBHOOK_HEAD_REF'] = 'refs/heads/master'
|
626
|
+
ENV['CODEBUILD_SOURCE_VERSION'] = 'pr/123'
|
627
|
+
ENV['CODEBUILD_SOURCE_REPO_URL'] = 'https://github.com/owner/repo.git'
|
628
|
+
ENV['CODECOV_TOKEN'] = 'f881216b-b5c0-4eb1-8f21-b51887d1d506'
|
629
|
+
|
630
|
+
result = upload
|
631
|
+
|
632
|
+
assert_equal("codebuild", result['params'][:service])
|
633
|
+
assert_equal("d653b934ed59c1a785cc1cc79d08c9aaa4eba73b", result['params'][:commit])
|
634
|
+
assert_equal("codebuild-project:458dq3q8-7354-4513-8702-ea7b9c81efb3", result['params'][:build])
|
635
|
+
assert_equal("codebuild-project:458dq3q8-7354-4513-8702-ea7b9c81efb3", result['params'][:job])
|
636
|
+
assert_equal("owner/repo", result['params'][:slug])
|
637
|
+
assert_equal("master", result['params'][:branch])
|
638
|
+
assert_equal("123", result['params'][:pr])
|
639
|
+
assert_equal('f881216b-b5c0-4eb1-8f21-b51887d1d506', result['params']['token'])
|
640
|
+
end
|
641
|
+
|
642
|
+
def test_codebuild_source_version_is_other_than_pr_number
|
643
|
+
ENV['CODEBUILD_CI'] = 'true'
|
644
|
+
ENV['CODEBUILD_BUILD_ID'] = 'codebuild-project:458dq3q8-7354-4513-8702-ea7b9c81efb3'
|
645
|
+
ENV['CODEBUILD_RESOLVED_SOURCE_VERSION'] = 'd653b934ed59c1a785cc1cc79d08c9aaa4eba73b'
|
646
|
+
ENV['CODEBUILD_WEBHOOK_HEAD_REF'] = 'refs/heads/master'
|
647
|
+
ENV['CODEBUILD_SOURCE_VERSION'] = 'git-commit-hash-12345'
|
648
|
+
ENV['CODEBUILD_SOURCE_REPO_URL'] = 'https://github.com/owner/repo.git'
|
649
|
+
ENV['CODECOV_TOKEN'] = 'f881216b-b5c0-4eb1-8f21-b51887d1d506'
|
650
|
+
|
651
|
+
result = upload
|
652
|
+
|
653
|
+
assert_equal('codebuild', result['params'][:service])
|
654
|
+
assert_equal('d653b934ed59c1a785cc1cc79d08c9aaa4eba73b', result['params'][:commit])
|
655
|
+
assert_equal('codebuild-project:458dq3q8-7354-4513-8702-ea7b9c81efb3', result['params'][:build])
|
656
|
+
assert_equal('git-commit-hash-12345', result['params'][:pr])
|
657
|
+
assert_equal('owner/repo', result['params'][:slug])
|
658
|
+
assert_equal('master', result['params'][:branch])
|
659
|
+
assert_equal('git-commit-hash-12345', result['params'][:pr])
|
660
|
+
assert_equal('f881216b-b5c0-4eb1-8f21-b51887d1d506', result['params']['token'])
|
661
|
+
end
|
662
|
+
|
615
663
|
def test_filenames_are_shortened_correctly
|
616
664
|
ENV['CODECOV_TOKEN'] = 'f881216b-b5c0-4eb1-8f21-b51887d1d506'
|
617
665
|
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: codecov
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- codecov
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: colorize
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: json
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -149,7 +135,7 @@ homepage: https://github.com/codecov/codecov-ruby
|
|
149
135
|
licenses:
|
150
136
|
- MIT
|
151
137
|
metadata: {}
|
152
|
-
post_install_message:
|
138
|
+
post_install_message:
|
153
139
|
rdoc_options: []
|
154
140
|
require_paths:
|
155
141
|
- lib
|
@@ -164,8 +150,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
150
|
- !ruby/object:Gem::Version
|
165
151
|
version: '0'
|
166
152
|
requirements: []
|
167
|
-
rubygems_version: 3.
|
168
|
-
signing_key:
|
153
|
+
rubygems_version: 3.0.3
|
154
|
+
signing_key:
|
169
155
|
specification_version: 4
|
170
156
|
summary: hosted code coverage ruby/rails reporter
|
171
157
|
test_files:
|