danger-ktlint 0.0.2 → 0.0.3
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 +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +16 -1
- data/danger-ktlint.gemspec +2 -13
- data/lib/ktlint/gem_version.rb +1 -1
- data/lib/ktlint/plugin.rb +47 -13
- data/spec/fixtures/ktlint_result.txt +6 -0
- data/spec/ktlint_spec.rb +37 -2
- metadata +10 -38
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60e18440651f2b42cb1d710fa157ee9391aa80894dd1e31bf2b43a7198cb80e3
|
4
|
+
data.tar.gz: b507278d2b29a2361afe704699c17c12373adb2ad82d91e7b44e44aec35dc77e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd061ab55bbc11530c44686f8d1d872363428624fa63065e8e2631d8f703da7d853f1abb7692bd1e8dcf65e2bb38831cd70de2d4da45c05ba2385c8a9148668d
|
7
|
+
data.tar.gz: 8e28ec29136da819926e73dc6e5263fb9150455caf15cffb29b6ea98cf888bd742ad660ac4466a6a96ca62cf4da0738d4981dd9d79ee4eb48c5331a0ffa76c88
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -14,7 +14,7 @@ You need to install `ktlint` command and set as executable first, see: https://k
|
|
14
14
|
|
15
15
|
```bash
|
16
16
|
# Example
|
17
|
-
$ curl --output /usr/local/bin/ktlint -sL https://github.com/
|
17
|
+
$ curl --output /usr/local/bin/ktlint -sL https://github.com/pinterest/ktlint/releases/download/$KTLINT_VERSION/ktlint && chmod a+x /usr/local/bin/ktlint
|
18
18
|
```
|
19
19
|
|
20
20
|
Add this to Dangerfile.
|
@@ -26,6 +26,21 @@ ktlint.lint
|
|
26
26
|
ktlint.lint(inline_mode: true)
|
27
27
|
```
|
28
28
|
|
29
|
+
### Options
|
30
|
+
#### Set maximum number of comments of ktlint results
|
31
|
+
|
32
|
+
Default is `nil`, all comments are sent.
|
33
|
+
|
34
|
+
```bash
|
35
|
+
ktlint.limit = 3
|
36
|
+
ktlint.lint
|
37
|
+
```
|
38
|
+
|
39
|
+
|
40
|
+
## CHANGELOG
|
41
|
+
|
42
|
+
See [CHANGELOG.md](https://github.com/mataku/danger-ktlint/blob/master/CHANGELOG.md).
|
43
|
+
|
29
44
|
## TODO
|
30
45
|
|
31
46
|
- filtering: false (default: filtering: true behavior)
|
data/danger-ktlint.gemspec
CHANGED
@@ -21,29 +21,18 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_runtime_dependency 'danger-plugin-api', '~> 1.0'
|
22
22
|
|
23
23
|
# General ruby development
|
24
|
-
spec.add_development_dependency 'bundler', '~>
|
25
|
-
spec.add_development_dependency 'rake'
|
24
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
25
|
+
spec.add_development_dependency 'rake'
|
26
26
|
|
27
27
|
# Testing support
|
28
28
|
spec.add_development_dependency 'rspec', '~> 3.4'
|
29
29
|
|
30
30
|
# Linting code and docs
|
31
31
|
spec.add_development_dependency "rubocop"
|
32
|
-
spec.add_development_dependency "yard"
|
33
32
|
|
34
33
|
# Makes testing easy via `bundle exec guard`
|
35
34
|
spec.add_development_dependency 'guard', '~> 2.14'
|
36
35
|
spec.add_development_dependency 'guard-rspec', '~> 4.7'
|
37
36
|
|
38
|
-
# If you want to work on older builds of ruby
|
39
|
-
spec.add_development_dependency 'listen', '3.0.7'
|
40
|
-
|
41
|
-
# This gives you the chance to run a REPL inside your tests
|
42
|
-
# via:
|
43
|
-
#
|
44
|
-
# require 'pry'
|
45
|
-
# binding.pry
|
46
|
-
#
|
47
|
-
# This will stop test execution and let you inspect the results
|
48
37
|
spec.add_development_dependency 'pry'
|
49
38
|
end
|
data/lib/ktlint/gem_version.rb
CHANGED
data/lib/ktlint/plugin.rb
CHANGED
@@ -2,9 +2,25 @@ require 'json'
|
|
2
2
|
|
3
3
|
module Danger
|
4
4
|
class DangerKtlint < Plugin
|
5
|
+
|
6
|
+
class UnexpectedLimitTypeError < StandardError
|
7
|
+
end
|
8
|
+
|
5
9
|
# TODO: Lint all files if `filtering: false`
|
6
10
|
attr_accessor :filtering
|
7
11
|
|
12
|
+
def limit
|
13
|
+
@limit ||= nil
|
14
|
+
end
|
15
|
+
|
16
|
+
def limit=(limit)
|
17
|
+
if limit != nil && limit.integer?
|
18
|
+
@limit = limit
|
19
|
+
else
|
20
|
+
raise UnexpectedLimitTypeError
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
8
24
|
# Run ktlint task using command line interface
|
9
25
|
# Will fail if `ktlint` is not installed
|
10
26
|
# Skip lint task if files changed are empty
|
@@ -46,22 +62,40 @@ module Danger
|
|
46
62
|
# }
|
47
63
|
# ]
|
48
64
|
def send_markdown_comment(results)
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
65
|
+
catch(:loop_break) do
|
66
|
+
count = 0
|
67
|
+
results.each do |result|
|
68
|
+
result['errors'].each do |error|
|
69
|
+
file = "#{result['file']}#L#{error['line']}"
|
70
|
+
message = "#{github.html_link(file)}: #{error['message']}"
|
71
|
+
fail(message)
|
72
|
+
unless limit.nil?
|
73
|
+
count += 1
|
74
|
+
if count >= limit
|
75
|
+
throw(:loop_break)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
56
81
|
end
|
57
82
|
|
58
83
|
def send_inline_comments(results)
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
84
|
+
catch(:loop_break) do
|
85
|
+
count = 0
|
86
|
+
results.each do |result|
|
87
|
+
result['errors'].each do |error|
|
88
|
+
file = result['file']
|
89
|
+
message = error['message']
|
90
|
+
line = error['line']
|
91
|
+
fail(message, file: result['file'], line: line)
|
92
|
+
unless limit.nil?
|
93
|
+
count += 1
|
94
|
+
if count >= limit
|
95
|
+
throw(:loop_break)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
65
99
|
end
|
66
100
|
end
|
67
101
|
end
|
@@ -7,6 +7,12 @@
|
|
7
7
|
"column": 1,
|
8
8
|
"message": "Unexpected blank line(s) before \"}\"",
|
9
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"
|
10
16
|
}
|
11
17
|
]
|
12
18
|
}
|
data/spec/ktlint_spec.rb
CHANGED
@@ -31,11 +31,12 @@ module Danger
|
|
31
31
|
allow_any_instance_of(Kernel).to receive(:system).with('which ktlint > /dev/null 2>&1').and_return(true)
|
32
32
|
allow_any_instance_of(Kernel).to receive(:`).with('ktlint app/src/main/java/com/mataku/Model.kt --reporter=json --relative').and_return(dummy_ktlint_result)
|
33
33
|
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://github.com/mataku/android/blob/561827e46167077b5e53515b4b7349b8ae04610b/Model.kt'>Model.kt</a>")
|
34
|
+
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://github.com/mataku/android/blob/561827e46167077b5e53515b4b7349b8ae04610b/Model.kt'>Model.kt</a>")
|
34
35
|
end
|
35
36
|
|
36
37
|
it 'Sends markdown comment' do
|
37
38
|
plugin.lint
|
38
|
-
expect(dangerfile.status_report[:errors].size).to eq(
|
39
|
+
expect(dangerfile.status_report[:errors].size).to eq(2)
|
39
40
|
end
|
40
41
|
end
|
41
42
|
|
@@ -47,7 +48,41 @@ module Danger
|
|
47
48
|
|
48
49
|
it 'Sends inline comment' do
|
49
50
|
plugin.lint(inline_mode: true)
|
50
|
-
expect(dangerfile.status_report[:errors].size).to eq(
|
51
|
+
expect(dangerfile.status_report[:errors].size).to eq(2)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe '#limit' do
|
57
|
+
context 'expected limit value is set' do
|
58
|
+
it 'raises UnexpectedLimitTypeError' do
|
59
|
+
expect { plugin.limit = nil }.to raise_error(DangerKtlint::UnexpectedLimitTypeError)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'integer value is set to limit' do
|
64
|
+
it 'raises no errors' do
|
65
|
+
expect { plugin.limit = 1 }.not_to raise_error(DangerKtlint::UnexpectedLimitTypeError)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe '#send_markdown_comment' do
|
71
|
+
let(:limit) { 1 }
|
72
|
+
|
73
|
+
before do
|
74
|
+
allow_any_instance_of(Danger::DangerfileGitPlugin).to receive(:added_files).and_return(['app/src/main/java/com/mataku/Model.kt'])
|
75
|
+
allow_any_instance_of(Danger::DangerfileGitPlugin).to receive(:modified_files).and_return([])
|
76
|
+
|
77
|
+
allow_any_instance_of(Kernel).to receive(:system).with('which ktlint > /dev/null 2>&1').and_return(true)
|
78
|
+
allow_any_instance_of(Kernel).to receive(:`).with('ktlint app/src/main/java/com/mataku/Model.kt --reporter=json --relative').and_return(dummy_ktlint_result)
|
79
|
+
plugin.limit = limit
|
80
|
+
end
|
81
|
+
|
82
|
+
context 'limit is set' do
|
83
|
+
it 'equals number of ktlint results to limit' do
|
84
|
+
plugin.lint(inline_mode: true)
|
85
|
+
expect(dangerfile.status_report[:errors].size).to eq(limit)
|
51
86
|
end
|
52
87
|
end
|
53
88
|
end
|
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.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mataku
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: danger-plugin-api
|
@@ -30,28 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '2.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '2.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,20 +80,6 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: yard
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
84
|
name: guard
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,20 +108,6 @@ dependencies:
|
|
122
108
|
- - "~>"
|
123
109
|
- !ruby/object:Gem::Version
|
124
110
|
version: '4.7'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: listen
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - '='
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 3.0.7
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - '='
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: 3.0.7
|
139
111
|
- !ruby/object:Gem::Dependency
|
140
112
|
name: pry
|
141
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -160,6 +132,7 @@ files:
|
|
160
132
|
- ".circleci/config.yml"
|
161
133
|
- ".gitignore"
|
162
134
|
- ".rubocop.yml"
|
135
|
+
- CHANGELOG.md
|
163
136
|
- Gemfile
|
164
137
|
- Guardfile
|
165
138
|
- LICENSE.txt
|
@@ -192,8 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
192
165
|
- !ruby/object:Gem::Version
|
193
166
|
version: '0'
|
194
167
|
requirements: []
|
195
|
-
|
196
|
-
rubygems_version: 2.7.6
|
168
|
+
rubygems_version: 3.1.2
|
197
169
|
signing_key:
|
198
170
|
specification_version: 4
|
199
171
|
summary: Lint kotlin files using ktlint command line interface.
|