danger-wcc 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.circleci/config.yml +46 -0
- data/.gitignore +6 -0
- data/.rubocop.yml +219 -0
- data/.ruby-version +1 -0
- data/.travis.yml +12 -0
- data/Dangerfile +5 -0
- data/Gemfile +6 -0
- data/Guardfile +35 -0
- data/LICENSE +201 -0
- data/README.md +2 -0
- data/Rakefile +25 -0
- data/danger-wcc.gemspec +58 -0
- data/lib/danger_plugin.rb +3 -0
- data/lib/version.rb +5 -0
- data/lib/wcc/commit_lint.rb +158 -0
- data/lib/wcc/commit_lint/README.md +3 -0
- data/lib/wcc/commit_lint/commit_check.rb +19 -0
- data/lib/wcc/commit_lint/empty_line_check.rb +22 -0
- data/lib/wcc/commit_lint/subject_cap_check.rb +22 -0
- data/lib/wcc/commit_lint/subject_length_check.rb +28 -0
- data/lib/wcc/commit_lint/subject_period_check.rb +22 -0
- data/lib/wcc/commit_lint/subject_words_check.rb +22 -0
- data/lib/wcc/default.jshintrc +5 -0
- data/lib/wcc/defaults.reek +131 -0
- data/lib/wcc/github.rb +24 -0
- data/lib/wcc/jshint.rb +63 -0
- data/lib/wcc/plugin.rb +128 -0
- data/lib/wcc/reek.rb +56 -0
- data/lib/wcc/rubocop_exceptions.rb +99 -0
- data/lib/wcc/todos.rb +78 -0
- data/lib/wcc/utils.rb +136 -0
- data/spec/fixtures/brakeman/a.tmp +13 -0
- data/spec/fixtures/brakeman/b.tmp +14 -0
- data/spec/fixtures/brakeman/brakeman.diff +20 -0
- data/spec/fixtures/brakeman/brakeman.out +14 -0
- data/spec/fixtures/exception_context.diff +15 -0
- data/spec/fixtures/exception_insert_context.diff +14 -0
- data/spec/fixtures/exception_misspelled.diff +14 -0
- data/spec/fixtures/exception_multiline_context.diff +20 -0
- data/spec/fixtures/exception_reenabled.diff +13 -0
- data/spec/fixtures/find_in_diff.rb +21 -0
- data/spec/fixtures/find_in_diff_2_chunks.diff +24 -0
- data/spec/fixtures/flay.diff +17 -0
- data/spec/fixtures/flay.txt +18 -0
- data/spec/fixtures/github/labels.json +72 -0
- data/spec/fixtures/github_pr.json +325 -0
- data/spec/fixtures/jshint/a.tmp +5 -0
- data/spec/fixtures/jshint/b.tmp +7 -0
- data/spec/fixtures/jshint/jshint.diff +13 -0
- data/spec/fixtures/jshint/out.jshint +7 -0
- data/spec/fixtures/no_exception.diff +10 -0
- data/spec/fixtures/no_todo.diff +13 -0
- data/spec/fixtures/reek/line_numbers.reek +121 -0
- data/spec/fixtures/reek/reek.diff +50 -0
- data/spec/fixtures/rubocop_exception.rb +39 -0
- data/spec/fixtures/todo.rb +21 -0
- data/spec/fixtures/todo_link_next_line.diff +14 -0
- data/spec/fixtures/todo_link_same_line.diff +13 -0
- data/spec/fixtures/todo_no_link.diff +13 -0
- data/spec/fixtures/todo_removed.diff +13 -0
- data/spec/fixtures_helper.rb +19 -0
- data/spec/spec_helper.rb +73 -0
- data/spec/wcc/commit_lint_spec.rb +392 -0
- data/spec/wcc/github_spec.rb +67 -0
- data/spec/wcc/jshint_spec.rb +68 -0
- data/spec/wcc/plugin_spec.rb +134 -0
- data/spec/wcc/reek_spec.rb +71 -0
- data/spec/wcc/rubocop_exceptions_spec.rb +136 -0
- data/spec/wcc/todos_spec.rb +96 -0
- data/spec/wcc/utils_spec.rb +134 -0
- data/spec/wcc_spec.rb +21 -0
- metadata +393 -0
@@ -0,0 +1,67 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
4
|
+
require 'webmock'
|
5
|
+
|
6
|
+
module Danger
|
7
|
+
include FixturesHelper
|
8
|
+
|
9
|
+
API_URL = 'https://api.github.com'
|
10
|
+
|
11
|
+
describe Danger::DangerWCC do
|
12
|
+
before do
|
13
|
+
@dangerfile = testing_dangerfile
|
14
|
+
@my_plugin = @dangerfile.wcc
|
15
|
+
@github = @dangerfile.github
|
16
|
+
|
17
|
+
allow(@github).to receive(:pr_json)
|
18
|
+
.and_return(JSON.parse(load_fixture('github_pr.json')))
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'github' do
|
22
|
+
before do
|
23
|
+
stub_request(:get, API_URL + '/repos/watermarkchurch/danger-wcc/labels')
|
24
|
+
.with(query: hash_excluding({ 'anything' => 1 }))
|
25
|
+
.to_return(
|
26
|
+
body: load_fixture('github/labels.json'),
|
27
|
+
headers: { 'Content-Type' => 'application/json' }
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
it '#labels returns array of existing labels' do
|
32
|
+
# act
|
33
|
+
labels = @my_plugin.labels
|
34
|
+
|
35
|
+
# assert
|
36
|
+
expect(labels.length).to eq(10)
|
37
|
+
end
|
38
|
+
|
39
|
+
it '#add_labels adds existing labels to issue' do
|
40
|
+
stub = stub_request(:post,
|
41
|
+
API_URL + '/repos/watermarkchurch/danger-wcc/issues/2/labels')
|
42
|
+
.with(body: '["backlog","bug","duplicate"]')
|
43
|
+
|
44
|
+
# act
|
45
|
+
@my_plugin.add_labels('backlog', 'bug', 'duplicate')
|
46
|
+
|
47
|
+
# assert
|
48
|
+
expect(stub).to have_been_requested
|
49
|
+
end
|
50
|
+
|
51
|
+
it '#add_labels creates new labels before adding to issue' do
|
52
|
+
stub = stub_request(:post,
|
53
|
+
API_URL + '/repos/watermarkchurch/danger-wcc/labels')
|
54
|
+
.with(body: '{"name":"new_label","color":"ffffff"}')
|
55
|
+
stub_request(:post,
|
56
|
+
API_URL + '/repos/watermarkchurch/danger-wcc/issues/2/labels')
|
57
|
+
.with(body: '["backlog","new_label"]')
|
58
|
+
|
59
|
+
# act
|
60
|
+
@my_plugin.add_labels('backlog', 'new_label')
|
61
|
+
|
62
|
+
# assert
|
63
|
+
expect(stub).to have_been_requested
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
4
|
+
|
5
|
+
module Danger
|
6
|
+
describe Danger::DangerWCC do
|
7
|
+
before do
|
8
|
+
@dangerfile = testing_dangerfile
|
9
|
+
@my_plugin = @dangerfile.wcc
|
10
|
+
@git = @dangerfile.git
|
11
|
+
@github = @dangerfile.github
|
12
|
+
|
13
|
+
allow(@github).to receive(:pr_json)
|
14
|
+
.and_return(JSON.parse(load_fixture('github_pr.json')))
|
15
|
+
allow(subject).to receive(:run)
|
16
|
+
.with(/npm/)
|
17
|
+
.and_return('')
|
18
|
+
allow(subject).to receive(:run_and_diff)
|
19
|
+
.and_return(load_fixture('jshint/jshint.diff'))
|
20
|
+
allow(subject).to receive(:run)
|
21
|
+
.with(/\/tmp\/.+\/jshint/)
|
22
|
+
.and_return(load_fixture('jshint/out.jshint'))
|
23
|
+
allow(Dir).to receive(:exist?)
|
24
|
+
.with('app/assets/javascripts')
|
25
|
+
.and_return(true)
|
26
|
+
end
|
27
|
+
|
28
|
+
describe 'jshint' do
|
29
|
+
let(:subject) { Danger::DangerWCC::Jshint.new(@my_plugin) }
|
30
|
+
|
31
|
+
after do
|
32
|
+
File.delete('.jshint') if File.file?('.jshint')
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'runs jshint and parses diff' do
|
36
|
+
# act
|
37
|
+
subject.perform
|
38
|
+
|
39
|
+
# assert
|
40
|
+
warnings = @dangerfile.violation_report[:warnings]
|
41
|
+
expect(warnings.length).to eq(2)
|
42
|
+
|
43
|
+
expect(warnings[0].message)
|
44
|
+
.to eq("Misleading line break before '+'; readers may interpret this"\
|
45
|
+
' as an expression boundary.')
|
46
|
+
expect(warnings[0].file).to eq('app/assets/javascripts/comment.js')
|
47
|
+
expect(warnings[0].line).to eq(42)
|
48
|
+
|
49
|
+
expect(warnings.last.message)
|
50
|
+
.to eq("['AM'] is better written in dot notation.")
|
51
|
+
expect(warnings.last.file).to eq('app/assets/javascripts/mobiscroll.js')
|
52
|
+
expect(warnings.last.line).to eq(3)
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'writes .jshint only if .jshint doesnt exist' do
|
56
|
+
begin
|
57
|
+
File.write('.jshint', '{}')
|
58
|
+
|
59
|
+
subject.perform
|
60
|
+
|
61
|
+
expect(File.read('.jshint')).to eq('{}')
|
62
|
+
ensure
|
63
|
+
File.delete('.jshint')
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,134 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
4
|
+
|
5
|
+
module Danger
|
6
|
+
describe Danger::DangerWCC do
|
7
|
+
before do
|
8
|
+
@dangerfile = testing_dangerfile
|
9
|
+
@my_plugin = @dangerfile.wcc
|
10
|
+
@git = @dangerfile.git
|
11
|
+
@github = @dangerfile.github
|
12
|
+
|
13
|
+
allow(@github).to receive(:html_link) do |text|
|
14
|
+
"<a href=\"github_html_link\">#{text}</a>"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'all' do
|
19
|
+
it 'runs all checks and passes default options' do
|
20
|
+
Danger::DangerWCC::CHECKS.each do |check|
|
21
|
+
expect(@my_plugin).to receive(check)
|
22
|
+
.with({})
|
23
|
+
end
|
24
|
+
|
25
|
+
# act
|
26
|
+
@my_plugin.all
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'errors if all checks disabled' do
|
30
|
+
disabled = Danger::DangerWCC::CHECKS
|
31
|
+
options = disabled.each_with_object({}) { |v, h| h[v] = false; }
|
32
|
+
|
33
|
+
# expect
|
34
|
+
disabled.each do |check|
|
35
|
+
expect(@my_plugin).to_not receive(check)
|
36
|
+
end
|
37
|
+
|
38
|
+
# act
|
39
|
+
expect {
|
40
|
+
@my_plugin.all(options)
|
41
|
+
}.to raise_error(ArgumentError)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'runs only enabled checks' do
|
45
|
+
enabled = %i[todos commit_lint]
|
46
|
+
disabled =
|
47
|
+
Danger::DangerWCC::CHECKS.reject do |check|
|
48
|
+
enabled.include?(check)
|
49
|
+
end
|
50
|
+
options = disabled.each_with_object({}) { |v, h| h[v] = false; }
|
51
|
+
|
52
|
+
# expect
|
53
|
+
enabled.each do |check|
|
54
|
+
expect(@my_plugin).to receive(check)
|
55
|
+
end
|
56
|
+
disabled.each do |check|
|
57
|
+
expect(@my_plugin).to_not receive(check)
|
58
|
+
end
|
59
|
+
|
60
|
+
# act
|
61
|
+
@my_plugin.all options
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'passes options' do
|
65
|
+
options =
|
66
|
+
Danger::DangerWCC::CHECKS.each_with_object({}) do |v, h|
|
67
|
+
h[v] = false
|
68
|
+
end
|
69
|
+
options[:commit_lint] = { test: { options: 1 } }
|
70
|
+
|
71
|
+
# expect
|
72
|
+
expect(@my_plugin).to receive(:commit_lint)
|
73
|
+
.with({ test: { options: 1 } })
|
74
|
+
|
75
|
+
# act
|
76
|
+
@my_plugin.all options
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe 'brakeman' do
|
81
|
+
it 'runs brakeman and parses diff' do
|
82
|
+
allow(@my_plugin).to receive(:run_and_diff)
|
83
|
+
.with(/^bundle exec brakeman/)
|
84
|
+
.and_return(load_fixture('brakeman/brakeman.diff'))
|
85
|
+
allow(@my_plugin).to receive(:run)
|
86
|
+
.with(/^bundle exec brakeman/)
|
87
|
+
.and_return(load_fixture('brakeman/brakeman.out'))
|
88
|
+
|
89
|
+
# act
|
90
|
+
@my_plugin.brakeman
|
91
|
+
|
92
|
+
# expect
|
93
|
+
warnings = @dangerfile.violation_report[:errors]
|
94
|
+
expect(warnings.length).to eq(2)
|
95
|
+
|
96
|
+
expect(warnings[0].message)
|
97
|
+
.to match(/SSL Verification Bypass/)
|
98
|
+
expect(warnings[0].file)
|
99
|
+
.to eq('app/controllers/wmoauth_controller.rb')
|
100
|
+
expect(warnings[0].line).to eq(78)
|
101
|
+
|
102
|
+
expect(warnings[1].message)
|
103
|
+
.to match(/Unescaped model attribute near line/)
|
104
|
+
expect(warnings[1].file)
|
105
|
+
.to eq('app/views/sections/_discussion_questions.html.erb')
|
106
|
+
expect(warnings[1].line).to eq(4)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
describe 'flay' do
|
111
|
+
it 'runs flay and reports only where changed' do
|
112
|
+
allow(@my_plugin).to receive(:run)
|
113
|
+
.with(/flay/)
|
114
|
+
.and_return(load_fixture('flay.txt'))
|
115
|
+
|
116
|
+
allow(@git).to receive(:diff)
|
117
|
+
.and_return([load_diff(
|
118
|
+
'app/models/discourse.rb',
|
119
|
+
'flay'
|
120
|
+
)])
|
121
|
+
|
122
|
+
# act
|
123
|
+
@my_plugin.flay
|
124
|
+
|
125
|
+
# assert
|
126
|
+
warnings = @dangerfile.violation_report[:warnings]
|
127
|
+
expect(warnings.length).to eq(1)
|
128
|
+
expect(warnings[0].message)
|
129
|
+
.to eq("IDENTICAL code found in :if (mass*2 = 152) at:\n"\
|
130
|
+
' <a href="github_html_link">app/models/discourse.rb#L177</a>')
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
4
|
+
|
5
|
+
module Danger
|
6
|
+
describe Danger::DangerWCC do
|
7
|
+
before do
|
8
|
+
@dangerfile = testing_dangerfile
|
9
|
+
@my_plugin = @dangerfile.wcc
|
10
|
+
@git = @dangerfile.git
|
11
|
+
@github = @dangerfile.github
|
12
|
+
|
13
|
+
allow(@github).to receive(:pr_json)
|
14
|
+
.and_return(JSON.parse(load_fixture('github_pr.json')))
|
15
|
+
allow(@github).to receive(:html_link) do |text|
|
16
|
+
"<a href=\"github_html_link\">#{text}</a>"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'reek' do
|
21
|
+
let(:subject) { Danger::DangerWCC::Reek.new(@my_plugin) }
|
22
|
+
|
23
|
+
after do
|
24
|
+
File.delete('defaults.reek') if File.file?('defaults.reek')
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'runs reek and parses diff' do
|
28
|
+
allow(subject).to receive(:run_and_diff)
|
29
|
+
.and_return(load_fixture('reek/reek.diff'))
|
30
|
+
allow(subject).to receive(:run)
|
31
|
+
.with(/^bundle exec reek/)
|
32
|
+
.and_return(load_fixture('reek/line_numbers.reek'))
|
33
|
+
|
34
|
+
# act
|
35
|
+
subject.perform
|
36
|
+
|
37
|
+
# expect
|
38
|
+
warnings = @dangerfile.violation_report[:warnings]
|
39
|
+
expect(warnings.length).to eq(6)
|
40
|
+
|
41
|
+
expect(warnings[0].message)
|
42
|
+
.to eq('TooManyStatements: Danger::DangerWCC#reek has approx 7 '\
|
43
|
+
'statements [https://github.com/troessner/reek/blob/master/docs/'\
|
44
|
+
'Too-Many-Statements.md](https://github.com/troessner/reek/blob/'\
|
45
|
+
'master/docs/Too-Many-Statements.md)')
|
46
|
+
expect(warnings[0].file).to eq('lib/wcc/plugin.rb')
|
47
|
+
expect(warnings[0].line).to eq(53)
|
48
|
+
|
49
|
+
expect(warnings.last.message)
|
50
|
+
.to eq('IrresponsibleModule: Danger has no descriptive comment '\
|
51
|
+
'[https://github.com/troessner/reek/blob/master/docs/'\
|
52
|
+
'Irresponsible-Module.md](https://github.com/troessner/reek/blob/'\
|
53
|
+
'master/docs/Irresponsible-Module.md)')
|
54
|
+
expect(warnings.last.file).to eq('spec/wcc/plugin_spec.rb')
|
55
|
+
expect(warnings.last.line).to eq(5)
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'writes defaults.reek only if .reek doesnt exist' do
|
59
|
+
begin
|
60
|
+
File.write('.reek', '')
|
61
|
+
|
62
|
+
subject.perform
|
63
|
+
|
64
|
+
expect(File.file?('defaults.reek')).to be false
|
65
|
+
ensure
|
66
|
+
File.delete('.reek')
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,136 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
4
|
+
|
5
|
+
module Danger
|
6
|
+
describe Danger::DangerWCC do
|
7
|
+
before do
|
8
|
+
@dangerfile = testing_dangerfile
|
9
|
+
@my_plugin = @dangerfile.wcc
|
10
|
+
@git = @dangerfile.git
|
11
|
+
@github = @dangerfile.github
|
12
|
+
|
13
|
+
allow(@github).to receive(:html_link) do |text|
|
14
|
+
"<a href=\"github_html_link\">#{text}</a>"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'rubocop exceptions' do
|
19
|
+
it 'Warns when Rubocop exception added without context' do
|
20
|
+
allow(@git).to receive(:diff)
|
21
|
+
.and_return([load_diff(
|
22
|
+
'spec/fixtures/rubocop_exception.rb',
|
23
|
+
'exception_reenabled'
|
24
|
+
)])
|
25
|
+
|
26
|
+
# act
|
27
|
+
@my_plugin.rubocop_exceptions
|
28
|
+
|
29
|
+
expect(@dangerfile.violation_report[:warnings])
|
30
|
+
.to eq([Violation.new('Rubocop rule Rails/SomeRule disabled in '\
|
31
|
+
'<a href="github_html_link">spec/fixtures/rubocop_exception.rb</a>'\
|
32
|
+
" \nPlease provide an explanation why this rule was disabled.",
|
33
|
+
false,
|
34
|
+
'spec/fixtures/rubocop_exception.rb',
|
35
|
+
5)])
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'Errors when rubocop exception not reenabled' do
|
39
|
+
allow(@git).to receive(:diff)
|
40
|
+
.and_return([load_diff(
|
41
|
+
'spec/fixtures/rubocop_exception.rb',
|
42
|
+
'exception_misspelled'
|
43
|
+
)])
|
44
|
+
|
45
|
+
# act
|
46
|
+
@my_plugin.rubocop_exceptions
|
47
|
+
|
48
|
+
expect(@dangerfile.violation_report[:errors])
|
49
|
+
.to eq([Violation.new('Rubocop rule Lint/SomeLint disabled in '\
|
50
|
+
'<a href="github_html_link">spec/fixtures/rubocop_exception.rb</a>'\
|
51
|
+
" \nPlease provide an explanation why this rule was disabled."\
|
52
|
+
"\n\nThe rule was not reenabled!\n"\
|
53
|
+
'Please add a `rubocop:enable` comment so the rule is disabled '\
|
54
|
+
'for the minimal scope.',
|
55
|
+
false,
|
56
|
+
'spec/fixtures/rubocop_exception.rb',
|
57
|
+
10)])
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'Messages when exception added with context' do
|
61
|
+
allow(@git).to receive(:diff)
|
62
|
+
.and_return([load_diff(
|
63
|
+
'spec/fixtures/rubocop_exception.rb',
|
64
|
+
'exception_context'
|
65
|
+
)])
|
66
|
+
|
67
|
+
# act
|
68
|
+
@my_plugin.rubocop_exceptions
|
69
|
+
|
70
|
+
expect(@dangerfile.violation_report[:messages])
|
71
|
+
.to eq([Violation.new('Rubocop rule Metrics/LineLength disabled in '\
|
72
|
+
'<a href="github_html_link">spec/fixtures/rubocop_exception.rb</a>'\
|
73
|
+
" explanation:\n\t> Disabling because I want to.",
|
74
|
+
false,
|
75
|
+
'spec/fixtures/rubocop_exception.rb',
|
76
|
+
15)])
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'Messages when exception added with multiline context' do
|
80
|
+
allow(@git).to receive(:diff)
|
81
|
+
.and_return([load_diff(
|
82
|
+
'spec/fixtures/rubocop_exception.rb',
|
83
|
+
'exception_multiline_context'
|
84
|
+
)])
|
85
|
+
|
86
|
+
# act
|
87
|
+
@my_plugin.rubocop_exceptions
|
88
|
+
|
89
|
+
expect(@dangerfile.violation_report[:messages])
|
90
|
+
.to eq([Violation.new('Rubocop rule Layout/AlignHash disabled in '\
|
91
|
+
'<a href="github_html_link">spec/fixtures/rubocop_exception.rb</a>'\
|
92
|
+
' explanation:'\
|
93
|
+
"\n\t> I want to disable this because.."\
|
94
|
+
"\n\t> I forgot the reasons.",
|
95
|
+
false,
|
96
|
+
'spec/fixtures/rubocop_exception.rb',
|
97
|
+
30)])
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'Messages when exception added in between existing comments' do
|
101
|
+
allow(@git).to receive(:diff)
|
102
|
+
.and_return([load_diff(
|
103
|
+
'spec/fixtures/rubocop_exception.rb',
|
104
|
+
'exception_insert_context'
|
105
|
+
)])
|
106
|
+
|
107
|
+
# act
|
108
|
+
@my_plugin.rubocop_exceptions
|
109
|
+
|
110
|
+
expect(@dangerfile.violation_report[:messages])
|
111
|
+
.to eq([Violation.new('Rubocop rule Metrics/ABC disabled in '\
|
112
|
+
'<a href="github_html_link">spec/fixtures/rubocop_exception.rb</a>'\
|
113
|
+
' explanation:'\
|
114
|
+
"\n\t> here is my comment why we are disabling ABC",
|
115
|
+
false,
|
116
|
+
'spec/fixtures/rubocop_exception.rb',
|
117
|
+
21)])
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'Does not message when no exception added' do
|
121
|
+
allow(@git).to receive(:diff)
|
122
|
+
.and_return([load_diff(
|
123
|
+
'spec/fixtures/rubocop_exception.rb',
|
124
|
+
'no_exception'
|
125
|
+
)])
|
126
|
+
|
127
|
+
# act
|
128
|
+
@my_plugin.rubocop_exceptions
|
129
|
+
|
130
|
+
expect(@dangerfile.violation_report[:messages]).to eq([])
|
131
|
+
expect(@dangerfile.violation_report[:warnings]).to eq([])
|
132
|
+
expect(@dangerfile.violation_report[:errors]).to eq([])
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|