coveralls-multi 1.3.2 → 1.4.0.beta

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8e5576080e0e7d7a58994aaf0d9940b330eadf6302259d21362e95c82028a31e
4
- data.tar.gz: de58bfaa0be98e33c48372fadac5014cf42566ddadeee9b6f39fb268c764e176
3
+ metadata.gz: 7ec07bebf8b0ad6cef3922fec3a21ae8da2ef333c2f1d6f350ae46ef7f3faf91
4
+ data.tar.gz: 8085c40de3074639088bcd9564cd52608b0d2fa007aebf213fc1b52eda9f99b7
5
5
  SHA512:
6
- metadata.gz: a1cbf567889f1ae27bebd55cb5a384ca0352349272f8194961c8556895210d954c051e78df8ec84987c07456c719317a25f92eccba298d68388e6310ea92b7c8
7
- data.tar.gz: 53548591c5096f87634f4839499c393117799ff99b7f26eefec8ca0b6e0cf0b77dcfc12b66d1916bfa3b39d0d1080811e891796b2d81ff1bad94f39f0db3c74d
6
+ metadata.gz: f4db280913be97c2d7d9345522d002d9706803694d816a69227118581a798c701eaf7d9a41130f8b1b4ac7e217c2ec7bf312a6407b353b1669424a3b85fa507a
7
+ data.tar.gz: a486d86bde16deb33033950b54f7765413853d89b2a8baa862ec4dfd8a4a7a11ab22d33ac198cbb58ad7e3da74a4ec2c16be9d449b23f3db07e1aa096798027a
data/.travis.yml CHANGED
@@ -12,4 +12,4 @@ deploy:
12
12
  on:
13
13
  tags: true
14
14
  repo: radditude/coveralls-multi
15
- branch: master
15
+ branch: main
data/README.md CHANGED
@@ -1,5 +1,3 @@
1
-
2
-
3
1
  [![coveralls-multi](https://img.shields.io/gem/v/coveralls-multi.svg)](https://rubygems.org/gems/coveralls-multi) [![Travis](https://img.shields.io/travis/radditude/coveralls-multi/master.svg)](https://travis-ci.org/radditude/coveralls-multi) [![Coverage Status](https://coveralls.io/repos/github/radditude/coveralls-multi/badge.svg)](https://coveralls.io/github/radditude/coveralls-multi)
4
2
 
5
3
  # CoverallsMulti
@@ -10,11 +8,11 @@ CoverallsMulti is a Coveralls client with support for multi-language repos. Once
10
8
 
11
9
  #### Languages & Output Formats
12
10
 
13
- | *Language* | *Coverage tool* | *Config key* |
14
- |----------- | --------------- | ------------ |
15
- | Elixir | [ExCoveralls](https://github.com/parroty/excoveralls) (JSON output) | `excoveralls` |
16
- | JavaScript | [nyc](https://github.com/istanbuljs/nyc), or any tool that can output an lcov file | `lcov` |
17
- | Ruby | [SimpleCov](https://github.com/colszowka/simplecov) | `simplecov` |
11
+ | _Language_ | _Coverage tool_ | _Config key_ |
12
+ | ---------- | ---------------------------------------------------------------------------------- | ------------- |
13
+ | Elixir | [ExCoveralls](https://github.com/parroty/excoveralls) (JSON output) | `excoveralls` |
14
+ | JavaScript | [nyc](https://github.com/istanbuljs/nyc), or any tool that can output an lcov file | `lcov` |
15
+ | Ruby | [SimpleCov](https://github.com/colszowka/simplecov) | `simplecov` |
18
16
 
19
17
  #### CI Providers
20
18
 
@@ -22,7 +20,7 @@ CoverallsMulti is a Coveralls client with support for multi-language repos. Once
22
20
 
23
21
  #### Coming Soon
24
22
 
25
- Have another language, tool, or CI provider you'd like to see supported? [Let me know](https://github.com/radditude/coveralls-multi/issues/new).
23
+ Have another language, tool, or CI provider you'd like to see supported? [File an issue](https://github.com/radditude/coveralls-multi/issues/new).
26
24
 
27
25
  ## Installation
28
26
 
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
 
12
12
  spec.summary = 'Coveralls client for multi-language repos.'
13
13
  spec.description = 'A configurable Coveralls client that supports merging coverage from multiple languages & test suites.'
14
- # spec.homepage = "TODO: Put your gem's website or public repo URL here."
14
+ spec.homepage = 'https://github.com/radditude/coveralls-multi'
15
15
  spec.license = 'MIT'
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
@@ -20,12 +20,14 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = 'coveralls-multi'
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_dependency 'coveralls-revelry', '~> 0.8.23'
24
23
  spec.add_dependency 'coveralls-lcov', '~> 1.5.1'
24
+ spec.add_dependency 'httparty', '~> 0.16.4'
25
25
 
26
26
  spec.add_development_dependency 'bundler', '~> 1.16'
27
+ spec.add_development_dependency 'coveralls', '~> 0.8.22'
27
28
  spec.add_development_dependency 'pry', '~> 0.11.3'
28
29
  spec.add_development_dependency 'rake', '~> 10.0'
29
30
  spec.add_development_dependency 'rspec', '~> 3.0'
30
31
  spec.add_development_dependency 'simplecov', '~> 0.16.1'
32
+ spec.add_development_dependency 'webmock', '~> 3.5.1'
31
33
  end
@@ -1,3 +1,4 @@
1
+ require 'coveralls-multi/api'
1
2
  require 'coveralls-multi/config'
2
3
  require 'coveralls-multi/formatter'
3
4
  require 'coveralls-multi/runner'
@@ -0,0 +1,61 @@
1
+ require 'json'
2
+ require 'httparty'
3
+ require 'tempfile'
4
+
5
+ module CoverallsMulti
6
+ # handles the post request to the Coveralls API
7
+ class API
8
+ class << self
9
+ def post_json(hash)
10
+ url = CoverallsMulti::Config.api_endpoint
11
+ puts "[CoverallsMulti] Submitting to #{url}"
12
+
13
+ response = HTTParty.post(
14
+ url,
15
+ body: {
16
+ json_file: json_file(hash),
17
+ },
18
+ )
19
+
20
+ puts "[CoverallsMulti] #{response['message']}" if response['message']
21
+ puts "[CoverallsMulti] #{response['url']}" if response['url']
22
+ puts "[CoverallsMulti] Error: #{response['error']}" if response['error']
23
+
24
+ response
25
+ end
26
+
27
+ def json_file(hash)
28
+ hash = add_api_config(hash)
29
+ write_to_file(hash)
30
+ file = nil
31
+
32
+ Tempfile.open(['coveralls-upload', 'json']) do |f|
33
+ f.write(hash.to_json)
34
+ file = f
35
+ end
36
+
37
+ File.new(file.path, 'rb')
38
+ end
39
+
40
+ def write_to_file(hash)
41
+ return unless CoverallsMulti::Config.debug_mode
42
+
43
+ output_file_path = "#{CoverallsMulti::Config.root}/coveralls.json"
44
+ puts "[CoverallsMulti] Debug mode on - writing results to #{output_file_path}"
45
+ File.write(output_file_path, JSON.pretty_generate(hash))
46
+ end
47
+
48
+ def add_api_config(hash)
49
+ config = CoverallsMulti::Config.api_config
50
+
51
+ if CoverallsMulti::Config.debug_mode
52
+ puts '[CoverallsMulti] Submitting with config:'
53
+ output = JSON.pretty_generate(config).gsub(/"repo_token": ?"(.*?)"/, '"repo_token": "[secure]"')
54
+ puts output
55
+ end
56
+
57
+ hash.merge(config)
58
+ end
59
+ end
60
+ end
61
+ end
@@ -4,22 +4,22 @@ module CoverallsMulti
4
4
  # reads .coveralls.yml and sets module config options
5
5
  class Config
6
6
  class << self
7
+ def yaml_config
8
+ raise "[CoverallsMulti] Couldn't find config file" unless configuration_path && File.exist?(configuration_path)
9
+
10
+ YAML.load_file(configuration_path)
11
+ end
12
+
7
13
  def files
8
14
  yml = yaml_config['multi']
9
15
 
10
- raise "Couldn't find coveralls-multi configuration in .coveralls.yml" unless yml
16
+ raise "[CoverallsMulti] Couldn't find multi configuration in .coveralls.yml" unless yml
11
17
 
12
18
  yml
13
19
  end
14
20
 
15
21
  def debug_mode
16
- yaml_config['debug_mode'] && yaml_config['debug_mode'] == true
17
- end
18
-
19
- def yaml_config
20
- raise "Couldn't find config file" unless configuration_path && File.exist?(configuration_path)
21
-
22
- YAML.load_file(configuration_path)
22
+ yaml_config['debug_mode'] || ENV['COVERALLS_DEBUG']
23
23
  end
24
24
 
25
25
  def root
@@ -29,6 +29,148 @@ module CoverallsMulti
29
29
  def configuration_path
30
30
  File.expand_path(File.join(root, '.coveralls.yml')) if root
31
31
  end
32
+
33
+ def api_domain
34
+ ENV['COVERALLS_ENDPOINT'] || 'https://coveralls.io'
35
+ end
36
+
37
+ def api_endpoint
38
+ "#{api_domain}/api/v1/jobs"
39
+ end
40
+
41
+ def api_config
42
+ config = {
43
+ git: git_info,
44
+ repo_token: ENV['COVERALLS_REPO_TOKEN'] || yaml_config['repo_token'] || yaml_config['repo_secret_token'],
45
+ }
46
+
47
+ add_ci_env(config)
48
+ add_standard_service_params_for_generic_ci(config)
49
+ config
50
+ end
51
+
52
+ def git_info
53
+ Dir.chdir(root) do
54
+ {
55
+ head: git_head,
56
+ branch: git_branch,
57
+ remotes: git_remotes,
58
+ }
59
+ end
60
+ end
61
+
62
+ def git_head
63
+ {
64
+ id: ENV.fetch('GIT_ID', `git log -1 --pretty=format:'%H'`),
65
+ author_name: ENV.fetch('GIT_AUTHOR_NAME', `git log -1 --pretty=format:'%aN'`),
66
+ author_email: ENV.fetch('GIT_AUTHOR_EMAIL', `git log -1 --pretty=format:'%ae'`),
67
+ committer_name: ENV.fetch('GIT_COMMITTER_NAME', `git log -1 --pretty=format:'%cN'`),
68
+ committer_email: ENV.fetch('GIT_COMMITTER_EMAIL', `git log -1 --pretty=format:'%ce'`),
69
+ message: ENV.fetch('GIT_MESSAGE', `git log -1 --pretty=format:'%s'`),
70
+ }
71
+ end
72
+
73
+ def git_branch
74
+ ENV.fetch('GIT_BRANCH', `git rev-parse --abbrev-ref HEAD`)
75
+ end
76
+
77
+ def git_remotes
78
+ `git remote -v`.split(/\n/).map do |remote|
79
+ split_line = remote.split(' ').compact
80
+ { name: split_line[0], url: split_line[1] }
81
+ end.uniq
82
+ end
83
+
84
+ def add_ci_env(config)
85
+ return add_service_params_for_travis(config, yaml_config[:service_name] || nil) if ENV['TRAVIS']
86
+ return add_service_params_for_circleci(config) if ENV['CIRCLECI']
87
+ return add_service_params_for_semaphore(config) if ENV['SEMAPHORE']
88
+ return add_service_params_for_jenkins(config) if ENV['JENKINS_URL'] || ENV['JENKINS_HOME']
89
+ return add_service_params_for_appveyor(config) if ENV['APPVEYOR']
90
+ return add_service_params_for_tddium(config) if ENV['TDDIUM']
91
+ return add_service_params_for_gitlab(config) if ENV['GITLAB_CI']
92
+ return add_service_params_for_coveralls_local(config) if ENV['COVERALLS_RUN_LOCALLY']
93
+
94
+ config
95
+ end
96
+
97
+ def add_service_params_for_travis(config, service_name)
98
+ config[:service_job_id] = ENV['TRAVIS_JOB_ID']
99
+ config[:service_pull_request] = ENV['TRAVIS_PULL_REQUEST'] unless ENV['TRAVIS_PULL_REQUEST'] == 'false'
100
+ config[:service_name] = service_name || 'travis-ci'
101
+ config[:service_branch] = ENV['TRAVIS_BRANCH']
102
+ config
103
+ end
104
+
105
+ def add_service_params_for_circleci(config)
106
+ config[:service_name] = 'circleci'
107
+ config[:service_number] = ENV['CIRCLE_BUILD_NUM']
108
+ config[:service_pull_request] = (ENV['CI_PULL_REQUEST'] || '')[/(\d+)$/, 1]
109
+ config[:parallel] = ENV['CIRCLE_NODE_TOTAL'].to_i > 1
110
+ config[:service_job_number] = ENV['CIRCLE_NODE_INDEX']
111
+ config
112
+ end
113
+
114
+ def add_service_params_for_semaphore(config)
115
+ config[:service_name] = 'semaphore'
116
+ config[:service_number] = ENV['SEMAPHORE_BUILD_NUMBER']
117
+ config[:service_pull_request] = ENV['PULL_REQUEST_NUMBER']
118
+ config
119
+ end
120
+
121
+ def add_service_params_for_jenkins(config)
122
+ config[:service_name] = 'jenkins'
123
+ config[:service_number] = ENV['BUILD_NUMBER']
124
+ config[:service_branch] = ENV['BRANCH_NAME']
125
+ config[:service_pull_request] = ENV['ghprbPullId']
126
+ config
127
+ end
128
+
129
+ def add_service_params_for_appveyor(config)
130
+ config[:service_name] = 'appveyor'
131
+ config[:service_number] = ENV['APPVEYOR_BUILD_VERSION']
132
+ config[:service_branch] = ENV['APPVEYOR_REPO_BRANCH']
133
+ config[:commit_sha] = ENV['APPVEYOR_REPO_COMMIT']
134
+ repo_name = ENV['APPVEYOR_REPO_NAME']
135
+ config[:service_build_url] = format('https://ci.appveyor.com/project/%s/build/%s', repo_name, config[:service_number])
136
+ config
137
+ end
138
+
139
+ def add_service_params_for_tddium(config)
140
+ config[:service_name] = 'tddium'
141
+ config[:service_number] = ENV['TDDIUM_SESSION_ID']
142
+ config[:service_job_number] = ENV['TDDIUM_TID']
143
+ config[:service_pull_request] = ENV['TDDIUM_PR_ID']
144
+ config[:service_branch] = ENV['TDDIUM_CURRENT_BRANCH']
145
+ config[:service_build_url] = "https://ci.solanolabs.com/reports/#{ENV['TDDIUM_SESSION_ID']}"
146
+ config
147
+ end
148
+
149
+ def add_service_params_for_gitlab(config)
150
+ config[:service_name] = 'gitlab-ci'
151
+ config[:service_job_number] = ENV['CI_BUILD_NAME']
152
+ config[:service_job_id] = ENV['CI_BUILD_ID']
153
+ config[:service_branch] = ENV['CI_BUILD_REF_NAME']
154
+ config[:commit_sha] = ENV['CI_BUILD_REF']
155
+ config
156
+ end
157
+
158
+ def add_service_params_for_coveralls_local(config)
159
+ config[:service_job_id] = nil
160
+ config[:service_name] = 'coveralls-multi'
161
+ config[:service_event_type] = 'manual'
162
+ config
163
+ end
164
+
165
+ def add_standard_service_params_for_generic_ci(config)
166
+ config[:service_name] ||= ENV['CI_NAME']
167
+ config[:service_number] ||= ENV['CI_BUILD_NUMBER']
168
+ config[:service_job_id] ||= ENV['CI_JOB_ID']
169
+ config[:service_build_url] ||= ENV['CI_BUILD_URL']
170
+ config[:service_branch] ||= ENV['CI_BRANCH']
171
+ config[:service_pull_request] ||= (ENV['CI_PULL_REQUEST'] || '')[/(\d+)$/, 1]
172
+ config
173
+ end
32
174
  end
33
175
  end
34
176
  end
@@ -18,14 +18,15 @@ module CoverallsMulti
18
18
  src_file['source_digest'] = src_digest
19
19
  src_file
20
20
  end
21
- puts 'Added source digests'
21
+ puts '[CoverallsMulti] Added source digests'
22
22
  merged_files
23
23
  end
24
24
 
25
25
  def parse_json(path)
26
26
  JSON.parse(IO.read("#{CoverallsMulti::Config.root}/#{path}"))
27
27
  rescue StandardError => e
28
- raise e, "Could not parse file at #{path}"
28
+ puts "[CoverallsMulti] Could not parse file at #{path}"
29
+ raise e
29
30
  end
30
31
  end
31
32
  end
@@ -21,7 +21,9 @@ module CoverallsMulti
21
21
  end
22
22
  source_files
23
23
  rescue StandardError => e
24
- raise e, "There was a problem converting the excoveralls file at #{file_path}"
24
+ puts "[CoverallsMulti] There was a problem converting the excoveralls file at #{file_path}."
25
+ puts '[CoverallsMulti] Make sure the file exists.'
26
+ raise e
25
27
  end
26
28
  end
27
29
  end
@@ -13,7 +13,9 @@ module CoverallsMulti
13
13
  # HACK: stringify keys without iterating over the whole array of hashes
14
14
  JSON.parse(JSON.dump(file[:source_files]))
15
15
  rescue StandardError, SystemExit => e
16
- raise e, "There was a problem converting the lcov file at #{file_path}"
16
+ puts "[CoverallsMulti] There was a problem converting the lcov file at #{file_path}."
17
+ puts '[CoverallsMulti] Make sure the file exists.'
18
+ raise e
17
19
  end
18
20
  end
19
21
  end
@@ -28,10 +28,11 @@ module CoverallsMulti
28
28
  end
29
29
  end
30
30
  rescue StandardError => e
31
- raise e, "There was a problem formatting the simplecov report at #{file_path}"
31
+ puts "[CoverallsMulti] There was a problem formatting the simplecov report at #{file_path}."
32
+ puts '[CoverallsMulti] Make sure the file exists.'
33
+ raise e
32
34
  end
33
35
 
34
- puts 'SimpleCov report reformatted to prepare for merge'
35
36
  source_files
36
37
  end
37
38
  end
@@ -11,18 +11,9 @@ module CoverallsMulti
11
11
 
12
12
  def start
13
13
  payload = merge
14
- write_to_file(payload)
15
- puts 'Validating payload and pushing to Coveralls'
14
+ puts '[CoverallsMulti] Validating payload'
16
15
  valid = CoverallsMulti::Validator.new(payload).run
17
- Coveralls::API.post_json('jobs', payload) if valid
18
- end
19
-
20
- def write_to_file(payload)
21
- return unless CoverallsMulti::Config.debug_mode
22
-
23
- output_file_path = "#{CoverallsMulti::Config.root}/coveralls.json"
24
- puts "Debug mode on - writing results to #{output_file_path}"
25
- File.write(output_file_path, JSON.pretty_generate(payload))
16
+ CoverallsMulti::API.post_json(payload) if valid
26
17
  end
27
18
 
28
19
  def merge
@@ -30,7 +21,7 @@ module CoverallsMulti
30
21
  merged = { 'source_files' => source_files }
31
22
  CoverallsMulti::Formatter.add_source_digests(merged)
32
23
 
33
- puts 'All files merged and formatted'
24
+ puts '[CoverallsMulti] All coverage files merged and formatted'
34
25
  merged
35
26
  end
36
27
 
@@ -50,7 +41,8 @@ module CoverallsMulti
50
41
  string_klass = "CoverallsMulti::Formatter::#{string.capitalize}"
51
42
  Object.const_get(string_klass)
52
43
  rescue NameError => e
53
- raise e, "Could not find formatter #{string_klass}"
44
+ puts "[CoverallsMulti] Could not find formatter #{string_klass}"
45
+ raise e
54
46
  end
55
47
  end
56
48
  end
@@ -19,7 +19,8 @@ module CoverallsMulti
19
19
  parsed_json = JSON.dump(@payload)
20
20
  parsed_json
21
21
  rescue JSON::UnparserError => e
22
- raise e, 'Payload could not be parsed to JSON!'
22
+ puts '[CoverallsMulti] Payload could not be parsed to JSON!'
23
+ raise e
23
24
  end
24
25
 
25
26
  def valid_coveralls_payload?
@@ -1,3 +1,3 @@
1
1
  module CoverallsMulti
2
- VERSION = '1.3.2'.freeze
2
+ VERSION = '1.4.0.beta'.freeze
3
3
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coveralls-multi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.4.0.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - CJ Horton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-08 00:00:00.000000000 Z
11
+ date: 2019-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: coveralls-revelry
14
+ name: coveralls-lcov
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.8.23
19
+ version: 1.5.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.8.23
26
+ version: 1.5.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: coveralls-lcov
28
+ name: httparty
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.5.1
33
+ version: 0.16.4
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.5.1
40
+ version: 0.16.4
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.16'
55
+ - !ruby/object:Gem::Dependency
56
+ name: coveralls
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.8.22
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.8.22
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: pry
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +122,20 @@ dependencies:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
124
  version: 0.16.1
125
+ - !ruby/object:Gem::Dependency
126
+ name: webmock
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 3.5.1
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 3.5.1
111
139
  description: A configurable Coveralls client that supports merging coverage from multiple
112
140
  languages & test suites.
113
141
  email:
@@ -132,6 +160,7 @@ files:
132
160
  - bin/test
133
161
  - coveralls-multi.gemspec
134
162
  - lib/coveralls-multi.rb
163
+ - lib/coveralls-multi/api.rb
135
164
  - lib/coveralls-multi/config.rb
136
165
  - lib/coveralls-multi/formatter.rb
137
166
  - lib/coveralls-multi/formatters/excoveralls.rb
@@ -140,7 +169,7 @@ files:
140
169
  - lib/coveralls-multi/runner.rb
141
170
  - lib/coveralls-multi/validator.rb
142
171
  - lib/coveralls-multi/version.rb
143
- homepage:
172
+ homepage: https://github.com/radditude/coveralls-multi
144
173
  licenses:
145
174
  - MIT
146
175
  metadata: {}
@@ -155,11 +184,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
155
184
  version: '0'
156
185
  required_rubygems_version: !ruby/object:Gem::Requirement
157
186
  requirements:
158
- - - ">="
187
+ - - ">"
159
188
  - !ruby/object:Gem::Version
160
- version: '0'
189
+ version: 1.3.1
161
190
  requirements: []
162
- rubygems_version: 3.0.2
191
+ rubygems_version: 3.0.3
163
192
  signing_key:
164
193
  specification_version: 4
165
194
  summary: Coveralls client for multi-language repos.