codacy-coverage 2.1.0 → 2.1.4
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 +5 -5
- data/.circleci/config.yml +105 -0
- data/.circleci/setup-rubygems.sh +3 -0
- data/.github/CODEOWNERS +4 -0
- data/.gitignore +0 -1
- data/Gemfile.lock +43 -0
- data/bin/codacy_final_reporter +4 -0
- data/codacy-coverage.gemspec +1 -1
- data/lib/codacy/client.rb +40 -10
- data/lib/codacy/formatter.rb +11 -1
- data/lib/codacy/reporter.rb +3 -3
- data/spec/codacy/client_spec.rb +35 -10
- metadata +10 -7
- data/circle.yml +0 -15
- data/scripts/ci.sh +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1be5b80740480276200a84a0d55133ca61b44082c1e72e076a67587bc06b3cb0
|
4
|
+
data.tar.gz: 0ad0414f542367603e0759863ae412da6bb24740583b7739250dea045b2fa607
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 34c7dcc7802a3b863a87bfd29e8cd0e432af8463f86c65a8818187d9dd564cc85eccecd379ff82cce93ae3ca48e89d8c4841831ecbfcd2a1d74a2d6e8bcaa9dc
|
7
|
+
data.tar.gz: 026cc0ab653ee84eec81c5c4c254ede2a3e15b06c4c3fd818d89e09bd841450259bc44788ffa2b561ad7c0aa17ceadf4e18e937bc3307b73742b1e91cfedf044
|
@@ -0,0 +1,105 @@
|
|
1
|
+
version: 2.1
|
2
|
+
|
3
|
+
orbs:
|
4
|
+
codacy: codacy/base@1.0.0
|
5
|
+
|
6
|
+
jobs:
|
7
|
+
build_and_test:
|
8
|
+
parameters:
|
9
|
+
ruby_version:
|
10
|
+
type: string
|
11
|
+
persist_to_workspace:
|
12
|
+
type: boolean
|
13
|
+
default: false
|
14
|
+
docker:
|
15
|
+
- image: circleci/ruby:<< parameters.ruby_version >>
|
16
|
+
working_directory: ~/workdir
|
17
|
+
steps:
|
18
|
+
- attach_workspace:
|
19
|
+
at: ~/
|
20
|
+
|
21
|
+
- run: gem install bundler
|
22
|
+
|
23
|
+
- restore_cache:
|
24
|
+
keys:
|
25
|
+
- ruby-codacy-coverage-{{ checksum "Gemfile.lock" }}
|
26
|
+
- ruby-codacy-coverage-
|
27
|
+
|
28
|
+
- run: bundle install --path vendor/bundle
|
29
|
+
|
30
|
+
- save_cache:
|
31
|
+
key: ruby-codacy-coverage-{{ checksum "Gemfile.lock" }}
|
32
|
+
paths:
|
33
|
+
- vendor/bundle
|
34
|
+
|
35
|
+
- run: bundle exec rspec
|
36
|
+
- when:
|
37
|
+
condition: << parameters.persist_to_workspace >>
|
38
|
+
steps:
|
39
|
+
- persist_to_workspace:
|
40
|
+
root: ~/
|
41
|
+
paths:
|
42
|
+
- workdir/*
|
43
|
+
publish:
|
44
|
+
docker:
|
45
|
+
- image: circleci/ruby:2
|
46
|
+
working_directory: ~/workdir
|
47
|
+
steps:
|
48
|
+
- attach_workspace:
|
49
|
+
at: ~/
|
50
|
+
- run:
|
51
|
+
name: Setup Rubygems
|
52
|
+
command: bash .circleci/setup-rubygems.sh
|
53
|
+
- run:
|
54
|
+
name: Publish to Rubygems
|
55
|
+
command: |
|
56
|
+
export PUBLISH_VERSION=$(cat .version)
|
57
|
+
gem build codacy-coverage.gemspec
|
58
|
+
gem push codacy-coverage-$(cat .version).gem
|
59
|
+
|
60
|
+
workflows:
|
61
|
+
version: 2
|
62
|
+
build_and_publish:
|
63
|
+
jobs:
|
64
|
+
- codacy/checkout_and_version
|
65
|
+
- build_and_test:
|
66
|
+
name: build_and_test_2
|
67
|
+
ruby_version: "2"
|
68
|
+
persist_to_workspace: true
|
69
|
+
requires:
|
70
|
+
- codacy/checkout_and_version
|
71
|
+
- build_and_test:
|
72
|
+
name: build_and_test_2.3
|
73
|
+
ruby_version: "2.3"
|
74
|
+
requires:
|
75
|
+
- codacy/checkout_and_version
|
76
|
+
- build_and_test:
|
77
|
+
name: build_and_test_2.4
|
78
|
+
ruby_version: "2.4"
|
79
|
+
requires:
|
80
|
+
- codacy/checkout_and_version
|
81
|
+
- build_and_test:
|
82
|
+
name: build_and_test_2.5
|
83
|
+
ruby_version: "2.5"
|
84
|
+
requires:
|
85
|
+
- codacy/checkout_and_version
|
86
|
+
- build_and_test:
|
87
|
+
name: build_and_test_2.6
|
88
|
+
ruby_version: "2.6"
|
89
|
+
requires:
|
90
|
+
- codacy/checkout_and_version
|
91
|
+
- publish:
|
92
|
+
requires:
|
93
|
+
- build_and_test_2
|
94
|
+
- build_and_test_2.3
|
95
|
+
- build_and_test_2.4
|
96
|
+
- build_and_test_2.5
|
97
|
+
- build_and_test_2.6
|
98
|
+
filters:
|
99
|
+
branches:
|
100
|
+
only:
|
101
|
+
- master
|
102
|
+
- codacy/tag_version:
|
103
|
+
name: tag_version
|
104
|
+
requires:
|
105
|
+
- publish
|
data/.github/CODEOWNERS
ADDED
data/.gitignore
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
codacy-coverage (1.0.dev)
|
5
|
+
simplecov
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
diff-lcs (1.3)
|
11
|
+
docile (1.3.2)
|
12
|
+
json (2.2.0)
|
13
|
+
rake (13.0.0)
|
14
|
+
rspec (3.9.0)
|
15
|
+
rspec-core (~> 3.9.0)
|
16
|
+
rspec-expectations (~> 3.9.0)
|
17
|
+
rspec-mocks (~> 3.9.0)
|
18
|
+
rspec-core (3.9.0)
|
19
|
+
rspec-support (~> 3.9.0)
|
20
|
+
rspec-expectations (3.9.0)
|
21
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
22
|
+
rspec-support (~> 3.9.0)
|
23
|
+
rspec-mocks (3.9.0)
|
24
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
25
|
+
rspec-support (~> 3.9.0)
|
26
|
+
rspec-support (3.9.0)
|
27
|
+
simplecov (0.17.1)
|
28
|
+
docile (~> 1.1)
|
29
|
+
json (>= 1.8, < 3)
|
30
|
+
simplecov-html (~> 0.10.0)
|
31
|
+
simplecov-html (0.10.2)
|
32
|
+
|
33
|
+
PLATFORMS
|
34
|
+
ruby
|
35
|
+
|
36
|
+
DEPENDENCIES
|
37
|
+
bundler
|
38
|
+
codacy-coverage!
|
39
|
+
rake
|
40
|
+
rspec
|
41
|
+
|
42
|
+
BUNDLED WITH
|
43
|
+
2.0.2
|
data/codacy-coverage.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.license = "MIT"
|
11
11
|
|
12
12
|
gem.files = `git ls-files`.split($\)
|
13
|
-
gem.executables =
|
13
|
+
gem.executables = ["codacy_final_reporter"]
|
14
14
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
15
15
|
gem.name = "codacy-coverage"
|
16
16
|
gem.require_paths = ["lib"]
|
data/lib/codacy/client.rb
CHANGED
@@ -1,17 +1,16 @@
|
|
1
1
|
require 'json'
|
2
|
-
require
|
3
|
-
require
|
2
|
+
require 'uri'
|
3
|
+
require 'net/https'
|
4
|
+
require 'codacy/git'
|
4
5
|
|
5
6
|
module Codacy
|
6
7
|
module ClientAPI
|
7
|
-
def self.post_results(parsed_result)
|
8
|
+
def self.post_results(parsed_result, partial: false)
|
8
9
|
logger.info('Preparing payload...')
|
9
10
|
logger.debug(parsed_result)
|
10
11
|
|
11
|
-
project_token =
|
12
|
-
|
13
|
-
commit = Codacy::Git.commit_id
|
14
|
-
url = create_url(codacy_base_api, commit)
|
12
|
+
project_token, codacy_base_api, commit = get_parameters
|
13
|
+
url = create_url(codacy_base_api, commit, partial: partial)
|
15
14
|
|
16
15
|
result = parsed_result.to_json
|
17
16
|
|
@@ -33,7 +32,7 @@ module Codacy
|
|
33
32
|
def self.send_request(url, content, project_token, redirects = 3)
|
34
33
|
uri = URI.parse(url)
|
35
34
|
http = Net::HTTP.new(uri.host, uri.port)
|
36
|
-
request = Net::HTTP::Post.new(uri
|
35
|
+
request = Net::HTTP::Post.new(uri)
|
37
36
|
http.use_ssl = uri.scheme == "https"
|
38
37
|
request["project_token"] = project_token
|
39
38
|
request["Content-Type"] = "application/json"
|
@@ -52,9 +51,40 @@ module Codacy
|
|
52
51
|
Codacy::Configuration.logger
|
53
52
|
end
|
54
53
|
|
55
|
-
def self.create_url(codacy_base_api, commit)
|
54
|
+
def self.create_url(codacy_base_api, commit, final: false, partial: false)
|
56
55
|
commit = commit.gsub(/[^[:alnum:]]/, "")
|
57
|
-
|
56
|
+
if final
|
57
|
+
codacy_base_api + '/2.0/commit/' + commit + '/coverageFinal'
|
58
|
+
else
|
59
|
+
query_params = partial ? '?partial=true' : ''
|
60
|
+
codacy_base_api + '/2.0/coverage/' + commit + '/ruby' + query_params
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.notify_final
|
65
|
+
project_token, codacy_base_api, commit = get_parameters
|
66
|
+
url = create_url(codacy_base_api, commit, final: true)
|
67
|
+
|
68
|
+
if project_token.to_s == ''
|
69
|
+
puts 'Could not find Codacy API token, make sure you have it configured in your environment.'
|
70
|
+
false
|
71
|
+
elsif commit.to_s == ''
|
72
|
+
puts 'Could not find the current commit, make sure that you are running inside a git project.'
|
73
|
+
false
|
74
|
+
else
|
75
|
+
puts 'Posting Coverage Final Notice to ' + url
|
76
|
+
response = send_request(url, '{}', project_token)
|
77
|
+
|
78
|
+
puts response
|
79
|
+
response.to_s.include? 'success'
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def self.get_parameters
|
84
|
+
project_token = ENV['CODACY_PROJECT_TOKEN']
|
85
|
+
codacy_base_api = ENV['CODACY_BASE_API_URL'] || 'https://api.codacy.com'
|
86
|
+
commit = Codacy::Git.commit_id
|
87
|
+
return project_token, codacy_base_api, commit
|
58
88
|
end
|
59
89
|
end
|
60
90
|
end
|
data/lib/codacy/formatter.rb
CHANGED
@@ -4,7 +4,7 @@ module Codacy
|
|
4
4
|
def format(result)
|
5
5
|
if should_run?
|
6
6
|
parse_result = Codacy::Parser.parse_file(result)
|
7
|
-
Codacy::ClientAPI.post_results(parse_result)
|
7
|
+
Codacy::ClientAPI.post_results(parse_result, partial: partial)
|
8
8
|
else
|
9
9
|
logger.info("Running locally, skipping Codacy coverage")
|
10
10
|
end
|
@@ -15,6 +15,10 @@ module Codacy
|
|
15
15
|
|
16
16
|
private
|
17
17
|
|
18
|
+
def partial
|
19
|
+
false
|
20
|
+
end
|
21
|
+
|
18
22
|
def should_run?
|
19
23
|
ENV["CI"] || ENV["JENKINS_URL"] || ENV['TDDIUM'] || ENV["CODACY_RUN_LOCAL"]
|
20
24
|
end
|
@@ -24,4 +28,10 @@ module Codacy
|
|
24
28
|
end
|
25
29
|
|
26
30
|
end
|
31
|
+
|
32
|
+
class PartialFormatter < Formatter
|
33
|
+
def partial
|
34
|
+
true
|
35
|
+
end
|
36
|
+
end
|
27
37
|
end
|
data/lib/codacy/reporter.rb
CHANGED
@@ -2,9 +2,9 @@ require 'simplecov'
|
|
2
2
|
|
3
3
|
module Codacy
|
4
4
|
module Reporter
|
5
|
-
def self.start
|
6
|
-
SimpleCov.formatter = Codacy::Formatter
|
7
|
-
SimpleCov.start
|
5
|
+
def self.start(profile = nil, partial = true)
|
6
|
+
SimpleCov.formatter = partial ? Codacy::Formatter::Partial : Codacy::Formatter
|
7
|
+
SimpleCov.start(profile)
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
data/spec/codacy/client_spec.rb
CHANGED
@@ -2,16 +2,41 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe Codacy::ClientAPI do
|
4
4
|
describe 'create url' do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
5
|
+
let(:codacy_base_api) {'https://api.codacy.com'}
|
6
|
+
|
7
|
+
it 'checks if the url is correct.' do
|
8
|
+
expected_commit_uuid = "9a7d25976a11f2a145f8fee7c4e4ad58b621d560"
|
9
|
+
expected_url = Codacy::ClientAPI.create_url(codacy_base_api, expected_commit_uuid)
|
10
|
+
|
11
|
+
wrong_commit_uuid = "'9a7d25976a11f2a145f8fee7c4e4ad58b621d560'"
|
12
|
+
fixed_url = Codacy::ClientAPI.create_url(codacy_base_api, wrong_commit_uuid)
|
13
|
+
|
14
|
+
expect(fixed_url).to eq expected_url
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'generates coverage final url' do
|
18
|
+
commit_uuid = "9a7d25976a11f2a145f8fee7c4e4ad58b621d560"
|
19
|
+
|
20
|
+
url = Codacy::ClientAPI.create_url(codacy_base_api, commit_uuid, final: true)
|
21
|
+
|
22
|
+
expect(url).to include('coverageFinal')
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'generates url with partial query parameter' do
|
26
|
+
commit_uuid = "9a7d25976a11f2a145f8fee7c4e4ad58b621d560"
|
27
|
+
|
28
|
+
url = Codacy::ClientAPI.create_url(codacy_base_api, commit_uuid, partial: true)
|
29
|
+
|
30
|
+
expect(url).to include('partial=true')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '.notify_final' do
|
35
|
+
context 'missing project token' do
|
36
|
+
it 'returns false' do
|
37
|
+
ENV['CODACY_PROJECT_TOKEN'] = ''
|
38
|
+
expect(Codacy::ClientAPI.notify_final).to be false
|
39
|
+
end
|
15
40
|
end
|
16
41
|
end
|
17
42
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: codacy-coverage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nuno Teixeira
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2019-10-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: simplecov
|
@@ -71,16 +71,21 @@ description: Post code coverage results to Codacy.
|
|
71
71
|
email:
|
72
72
|
- nuno@codacy.com
|
73
73
|
- rodrigo@codacy.com
|
74
|
-
executables:
|
74
|
+
executables:
|
75
|
+
- codacy_final_reporter
|
75
76
|
extensions: []
|
76
77
|
extra_rdoc_files: []
|
77
78
|
files:
|
79
|
+
- ".circleci/config.yml"
|
80
|
+
- ".circleci/setup-rubygems.sh"
|
81
|
+
- ".github/CODEOWNERS"
|
78
82
|
- ".github/ISSUE_TEMPLATE.md"
|
79
83
|
- ".gitignore"
|
80
84
|
- Gemfile
|
85
|
+
- Gemfile.lock
|
81
86
|
- Gemfile.ruby-19
|
82
87
|
- README.md
|
83
|
-
-
|
88
|
+
- bin/codacy_final_reporter
|
84
89
|
- codacy-coverage.gemspec
|
85
90
|
- lib/codacy-coverage.rb
|
86
91
|
- lib/codacy/client.rb
|
@@ -89,7 +94,6 @@ files:
|
|
89
94
|
- lib/codacy/git.rb
|
90
95
|
- lib/codacy/parser.rb
|
91
96
|
- lib/codacy/reporter.rb
|
92
|
-
- scripts/ci.sh
|
93
97
|
- spec/codacy/client_spec.rb
|
94
98
|
- spec/codacy/git_spec.rb
|
95
99
|
- spec/spec_helper.rb
|
@@ -112,8 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
116
|
- !ruby/object:Gem::Version
|
113
117
|
version: '0'
|
114
118
|
requirements: []
|
115
|
-
|
116
|
-
rubygems_version: 2.6.11
|
119
|
+
rubygems_version: 3.0.3
|
117
120
|
signing_key:
|
118
121
|
specification_version: 4
|
119
122
|
summary: Post code coverage results to Codacy.
|
data/circle.yml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
dependencies:
|
2
|
-
pre:
|
3
|
-
- git config --global user.email "ci@codacy.com"
|
4
|
-
- git config --global user.name "Codacy CI"
|
5
|
-
override:
|
6
|
-
- rvm install 2.0.0-p648
|
7
|
-
- rvm install 2.1.10
|
8
|
-
- rvm install 2.2.5
|
9
|
-
- rvm install 2.3.1
|
10
|
-
cache_directories:
|
11
|
-
- "~/.rvm"
|
12
|
-
|
13
|
-
test:
|
14
|
-
override:
|
15
|
-
- scripts/ci.sh
|
data/scripts/ci.sh
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
#!/bin/bash --login
|
2
|
-
|
3
|
-
set -e
|
4
|
-
|
5
|
-
rvm use 2.0.0-p648
|
6
|
-
ruby -v
|
7
|
-
bundle install
|
8
|
-
bundle exec rspec
|
9
|
-
|
10
|
-
rvm use 2.1.10
|
11
|
-
ruby -v
|
12
|
-
bundle install
|
13
|
-
bundle exec rspec
|
14
|
-
|
15
|
-
rvm use 2.2.5
|
16
|
-
ruby -v
|
17
|
-
bundle install
|
18
|
-
bundle exec rspec
|
19
|
-
|
20
|
-
rvm use 2.3.1
|
21
|
-
ruby -v
|
22
|
-
bundle install
|
23
|
-
bundle exec rspec
|