coveralls_reborn 0.12.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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)