danger-rubocop 0.11.0 → 0.12.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a25805f10b9265549f39e7efb812f9b940d317727b031a8546aaa34e87a6f57
4
- data.tar.gz: 553e742ad2d0780f441a0bb443bcc24b18afd2d26a78fec7cb92b9f7b5abafe1
3
+ metadata.gz: e62c69c270c52a9db56563f52892f3e3f04ac0f154a70144f20ef66f2a5db517
4
+ data.tar.gz: 7db336caf7afd0d8574a66096ee0276b9e92f725d914e57e5720bfe6a83fc27a
5
5
  SHA512:
6
- metadata.gz: df8c319c5b617f7ee5e2698e0db2d2610eeac3007dc3b5d183261295608aaba1805ae496f3b70897a7570bc79f222ed8be6f1af6859d3a0b5d2f6090377a297c
7
- data.tar.gz: 8611653f86ad51b236dd4f4b7104e4776c8748d30cfdbc47f70bad2e82580aff9e46b8b8726ccfd1261f48e719ac3459b123871864ca0ddda5ff87e86d5a06d2
6
+ metadata.gz: e88de395cb97400f569e38461f45dfd978483bbaf42f048865b4e3f33fefb86632c5ca55f63796cb45a5f5947065200cb6e2bc35fcaa3f42c932c565de7d2cb8
7
+ data.tar.gz: c192a3cf0f8b3b199d2e6526c3df8f73c96cffed6cb683f7216dfd00ff9a2c92c83cac77bca63b28eabc215f26bae67c003737977ea112c62d2b73dcb4939c8f
data/Gemfile.lock CHANGED
@@ -52,7 +52,8 @@ GEM
52
52
  faraday-net_http_persistent (1.1.0)
53
53
  ffi (1.15.0)
54
54
  formatador (0.2.5)
55
- git (1.8.1)
55
+ git (1.13.1)
56
+ addressable (~> 2.8)
56
57
  rchardet (~> 1.8)
57
58
  guard (2.16.2)
58
59
  formatador (>= 0.2.4)
data/README.md CHANGED
@@ -60,6 +60,7 @@ The following keys are supported:
60
60
  * `fail_on_inline_comment`: pass `true` to use `fail` instead of `warn` on inline comment.
61
61
  * `report_severity`: pass `true` to use `fail` or `warn` based on Rubocop severity.
62
62
  * `report_danger`: pass true to report errors to Danger, and break CI.
63
+ * `include_cop_names`: pass true to include cop names when reporting errors with `report_danger`.
63
64
  * `config`: path to the `.rubocop.yml` file.
64
65
  * `only_report_new_offenses`: pass `true` to only report offenses that are in current user's scope.
65
66
  Note that this won't mark offenses for _Metrics/XXXLength_ if you add lines to an already existing scope.
data/lib/danger_plugin.rb CHANGED
@@ -43,7 +43,7 @@ module Danger
43
43
  files_to_report = rubocop(files_to_lint, force_exclusion, only_report_new_offenses, cmd: rubocop_cmd, config_path: config_path)
44
44
 
45
45
  return if files_to_report.empty?
46
- return report_failures files_to_report if report_danger
46
+ return report_failures(files_to_report, include_cop_names: include_cop_names) if report_danger
47
47
 
48
48
  if inline_comment
49
49
  add_violation_for_each_line(files_to_report, fail_on_inline_comment, report_severity, include_cop_names: include_cop_names)
@@ -108,8 +108,7 @@ module Danger
108
108
  style: { border_i: '|' },
109
109
  rows: offending_files.flat_map do |file|
110
110
  file['offenses'].map do |offense|
111
- offense_message = offense['message']
112
- offense_message = offense['cop_name'] + ': ' + offense_message if include_cop_names
111
+ offense_message = offense_message(offense, include_cop_names: include_cop_names)
113
112
  [file['path'], offense['location']['line'], offense_message]
114
113
  end
115
114
  end
@@ -117,10 +116,11 @@ module Danger
117
116
  message + table.split("\n")[1..-2].join("\n")
118
117
  end
119
118
 
120
- def report_failures(offending_files)
119
+ def report_failures(offending_files, include_cop_names: false)
121
120
  offending_files.each do |file|
122
121
  file['offenses'].each do |offense|
123
- fail "#{file['path']} | #{offense['location']['line']} | #{offense['message']}"
122
+ offense_message = offense_message(offense, include_cop_names: include_cop_names)
123
+ fail "#{file['path']} | #{offense['location']['line']} | #{offense_message}"
124
124
  end
125
125
  end
126
126
  end
@@ -128,8 +128,7 @@ module Danger
128
128
  def add_violation_for_each_line(offending_files, fail_on_inline_comment, report_severity, include_cop_names: false)
129
129
  offending_files.flat_map do |file|
130
130
  file['offenses'].map do |offense|
131
- offense_message = offense['message']
132
- offense_message = offense['cop_name'] + ': ' + offense_message if include_cop_names
131
+ offense_message = offense_message(offense, include_cop_names: include_cop_names)
133
132
  kargs = {
134
133
  file: file['path'],
135
134
  line: offense['location']['line']
@@ -155,5 +154,11 @@ module Danger
155
154
  end
156
155
  Shellwords.join(to_lint)
157
156
  end
157
+
158
+ def offense_message(offense, include_cop_names: false)
159
+ return offense['message'] unless include_cop_names
160
+
161
+ "#{offense['cop_name']}: #{offense['message']}"
162
+ end
158
163
  end
159
164
  end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module DangerRubocop
2
- VERSION = '0.11.0'.freeze
2
+ VERSION = '0.12.0'.freeze
3
3
  end
@@ -299,7 +299,7 @@ EOS
299
299
  end
300
300
 
301
301
  context 'with fail_on_inline_comment option' do
302
- it 'reports violations as line by line failures' do
302
+ before do
303
303
  allow(@rubocop.git).to receive(:modified_files)
304
304
  .and_return(['spec/fixtures/ruby_file.rb'])
305
305
  allow(@rubocop.git).to receive(:added_files).and_return([])
@@ -307,61 +307,70 @@ EOS
307
307
  allow(@rubocop).to receive(:`)
308
308
  .with('bundle exec rubocop -f json --only-recognized-file-types spec/fixtures/ruby_file.rb')
309
309
  .and_return(response_ruby_file)
310
+ end
310
311
 
312
+ it 'reports violations as line by line failures' do
311
313
  @rubocop.lint(fail_on_inline_comment: true, inline_comment: true)
312
314
 
313
315
  expect(@rubocop.violation_report[:errors].first.to_s)
314
316
  .to eq("Violation Don't do that! { sticky: false, file: spec/fixtures/ruby_file.rb, line: 13, type: error }")
315
317
  end
318
+
319
+ it 'includes cop names when include_cop_names is set' do
320
+ @rubocop.lint(fail_on_inline_comment: true, inline_comment: true, include_cop_names: true)
321
+
322
+ expect(@rubocop.violation_report[:errors].first.to_s)
323
+ .to eq("Violation Syntax/WhetherYouShouldDoThat: Don't do that! { sticky: false, file: spec/fixtures/ruby_file.rb, line: 13, type: error }")
324
+ end
316
325
  end
326
+ end
317
327
 
318
- context 'with report_severity option' do
319
- context 'file with error' do
320
- it 'reports violations by rubocop severity' do
321
- allow(@rubocop.git).to receive(:added_files).and_return([])
322
- allow(@rubocop.git).to receive(:modified_files)
323
- .and_return(["spec/fixtures/another_ruby_file.rb"])
324
- allow(@rubocop.git).to receive(:renamed_files).and_return([])
328
+ context 'with report_severity option' do
329
+ context 'file with error' do
330
+ it 'reports violations by rubocop severity' do
331
+ allow(@rubocop.git).to receive(:added_files).and_return([])
332
+ allow(@rubocop.git).to receive(:modified_files)
333
+ .and_return(["spec/fixtures/another_ruby_file.rb"])
334
+ allow(@rubocop.git).to receive(:renamed_files).and_return([])
325
335
 
326
- allow(@rubocop).to receive(:`)
327
- .with('bundle exec rubocop -f json --only-recognized-file-types spec/fixtures/another_ruby_file.rb')
328
- .and_return(response_another_ruby_file)
336
+ allow(@rubocop).to receive(:`)
337
+ .with('bundle exec rubocop -f json --only-recognized-file-types spec/fixtures/another_ruby_file.rb')
338
+ .and_return(response_another_ruby_file)
329
339
 
330
- @rubocop.lint(report_severity: true, inline_comment: true)
340
+ @rubocop.lint(report_severity: true, inline_comment: true)
331
341
 
332
- expect(@rubocop.violation_report[:errors].first.to_s)
333
- .to eq("Violation Don't do that! { sticky: false, file: spec/fixtures/another_ruby_file.rb, line: 23, type: error }")
334
- end
342
+ expect(@rubocop.violation_report[:errors].first.to_s)
343
+ .to eq("Violation Don't do that! { sticky: false, file: spec/fixtures/another_ruby_file.rb, line: 23, type: error }")
335
344
  end
345
+ end
346
+ end
336
347
 
337
- context 'file with warning' do
338
- it 'reports violations by rubocop severity' do
339
- allow(@rubocop.git).to receive(:added_files).and_return([])
340
- allow(@rubocop.git).to receive(:modified_files)
341
- .and_return(["spec/fixtures/ruby_file.rb"])
342
- allow(@rubocop.git).to receive(:renamed_files).and_return([])
348
+ context 'file with warning' do
349
+ it 'reports violations by rubocop severity' do
350
+ allow(@rubocop.git).to receive(:added_files).and_return([])
351
+ allow(@rubocop.git).to receive(:modified_files)
352
+ .and_return(["spec/fixtures/ruby_file.rb"])
353
+ allow(@rubocop.git).to receive(:renamed_files).and_return([])
343
354
 
344
- allow(@rubocop).to receive(:`)
345
- .with('bundle exec rubocop -f json --only-recognized-file-types spec/fixtures/ruby_file.rb')
346
- .and_return(response_ruby_file)
355
+ allow(@rubocop).to receive(:`)
356
+ .with('bundle exec rubocop -f json --only-recognized-file-types spec/fixtures/ruby_file.rb')
357
+ .and_return(response_ruby_file)
347
358
 
348
- @rubocop.lint(report_severity: true, inline_comment: true)
359
+ @rubocop.lint(report_severity: true, inline_comment: true)
349
360
 
350
- expect(@rubocop.violation_report[:warnings].first.to_s)
351
- .to eq("Violation Don't do that! { sticky: false, file: spec/fixtures/ruby_file.rb, line: 13, type: warning }")
352
- end
353
- end
361
+ expect(@rubocop.violation_report[:warnings].first.to_s)
362
+ .to eq("Violation Don't do that! { sticky: false, file: spec/fixtures/ruby_file.rb, line: 13, type: warning }")
354
363
  end
364
+ end
355
365
 
356
- context 'using standardrb cmd' do
357
- it 'executes using the standardrb cmd' do
358
- allow(@rubocop).to receive(:`)
359
- .with('bundle exec standardrb -f json --only-recognized-file-types --config path/to/rubocop.yml spec/fixtures/ruby_file.rb')
360
- .and_return(response_ruby_file)
366
+ context 'using standardrb cmd' do
367
+ it 'executes using the standardrb cmd' do
368
+ allow(@rubocop).to receive(:`)
369
+ .with('bundle exec standardrb -f json --only-recognized-file-types --config path/to/rubocop.yml spec/fixtures/ruby_file.rb')
370
+ .and_return(response_ruby_file)
361
371
 
362
- # Do it
363
- @rubocop.lint(files: 'spec/fixtures/ruby*.rb', rubocop_cmd: 'standardrb', config: 'path/to/rubocop.yml')
364
- end
372
+ # Do it
373
+ @rubocop.lint(files: 'spec/fixtures/ruby*.rb', rubocop_cmd: 'standardrb', config: 'path/to/rubocop.yml')
365
374
  end
366
375
  end
367
376
 
@@ -382,8 +391,7 @@ EOS
382
391
  end
383
392
 
384
393
  describe 'report to danger' do
385
- let(:fail_msg) { %{spec/fixtures/ruby_file.rb | 13 | Don't do that!} }
386
- it 'reports to danger' do
394
+ before do
387
395
  allow(@rubocop.git).to receive(:modified_files)
388
396
  .and_return(['spec/fixtures/ruby_file.rb'])
389
397
  allow(@rubocop.git).to receive(:added_files).and_return([])
@@ -391,10 +399,20 @@ EOS
391
399
  allow(@rubocop).to receive(:`)
392
400
  .with('bundle exec rubocop -f json --only-recognized-file-types spec/fixtures/ruby_file.rb')
393
401
  .and_return(response_ruby_file)
402
+ end
394
403
 
404
+ it 'reports to danger' do
405
+ fail_msg = %{spec/fixtures/ruby_file.rb | 13 | Don't do that!}
395
406
  expect(@rubocop).to receive(:fail).with(fail_msg)
396
407
  @rubocop.lint(report_danger: true)
397
408
  end
409
+
410
+ it 'includes cop names when include_cop_names is set' do
411
+ fail_msg = %{spec/fixtures/ruby_file.rb | 13 | Syntax/WhetherYouShouldDoThat: Don't do that!}
412
+
413
+ expect(@rubocop).to receive(:fail).with(fail_msg)
414
+ @rubocop.lint(report_danger: true, include_cop_names: true)
415
+ end
398
416
  end
399
417
  end
400
418
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger-rubocop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ash Furrow
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-16 00:00:00.000000000 Z
11
+ date: 2023-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: danger
@@ -192,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
192
192
  - !ruby/object:Gem::Version
193
193
  version: '0'
194
194
  requirements: []
195
- rubygems_version: 3.3.13
195
+ rubygems_version: 3.4.10
196
196
  signing_key:
197
197
  specification_version: 4
198
198
  summary: A Danger plugin for running Ruby files through Rubocop.