coveralls_reborn 0.12.0 → 0.13.0

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.
@@ -66,12 +66,10 @@ module Coveralls
66
66
  def format(string, options = {})
67
67
  unless no_color?
68
68
  require 'term/ansicolor'
69
- if options[:color]
70
- options[:color].split(/\s/).reverse_each do |color|
71
- if Term::ANSIColor.respond_to?(color.to_sym)
72
- string = Term::ANSIColor.send(color.to_sym, string)
73
- end
74
- end
69
+ options[:color]&.split(/\s/)&.reverse_each do |color|
70
+ next unless Term::ANSIColor.respond_to?(color.to_sym)
71
+
72
+ string = Term::ANSIColor.send(color.to_sym, string)
75
73
  end
76
74
  end
77
75
  string
@@ -92,6 +90,7 @@ module Coveralls
92
90
  # Returns nil.
93
91
  def puts(string, options = {})
94
92
  return if silent?
93
+
95
94
  (options[:output] || output).puts format(string, options)
96
95
  end
97
96
 
@@ -109,6 +108,7 @@ module Coveralls
109
108
  # Returns nil.
110
109
  def print(string, options = {})
111
110
  return if silent?
111
+
112
112
  (options[:output] || output).print format(string, options)
113
113
  end
114
114
 
@@ -12,6 +12,7 @@ module Coveralls
12
12
  desc 'Push latest coverage results to Coveralls.io'
13
13
  task :push do
14
14
  require 'coveralls'
15
+
15
16
  Coveralls.push!
16
17
  end
17
18
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'pathname'
4
+
3
5
  module Coveralls
4
6
  module SimpleCov
5
7
  class Formatter
@@ -10,6 +12,7 @@ module Coveralls
10
12
  else
11
13
  Coveralls::Output.puts '[Coveralls] There are no covered files.', color: 'yellow'
12
14
  end
15
+
13
16
  result.files.each do |f|
14
17
  Coveralls::Output.print ' * '
15
18
  Coveralls::Output.print short_filename(f.filename).to_s, color: 'cyan'
@@ -24,6 +27,7 @@ module Coveralls
24
27
  end
25
28
  Coveralls::Output.puts ''
26
29
  end
30
+
27
31
  true
28
32
  end
29
33
 
@@ -49,20 +53,22 @@ module Coveralls
49
53
 
50
54
  source_files << properties
51
55
  end
56
+
52
57
  source_files
53
58
  end
54
59
 
55
60
  def format(result)
56
61
  unless Coveralls.should_run?
57
62
  display_result result if Coveralls.noisy?
63
+
58
64
  return
59
65
  end
60
66
 
61
67
  # Post to Coveralls.
62
68
  API.post_json 'jobs',
63
- source_files: get_source_files(result),
69
+ source_files: get_source_files(result),
64
70
  test_framework: result.command_name.downcase,
65
- run_at: result.created_at
71
+ run_at: result.created_at
66
72
 
67
73
  Coveralls::Output.puts output_message result
68
74
 
@@ -75,14 +81,15 @@ module Coveralls
75
81
  Coveralls::Output.puts 'Coveralls encountered an exception:', color: 'red'
76
82
  Coveralls::Output.puts error.class.to_s, color: 'red'
77
83
  Coveralls::Output.puts error.message, color: 'red'
78
- if error.backtrace
79
- error.backtrace.each do |line|
80
- Coveralls::Output.puts line, color: 'red'
81
- end
84
+
85
+ error.backtrace&.each do |line|
86
+ Coveralls::Output.puts line, color: 'red'
82
87
  end
88
+
83
89
  if error.respond_to?(:response) && error.response
84
90
  Coveralls::Output.puts error.response.to_s, color: 'red'
85
91
  end
92
+
86
93
  false
87
94
  end
88
95
 
@@ -95,8 +102,11 @@ module Coveralls
95
102
  end
96
103
 
97
104
  def short_filename(filename)
98
- filename = filename.gsub(::SimpleCov.root, '.').gsub(%r{^\./}, '') if ::SimpleCov.root
99
- filename
105
+ return filename unless ::SimpleCov.root
106
+
107
+ filename = Pathname.new(filename)
108
+ root = Pathname.new(::SimpleCov.root)
109
+ filename.relative_path_from(root).to_s
100
110
  end
101
111
  end
102
112
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Coveralls
4
- VERSION = '0.12.0'.freeze
4
+ VERSION = '0.13.0'
5
5
  end
@@ -20,13 +20,14 @@ describe Coveralls::Configuration do
20
20
  let(:repo_secret_token) { SecureRandom.hex(4) }
21
21
  let(:yaml_config) do
22
22
  {
23
- 'repo_token' => repo_token,
23
+ 'repo_token' => repo_token,
24
24
  'repo_secret_token' => repo_secret_token
25
25
  }
26
26
  end
27
27
 
28
28
  before do
29
- allow(described_class).to receive(:yaml_config).and_return(yaml_config)
29
+ allow(File).to receive(:exist?).with(described_class.configuration_path).and_return(true)
30
+ allow(YAML).to receive(:load_file).with(described_class.configuration_path).and_return(yaml_config)
30
31
  end
31
32
 
32
33
  it 'sets the Yaml config and associated variables if present' do
@@ -67,14 +68,54 @@ describe Coveralls::Configuration do
67
68
  end
68
69
  end
69
70
 
71
+ context 'when flag_name is in environment' do
72
+ before do
73
+ allow(ENV).to receive(:[]).with('COVERALLS_FLAG_NAME').and_return(true)
74
+ end
75
+
76
+ it 'sets flag_name to true if present' do
77
+ config = described_class.configuration
78
+ expect(config[:flag_name]).to be true
79
+ end
80
+ end
81
+
70
82
  context 'with services' do
83
+ SERVICES = {
84
+ appveyor: 'APPVEYOR',
85
+ circleci: 'CIRCLECI',
86
+ gitlab: 'GITLAB_CI',
87
+ jenkins: 'JENKINS_URL',
88
+ semaphore: 'SEMAPHORE',
89
+ tddium: 'TDDIUM',
90
+ travis: 'TRAVIS',
91
+ coveralls_local: 'COVERALLS_RUN_LOCALLY',
92
+ generic: 'CI_NAME'
93
+ }.freeze
94
+
95
+ shared_examples 'a service' do |service_name|
96
+ let(:service_variable) { options[:service_variable] }
97
+
98
+ before do
99
+ allow(ENV).to receive(:[]).with(SERVICES[service_name]).and_return('1')
100
+ described_class.configuration
101
+ end
102
+
103
+ it 'sets service parameters for this service and no other' do
104
+ SERVICES.each_key.reject { |service| service == service_name }.each do |service|
105
+ expect(described_class).not_to have_received(:"define_service_params_for_#{service}")
106
+ end
107
+
108
+ expect(described_class).to have_received(:"define_service_params_for_#{service_name}") unless service_name == :generic
109
+ expect(described_class).to have_received(:define_standard_service_params_for_generic_ci)
110
+ end
111
+ end
112
+
71
113
  before do
72
- allow(described_class).to receive(:set_service_params_for_travis)
73
- allow(described_class).to receive(:set_service_params_for_circleci)
74
- allow(described_class).to receive(:set_service_params_for_semaphore)
75
- allow(described_class).to receive(:set_service_params_for_jenkins)
76
- allow(described_class).to receive(:set_service_params_for_coveralls_local)
77
- allow(described_class).to receive(:set_standard_service_params_for_generic_ci)
114
+ SERVICES.each_key do |service|
115
+ allow(described_class).to receive(:"define_service_params_for_#{service}")
116
+ end
117
+
118
+ allow(described_class).to receive(:define_standard_service_params_for_generic_ci)
78
119
  end
79
120
 
80
121
  context 'with env based service name' do
@@ -91,105 +132,45 @@ describe Coveralls::Configuration do
91
132
  end
92
133
  end
93
134
 
94
- context 'when using Travis' do
95
- before do
96
- allow(ENV).to receive(:[]).with('TRAVIS').and_return('1')
97
- described_class.configuration
98
- end
99
-
100
- it 'sets service parameters for this service and no other' do
101
- expect(described_class).to have_received(:set_service_params_for_travis).with(anything, anything)
102
- expect(described_class).not_to have_received(:set_service_params_for_circleci)
103
- expect(described_class).not_to have_received(:set_service_params_for_semaphore)
104
- expect(described_class).not_to have_received(:set_service_params_for_jenkins)
105
- expect(described_class).not_to have_received(:set_service_params_for_coveralls_local)
106
- expect(described_class).to have_received(:set_standard_service_params_for_generic_ci)
107
- end
135
+ context 'when using AppVeyor' do
136
+ it_behaves_like 'a service', :appveyor
108
137
  end
109
138
 
110
139
  context 'when using CircleCI' do
111
- before do
112
- allow(ENV).to receive(:[]).with('CIRCLECI').and_return('1')
113
- described_class.configuration
114
- end
140
+ it_behaves_like 'a service', :circleci
141
+ end
115
142
 
116
- it 'sets service parameters for this service and no other' do
117
- expect(described_class).not_to have_received(:set_service_params_for_travis)
118
- expect(described_class).to have_received(:set_service_params_for_circleci)
119
- expect(described_class).not_to have_received(:set_service_params_for_semaphore)
120
- expect(described_class).not_to have_received(:set_service_params_for_jenkins)
121
- expect(described_class).not_to have_received(:set_service_params_for_coveralls_local)
122
- expect(described_class).to have_received(:set_standard_service_params_for_generic_ci)
123
- end
143
+ context 'when using GitLab CI' do
144
+ it_behaves_like 'a service', :gitlab
124
145
  end
125
146
 
126
- context 'when using Semaphore' do
127
- before do
128
- allow(ENV).to receive(:[]).with('SEMAPHORE').and_return('1')
129
- described_class.configuration
130
- end
147
+ context 'when using Jenkins' do
148
+ it_behaves_like 'a service', :jenkins
149
+ end
131
150
 
132
- it 'sets service parameters for this service and no other' do
133
- expect(described_class).not_to have_received(:set_service_params_for_travis)
134
- expect(described_class).not_to have_received(:set_service_params_for_circleci)
135
- expect(described_class).to have_received(:set_service_params_for_semaphore)
136
- expect(described_class).not_to have_received(:set_service_params_for_jenkins)
137
- expect(described_class).not_to have_received(:set_service_params_for_coveralls_local)
138
- expect(described_class).to have_received(:set_standard_service_params_for_generic_ci)
139
- end
151
+ context 'when using Semaphore' do
152
+ it_behaves_like 'a service', :semaphore
140
153
  end
141
154
 
142
- context 'when using Jenkins' do
143
- before do
144
- allow(ENV).to receive(:[]).with('JENKINS_URL').and_return('1')
145
- described_class.configuration
146
- end
155
+ context 'when using Tddium' do
156
+ it_behaves_like 'a service', :tddium
157
+ end
147
158
 
148
- it 'sets service parameters for this service and no other' do
149
- expect(described_class).not_to have_received(:set_service_params_for_travis)
150
- expect(described_class).not_to have_received(:set_service_params_for_circleci)
151
- expect(described_class).not_to have_received(:set_service_params_for_semaphore)
152
- expect(described_class).to have_received(:set_service_params_for_jenkins)
153
- expect(described_class).not_to have_received(:set_service_params_for_coveralls_local)
154
- expect(described_class).to have_received(:set_standard_service_params_for_generic_ci)
155
- end
159
+ context 'when using Travis' do
160
+ it_behaves_like 'a service', :travis
156
161
  end
157
162
 
158
163
  context 'when running Coveralls locally' do
159
- before do
160
- allow(ENV).to receive(:[]).with('COVERALLS_RUN_LOCALLY').and_return('1')
161
- described_class.configuration
162
- end
163
-
164
- it 'sets service parameters for this service and no other' do
165
- expect(described_class).not_to have_received(:set_service_params_for_travis)
166
- expect(described_class).not_to have_received(:set_service_params_for_circleci)
167
- expect(described_class).not_to have_received(:set_service_params_for_semaphore)
168
- expect(described_class).not_to have_received(:set_service_params_for_jenkins)
169
- expect(described_class).to have_received(:set_service_params_for_coveralls_local)
170
- expect(described_class).to have_received(:set_standard_service_params_for_generic_ci)
171
- end
164
+ it_behaves_like 'a service', :coveralls_local
172
165
  end
173
166
 
174
167
  context 'when using a generic CI' do
175
- before do
176
- allow(ENV).to receive(:[]).with('CI_NAME').and_return('1')
177
- described_class.configuration
178
- end
179
-
180
- it 'sets service parameters for this service and no other' do
181
- expect(described_class).not_to have_received(:set_service_params_for_travis)
182
- expect(described_class).not_to have_received(:set_service_params_for_circleci)
183
- expect(described_class).not_to have_received(:set_service_params_for_semaphore)
184
- expect(described_class).not_to have_received(:set_service_params_for_jenkins)
185
- expect(described_class).not_to have_received(:set_service_params_for_coveralls_local)
186
- expect(described_class).to have_received(:set_standard_service_params_for_generic_ci).with(anything)
187
- end
168
+ it_behaves_like 'a service', :generic
188
169
  end
189
170
  end
190
171
  end
191
172
 
192
- describe '.set_service_params_for_travis' do
173
+ describe '.define_service_params_for_travis' do
193
174
  let(:travis_job_id) { SecureRandom.hex(4) }
194
175
 
195
176
  before do
@@ -198,25 +179,25 @@ describe Coveralls::Configuration do
198
179
 
199
180
  it 'sets the service_job_id' do
200
181
  config = {}
201
- described_class.set_service_params_for_travis(config, nil)
182
+ described_class.define_service_params_for_travis(config, nil)
202
183
  expect(config[:service_job_id]).to eq(travis_job_id)
203
184
  end
204
185
 
205
186
  it 'sets the service_name to travis-ci by default' do
206
187
  config = {}
207
- described_class.set_service_params_for_travis(config, nil)
188
+ described_class.define_service_params_for_travis(config, nil)
208
189
  expect(config[:service_name]).to eq('travis-ci')
209
190
  end
210
191
 
211
192
  it 'sets the service_name to a value if one is passed in' do
212
193
  config = {}
213
194
  random_name = SecureRandom.hex(4)
214
- described_class.set_service_params_for_travis(config, random_name)
195
+ described_class.define_service_params_for_travis(config, random_name)
215
196
  expect(config[:service_name]).to eq(random_name)
216
197
  end
217
198
  end
218
199
 
219
- describe '.set_service_params_for_circleci' do
200
+ describe '.define_service_params_for_circleci' do
220
201
  let(:circle_build_num) { SecureRandom.hex(4) }
221
202
 
222
203
  before do
@@ -225,13 +206,13 @@ describe Coveralls::Configuration do
225
206
 
226
207
  it 'sets the expected parameters' do
227
208
  config = {}
228
- described_class.set_service_params_for_circleci(config)
209
+ described_class.define_service_params_for_circleci(config)
229
210
  expect(config[:service_name]).to eq('circleci')
230
211
  expect(config[:service_number]).to eq(circle_build_num)
231
212
  end
232
213
  end
233
214
 
234
- describe '.set_service_params_for_gitlab' do
215
+ describe '.define_service_params_for_gitlab' do
235
216
  let(:commit_sha) { SecureRandom.hex(32) }
236
217
  let(:service_job_number) { 'spec:one' }
237
218
  let(:service_job_id) { 1234 }
@@ -246,7 +227,7 @@ describe Coveralls::Configuration do
246
227
 
247
228
  it 'sets the expected parameters' do
248
229
  config = {}
249
- described_class.set_service_params_for_gitlab(config)
230
+ described_class.define_service_params_for_gitlab(config)
250
231
  expect(config[:service_name]).to eq('gitlab-ci')
251
232
  expect(config[:service_job_number]).to eq(service_job_number)
252
233
  expect(config[:service_job_id]).to eq(service_job_id)
@@ -255,7 +236,7 @@ describe Coveralls::Configuration do
255
236
  end
256
237
  end
257
238
 
258
- describe '.set_service_params_for_semaphore' do
239
+ describe '.define_service_params_for_semaphore' do
259
240
  let(:semaphore_build_num) { SecureRandom.hex(4) }
260
241
 
261
242
  before do
@@ -264,13 +245,13 @@ describe Coveralls::Configuration do
264
245
 
265
246
  it 'sets the expected parameters' do
266
247
  config = {}
267
- described_class.set_service_params_for_semaphore(config)
248
+ described_class.define_service_params_for_semaphore(config)
268
249
  expect(config[:service_name]).to eq('semaphore')
269
250
  expect(config[:service_number]).to eq(semaphore_build_num)
270
251
  end
271
252
  end
272
253
 
273
- describe '.set_service_params_for_jenkins' do
254
+ describe '.define_service_params_for_jenkins' do
274
255
  let(:service_pull_request) { '1234' }
275
256
  let(:build_num) { SecureRandom.hex(4) }
276
257
 
@@ -281,25 +262,25 @@ describe Coveralls::Configuration do
281
262
 
282
263
  it 'sets the expected parameters' do
283
264
  config = {}
284
- described_class.set_service_params_for_jenkins(config)
285
- described_class.set_standard_service_params_for_generic_ci(config)
265
+ described_class.define_service_params_for_jenkins(config)
266
+ described_class.define_standard_service_params_for_generic_ci(config)
286
267
  expect(config[:service_name]).to eq('jenkins')
287
268
  expect(config[:service_number]).to eq(build_num)
288
269
  expect(config[:service_pull_request]).to eq(service_pull_request)
289
270
  end
290
271
  end
291
272
 
292
- describe '.set_service_params_for_coveralls_local' do
273
+ describe '.define_service_params_for_coveralls_local' do
293
274
  it 'sets the expected parameters' do
294
275
  config = {}
295
- described_class.set_service_params_for_coveralls_local(config)
276
+ described_class.define_service_params_for_coveralls_local(config)
296
277
  expect(config[:service_name]).to eq('coveralls-ruby')
297
278
  expect(config[:service_job_id]).to be_nil
298
279
  expect(config[:service_event_type]).to eq('manual')
299
280
  end
300
281
  end
301
282
 
302
- describe '.set_service_params_for_generic_ci' do
283
+ describe '.define_service_params_for_generic_ci' do
303
284
  let(:service_name) { SecureRandom.hex(4) }
304
285
  let(:service_number) { SecureRandom.hex(4) }
305
286
  let(:service_build_url) { SecureRandom.hex(4) }
@@ -316,7 +297,7 @@ describe Coveralls::Configuration do
316
297
 
317
298
  it 'sets the expected parameters' do
318
299
  config = {}
319
- described_class.set_standard_service_params_for_generic_ci(config)
300
+ described_class.define_standard_service_params_for_generic_ci(config)
320
301
  expect(config[:service_name]).to eq(service_name)
321
302
  expect(config[:service_number]).to eq(service_number)
322
303
  expect(config[:service_build_url]).to eq(service_build_url)
@@ -325,7 +306,7 @@ describe Coveralls::Configuration do
325
306
  end
326
307
  end
327
308
 
328
- describe '.set_service_params_for_appveyor' do
309
+ describe '.define_service_params_for_appveyor' do
329
310
  let(:service_number) { SecureRandom.hex(4) }
330
311
  let(:service_branch) { SecureRandom.hex(4) }
331
312
  let(:commit_sha) { SecureRandom.hex(4) }
@@ -340,7 +321,7 @@ describe Coveralls::Configuration do
340
321
 
341
322
  it 'sets the expected parameters' do
342
323
  config = {}
343
- described_class.set_service_params_for_appveyor(config)
324
+ described_class.define_service_params_for_appveyor(config)
344
325
  expect(config[:service_name]).to eq('appveyor')
345
326
  expect(config[:service_number]).to eq(service_number)
346
327
  expect(config[:service_branch]).to eq(service_branch)
@@ -349,7 +330,7 @@ describe Coveralls::Configuration do
349
330
  end
350
331
  end
351
332
 
352
- describe '.set_service_params_for_tddium' do
333
+ describe '.define_service_params_for_tddium' do
353
334
  let(:service_number) { SecureRandom.hex(4) }
354
335
  let(:service_job_number) { SecureRandom.hex(4) }
355
336
  let(:service_pull_request) { SecureRandom.hex(4) }
@@ -364,7 +345,7 @@ describe Coveralls::Configuration do
364
345
 
365
346
  it 'sets the expected parameters' do
366
347
  config = {}
367
- described_class.set_service_params_for_tddium(config)
348
+ described_class.define_service_params_for_tddium(config)
368
349
  expect(config[:service_name]).to eq('tddium')
369
350
  expect(config[:service_number]).to eq(service_number)
370
351
  expect(config[:service_job_number]).to eq(service_job_number)