danger-ktlint 0.0.6 → 0.0.7

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: 99b078a476493453fd609f033e65c6cd20d695617fc8a8a3e6a9c8b0b7745f3f
4
- data.tar.gz: bf60ceecd5cf172c879f80183933b55274a5f1261f00fa241ae56fa95e9f44ae
3
+ metadata.gz: fccc83b4c267453f15dbab68b15c2251de27eee1c89fbd7f47800f84f7528816
4
+ data.tar.gz: c97f5f1200761d40f806b18efd9bb29070914857656460935a3d1696198af6e9
5
5
  SHA512:
6
- metadata.gz: 255316fb1e4627d772601a0fc40ab3d8faf67e35696f4433477ed431a3de010a203e5f9201902c9c98f046450546d2829a457d980ce9d887a65db6dd4dc6b7ef
7
- data.tar.gz: 325c2fb3d73b05a9a4e8256c94accab75a8bdec4978d46d8b8ef1db6adea6947b776dcb1316be2271d6079f8f12347dcb02b13e4a600a546d4e6f67ce3dd98f3
6
+ metadata.gz: 14aa4af509079aa9ea8faabfc8a41e564fef09d1df5ec53d102898069ca3cdf1770ff9cb5bc3d1f0f484bdc1e08dd6e1ff68df5c2b7f8ad351a2f8f6588dad47
7
+ data.tar.gz: 34a20e7ec1eb556208a56fcd4c42b299a69ffd1a8fa9148888f87af6984aeeee043df9eb0ac5a9d75b10e05c02eb97290cff33d4004c9c8d5ca197678ae38aac
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## Unreleased
2
2
 
3
+ ## 0.0.7
4
+
5
+ - Support multiple ktlint result json.
6
+
3
7
  ## 0.0.6
4
8
 
5
9
  - Support GitLab and BitBucket server even if `inline_mode: false` is specified.
data/README.md CHANGED
@@ -46,6 +46,8 @@ Default is false.
46
46
  ktlint.skip_lint = true
47
47
  # If skip_lint is specified, report_file must also be specified.
48
48
  ktlint.report_file = 'result.json'
49
+ # If you use ktlint in multiple modules app, you can specify multiple ktlint result json.
50
+ # ktlint.report_files_pattern = '**/result.json'
49
51
  ktlint.lint
50
52
  ```
51
53
 
@@ -1,3 +1,3 @@
1
1
  module Ktlint
2
- VERSION = "0.0.6".freeze
2
+ VERSION = "0.0.7".freeze
3
3
  end
data/lib/ktlint/plugin.rb CHANGED
@@ -17,7 +17,7 @@ module Danger
17
17
  # TODO: Lint all files if `filtering: false`
18
18
  attr_accessor :filtering
19
19
 
20
- attr_accessor :skip_lint, :report_file
20
+ attr_accessor :skip_lint, :report_file, :report_files_pattern
21
21
 
22
22
  def limit
23
23
  @limit ||= nil
@@ -57,7 +57,7 @@ module Danger
57
57
 
58
58
  # Comment to a PR by ktlint result json
59
59
  #
60
- # // Sample ktlint result
60
+ # // Sample single ktlint result
61
61
  # [
62
62
  # {
63
63
  # "file": "app/src/main/java/com/mataku/Model.kt",
@@ -71,20 +71,22 @@ module Danger
71
71
  # ]
72
72
  # }
73
73
  # ]
74
- def send_markdown_comment(results, targets)
74
+ def send_markdown_comment(ktlint_results, targets)
75
75
  catch(:loop_break) do
76
76
  count = 0
77
- results.each do |result|
78
- result['errors'].each do |error|
79
- file_path = relative_file_path(result['file'])
80
- next unless targets.include?(file_path)
81
-
82
- message = "#{file_html_link(file_path, error['line'])}: #{error['message']}"
83
- fail(message)
84
- unless limit.nil?
85
- count += 1
86
- if count >= limit
87
- throw(:loop_break)
77
+ ktlint_results.each do |ktlint_result|
78
+ ktlint_result.each do |result|
79
+ result['errors'].each do |error|
80
+ file_path = relative_file_path(result['file'])
81
+ next unless targets.include?(file_path)
82
+
83
+ message = "#{file_html_link(file_path, error['line'])}: #{error['message']}"
84
+ fail(message)
85
+ unless limit.nil?
86
+ count += 1
87
+ if count >= limit
88
+ throw(:loop_break)
89
+ end
88
90
  end
89
91
  end
90
92
  end
@@ -92,20 +94,22 @@ module Danger
92
94
  end
93
95
  end
94
96
 
95
- def send_inline_comments(results, targets)
97
+ def send_inline_comments(ktlint_results, targets)
96
98
  catch(:loop_break) do
97
99
  count = 0
98
- results.each do |result|
99
- result['errors'].each do |error|
100
- file_path = relative_file_path(result['file'])
101
- next unless targets.include?(file_path)
102
- message = error['message']
103
- line = error['line']
104
- fail(message, file: result['file'], line: line)
105
- unless limit.nil?
106
- count += 1
107
- if count >= limit
108
- throw(:loop_break)
100
+ ktlint_results.each do |ktlint_result|
101
+ ktlint_result.each do |result|
102
+ result['errors'].each do |error|
103
+ file_path = relative_file_path(result['file'])
104
+ next unless targets.include?(file_path)
105
+ message = error['message']
106
+ line = error['line']
107
+ fail(message, file: result['file'], line: line)
108
+ unless limit.nil?
109
+ count += 1
110
+ if count >= limit
111
+ throw(:loop_break)
112
+ end
109
113
  end
110
114
  end
111
115
  end
@@ -151,18 +155,10 @@ module Danger
151
155
  def ktlint_results(targets)
152
156
  if skip_lint
153
157
  # TODO: Allow XML
154
- if report_file.nil? || report_file.empty?
155
- fail("If skip_lint is specified, You must specify ktlint report json file with `ktlint.report_file=...` in your Dangerfile.")
156
- return
157
- end
158
-
159
- unless File.exists?(report_file)
160
- fail("Couldn't find ktlint result json file.\nYou must specify it with `ktlint.report_file=...` in your Dangerfile.")
161
- return
162
- end
163
-
164
- File.open(report_file) do |f|
165
- JSON.load(f)
158
+ ktlint_result_files.map do |file|
159
+ File.open(file) do |f|
160
+ JSON.load(f)
161
+ end
166
162
  end
167
163
  else
168
164
  unless ktlint_exists?
@@ -172,12 +168,22 @@ module Danger
172
168
 
173
169
  return if targets.empty?
174
170
 
175
- JSON.parse(`ktlint #{targets.join(' ')} --reporter=json --relative`)
171
+ [JSON.parse(`ktlint #{targets.join(' ')} --reporter=json --relative`)]
176
172
  end
177
173
  end
178
174
 
179
175
  def supported_service?
180
176
  AVAILABLE_SERVICES.include?(danger.scm_provider.to_sym)
181
177
  end
178
+
179
+ def ktlint_result_files
180
+ if !report_file.nil? && !report_file.empty? && File.exists?(report_file)
181
+ [report_file]
182
+ elsif !report_files_pattern.nil? && !report_files_pattern.empty?
183
+ Dir.glob(report_files_pattern)
184
+ else
185
+ fail("Couldn't find ktlint result json file.\nYou must specify it with `ktlint.report_file=...` or `ktlint.report_files_pattern=...` in your Dangerfile.")
186
+ end
187
+ end
182
188
  end
183
189
  end
@@ -0,0 +1,19 @@
1
+ [
2
+ {
3
+ "file": "app/src/main/java/com/mataku/Model2.kt",
4
+ "errors": [
5
+ {
6
+ "line": 46,
7
+ "column": 1,
8
+ "message": "Unexpected blank line(s) before \"}\"",
9
+ "rule": "no-blank-line-before-rbrace"
10
+ },
11
+ {
12
+ "line": 47,
13
+ "column": 1,
14
+ "message": "Unexpected blank line(s) before \"}\"",
15
+ "rule": "no-blank-line-before-rbrace"
16
+ }
17
+ ]
18
+ }
19
+ ]
data/spec/ktlint_spec.rb CHANGED
@@ -107,5 +107,46 @@ module Danger
107
107
  end
108
108
  end
109
109
  end
110
+
111
+ describe '#skip_lint' do
112
+ context 'skip_lint: true' do
113
+ before do
114
+ allow_any_instance_of(Danger::DangerfileGitPlugin).to receive(:added_files).and_return(['app/src/main/java/com/mataku/Model.kt'])
115
+ allow_any_instance_of(Danger::DangerfileGitPlugin).to receive(:modified_files).and_return([])
116
+ allow_any_instance_of(Danger::DangerfileGitHubPlugin).to receive(:html_link).with('app/src/main/java/com/mataku/Model.kt#L46').and_return("<a href='https://gitlab.com/mataku/android/blob/561827e46167077b5e53515b4b7349b8ae04610b/Model.kt'>Model.kt</a>")
117
+ allow_any_instance_of(Danger::DangerfileGitHubPlugin).to receive(:html_link).with('app/src/main/java/com/mataku/Model.kt#L47').and_return("<a href='https://gitlab.com/mataku/android/blob/561827e46167077b5e53515b4b7349b8ae04610b/Model.kt'>Model.kt</a>")
118
+
119
+ allow(plugin).to receive(:system).with('which ktlint > /dev/null 2>&1').and_return(true)
120
+ plugin.report_file = './spec/fixtures/ktlint_result.json'
121
+ plugin.skip_lint = true
122
+ end
123
+
124
+ it do
125
+ expect(plugin).not_to have_received(:system).with('which ktlint > /dev/null 2>&1')
126
+ plugin.lint(inline_mode: false)
127
+ end
128
+ end
129
+
130
+ context 'report_files_pattern is specified' do
131
+ before do
132
+ allow_any_instance_of(Danger::DangerfileGitPlugin).to receive(:added_files).and_return(['app/src/main/java/com/mataku/Model.kt', 'app/src/main/java/com/mataku/Model2.kt'])
133
+ allow_any_instance_of(Danger::DangerfileGitPlugin).to receive(:modified_files).and_return([])
134
+ allow_any_instance_of(Danger::DangerfileGitHubPlugin).to receive(:html_link).with('app/src/main/java/com/mataku/Model.kt#L46').and_return("<a href='https://gitlab.com/mataku/android/blob/561827e46167077b5e53515b4b7349b8ae04610b/Model.kt'>Model.kt</a>")
135
+ allow_any_instance_of(Danger::DangerfileGitHubPlugin).to receive(:html_link).with('app/src/main/java/com/mataku/Model.kt#L47').and_return("<a href='https://gitlab.com/mataku/android/blob/561827e46167077b5e53515b4b7349b8ae04610b/Model.kt'>Model.kt</a>")
136
+ allow_any_instance_of(Danger::DangerfileGitHubPlugin).to receive(:html_link).with('app/src/main/java/com/mataku/Model2.kt#L46').and_return("<a href='https://gitlab.com/mataku/android/blob/561827e46167077b5e53515b4b7349b8ae04610b/Model2.kt'>Model2.kt</a>")
137
+ allow_any_instance_of(Danger::DangerfileGitHubPlugin).to receive(:html_link).with('app/src/main/java/com/mataku/Model2.kt#L47').and_return("<a href='https://gitlab.com/mataku/android/blob/561827e46167077b5e53515b4b7349b8ae04610b/Model2.kt'>Model2.kt</a>")
138
+ #
139
+ allow(plugin).to receive(:system).with('which ktlint > /dev/null 2>&1').and_return(true)
140
+ plugin.report_files_pattern = "**/ktlint_result*.json"
141
+ plugin.skip_lint = true
142
+ end
143
+
144
+ it do
145
+ expect(plugin).not_to have_received(:system).with('which ktlint > /dev/null 2>&1')
146
+ plugin.lint(inline_mode: false)
147
+ expect(dangerfile.status_report[:errors].size).to eq(4)
148
+ end
149
+ end
150
+ end
110
151
  end
111
152
  end
data/spec/spec_helper.rb CHANGED
@@ -76,5 +76,11 @@ def testing_dangerfile_for_gitlab
76
76
  end
77
77
 
78
78
  def dummy_ktlint_result
79
- File.read(File.expand_path('../fixtures/ktlint_result.txt', __FILE__)).chomp
79
+ File.read(File.expand_path('../fixtures/ktlint_result.json', __FILE__)).chomp
80
80
  end
81
+
82
+ def dummy_ktlint_result_2
83
+ File.read(File.expand_path('../fixtures/ktlint_result_2.json', __FILE__)).chomp
84
+ end
85
+
86
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger-ktlint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - mataku
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-14 00:00:00.000000000 Z
11
+ date: 2022-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: danger-plugin-api
@@ -143,7 +143,8 @@ files:
143
143
  - lib/danger_plugin.rb
144
144
  - lib/ktlint/gem_version.rb
145
145
  - lib/ktlint/plugin.rb
146
- - spec/fixtures/ktlint_result.txt
146
+ - spec/fixtures/ktlint_result.json
147
+ - spec/fixtures/ktlint_result_2.json
147
148
  - spec/ktlint_spec.rb
148
149
  - spec/spec_helper.rb
149
150
  homepage: https://github.com/mataku/danger-ktlint
@@ -170,6 +171,7 @@ signing_key:
170
171
  specification_version: 4
171
172
  summary: Lint kotlin files using ktlint command line interface.
172
173
  test_files:
173
- - spec/fixtures/ktlint_result.txt
174
+ - spec/fixtures/ktlint_result.json
175
+ - spec/fixtures/ktlint_result_2.json
174
176
  - spec/ktlint_spec.rb
175
177
  - spec/spec_helper.rb