danger-pep8 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +6 -10
- data/lib/pep8/gem_version.rb +1 -1
- data/lib/pep8/plugin.rb +25 -10
- data/spec/pep8_spec.rb +48 -35
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8946ed7fb42ae6a537a53fc8f957fc5a207a7786
|
4
|
+
data.tar.gz: e18b77d8b3e07890747d802f9d4931e491060133
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 782b3c8a213a339ce9b986857d7061f09b691b1cd21fdb619f745933b318fd864e9b2dcd0ee79004c72af2aba3ecc6611282e53ab715f9157c5b125b3b1d8bbf
|
7
|
+
data.tar.gz: bb1f9f476851f32684cbdb718ddbe4cf00d65aa1800f94499fed654227ed399c5dfe3637f695c8e5abdc4b765beb099c8ea2fe01ba41c63c6b12ac231d4ce747
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -39,6 +39,12 @@ pep8.base_dir = "src"
|
|
39
39
|
pep8.lint
|
40
40
|
```
|
41
41
|
|
42
|
+
#### Use GitHub's inline comments instead of a markdown table
|
43
|
+
|
44
|
+
```rb
|
45
|
+
pep8.lint(use_inline_comments=true)
|
46
|
+
```
|
47
|
+
|
42
48
|
#### Running using a configuration file different than the usual
|
43
49
|
|
44
50
|
If you need to specify a different configuration file, use the `config_file` parameter below. Check [this link](http://flake8.pycqa.org/en/latest/user/configuration.html#configuration-locations) for more information about Configuration Locations.
|
@@ -79,13 +85,3 @@ pep8.count_errors(should_fail = true)
|
|
79
85
|
## License
|
80
86
|
|
81
87
|
MIT
|
82
|
-
|
83
|
-
## TODO
|
84
|
-
- [x] write specs
|
85
|
-
- [x] configure ci build
|
86
|
-
- [x] create a changelog
|
87
|
-
- [x] add code comments
|
88
|
-
- [x] fill out readme.md
|
89
|
-
- [x] open source it
|
90
|
-
- [ ] publish gem
|
91
|
-
- [ ] send MR to danger.systems
|
data/lib/pep8/gem_version.rb
CHANGED
data/lib/pep8/plugin.rb
CHANGED
@@ -11,7 +11,7 @@ module Danger
|
|
11
11
|
#
|
12
12
|
# @example Lint files inside a given directory
|
13
13
|
#
|
14
|
-
# pep8.base_dir "src"
|
14
|
+
# pep8.base_dir = "src"
|
15
15
|
# pep8.lint
|
16
16
|
#
|
17
17
|
# @example Warns if number of issues is greater than a given threshold
|
@@ -54,27 +54,26 @@ module Danger
|
|
54
54
|
# Lint all python files inside a given directory. Defaults to "."
|
55
55
|
# @return [void]
|
56
56
|
#
|
57
|
-
def lint
|
57
|
+
def lint(use_inline_comments=false)
|
58
58
|
ensure_flake8_is_installed
|
59
59
|
|
60
60
|
errors = run_flake
|
61
61
|
return if errors.empty? || errors.count <= threshold
|
62
62
|
|
63
|
-
|
64
|
-
|
65
|
-
|
63
|
+
if use_inline_comments
|
64
|
+
comment_inline(errors)
|
65
|
+
else
|
66
|
+
print_markdown_table(errors)
|
66
67
|
end
|
67
|
-
|
68
|
-
markdown(report)
|
69
68
|
end
|
70
69
|
|
71
70
|
# Triggers a warning/failure if total lint errors found exceedes @threshold
|
72
71
|
# @param [Bool] should_fail
|
73
72
|
# A flag to indicate whether it should warn ou fail the build.
|
74
|
-
# It adds an entry on the corresponding warnings/failures table.
|
73
|
+
# It adds an entry on the corresponding warnings/failures table.
|
75
74
|
# @return [void]
|
76
75
|
#
|
77
|
-
def count_errors(should_fail
|
76
|
+
def count_errors(should_fail=false)
|
78
77
|
ensure_flake8_is_installed
|
79
78
|
|
80
79
|
total_errors = run_flake(:count => true).first.to_i
|
@@ -103,13 +102,29 @@ module Danger
|
|
103
102
|
end
|
104
103
|
|
105
104
|
def ensure_flake8_is_installed
|
106
|
-
system "pip install --user flake8" unless flake8_installed?
|
105
|
+
system "pip install --user flake8 --upgrade" unless flake8_installed?
|
107
106
|
end
|
108
107
|
|
109
108
|
def flake8_installed?
|
110
109
|
`which flake8`.strip.empty? == false
|
111
110
|
end
|
112
111
|
|
112
|
+
def print_markdown_table(errors=[])
|
113
|
+
report = errors.inject(MARKDOWN_TEMPLATE) do |out, error_line|
|
114
|
+
file, line, column, reason = error_line.split(":")
|
115
|
+
out += "| #{short_link(file, line)} | #{line} | #{column} | #{reason.strip.gsub("'", "`")} |\n"
|
116
|
+
end
|
117
|
+
|
118
|
+
markdown(report)
|
119
|
+
end
|
120
|
+
|
121
|
+
def comment_inline(errors=[])
|
122
|
+
errors.each do |error|
|
123
|
+
file, line, column, reason = error.split(":")
|
124
|
+
message(reason.strip.gsub("'", "`"), file: file, line: line)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
113
128
|
def short_link(file, line)
|
114
129
|
if danger.scm_provider.to_s == "github"
|
115
130
|
return github.html_link("#{file}#L#{line}", full_path: false)
|
data/spec/pep8_spec.rb
CHANGED
@@ -23,28 +23,40 @@ module Danger
|
|
23
23
|
allow(@pep8).to receive(:`).with("which flake8").and_return("/usr/bin/flake8")
|
24
24
|
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
26
|
+
describe 'lint' do
|
27
|
+
it 'runs lint from current directory by default' do
|
28
|
+
expect(@pep8).to receive(:`).with("flake8 .").and_return("")
|
29
|
+
@pep8.lint
|
30
|
+
end
|
30
31
|
|
31
|
-
|
32
|
-
|
32
|
+
it 'runs lint from a custom directory' do
|
33
|
+
expect(@pep8).to receive(:`).with("flake8 my/custom/directory").and_return("")
|
33
34
|
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
@pep8.base_dir = "my/custom/directory"
|
36
|
+
@pep8.lint
|
37
|
+
end
|
37
38
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
39
|
+
it 'handles a custom config file' do
|
40
|
+
expect(@pep8).to receive(:`).with("flake8 . --config my-pep8-config").and_return("")
|
41
|
+
@pep8.config_file = "my-pep8-config"
|
42
|
+
@pep8.lint
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'handles a lint with no errors' do
|
46
|
+
allow(@pep8).to receive(:`).with("flake8 .").and_return("")
|
47
|
+
@pep8.lint
|
48
|
+
expect(@pep8.status_report[:markdowns].first).to be_nil
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'comments inline properly' do
|
52
|
+
lint_report = "./tests/test_matcher.py:90:9: E128 continuation line under-indented for visual indent\n"
|
53
|
+
allow(@pep8).to receive(:`).with("flake8 .").and_return(lint_report)
|
54
|
+
|
55
|
+
@pep8.lint(use_inline_comments=true)
|
43
56
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
expect(@pep8.status_report[:markdowns].first).to be_nil
|
57
|
+
message = @pep8.status_report[:messages].first
|
58
|
+
expect(message).to eq('E128 continuation line under-indented for visual indent')
|
59
|
+
end
|
48
60
|
end
|
49
61
|
|
50
62
|
context 'when running on github' do
|
@@ -89,33 +101,34 @@ module Danger
|
|
89
101
|
|
90
102
|
expect(@pep8.status_report[:markdowns].first).to be_nil
|
91
103
|
end
|
92
|
-
|
93
104
|
end
|
94
105
|
|
95
|
-
|
96
|
-
|
106
|
+
describe 'count_errors' do
|
107
|
+
it 'handles errors showing only count' do
|
108
|
+
allow(@pep8).to receive(:`).with("flake8 . --quiet --quiet --count").and_return("10")
|
97
109
|
|
98
|
-
|
110
|
+
@pep8.count_errors
|
99
111
|
|
100
|
-
|
101
|
-
|
102
|
-
|
112
|
+
warning_message = @pep8.status_report[:warnings].first
|
113
|
+
expect(warning_message).to include("10 PEP 8 issues found")
|
114
|
+
end
|
103
115
|
|
104
|
-
|
105
|
-
|
116
|
+
it 'should not report for count_errors if total errors is bellow configured threshold' do
|
117
|
+
allow(@pep8).to receive(:`).with("flake8 . --quiet --quiet --count").and_return("10")
|
106
118
|
|
107
|
-
|
108
|
-
|
119
|
+
@pep8.threshold = 20
|
120
|
+
@pep8.count_errors
|
109
121
|
|
110
|
-
|
111
|
-
|
122
|
+
expect(@pep8.status_report[:warnings]).to be_empty
|
123
|
+
end
|
112
124
|
|
113
|
-
|
114
|
-
|
125
|
+
it 'should not report anything if there is no error' do
|
126
|
+
allow(@pep8).to receive(:`).with("flake8 . --quiet --quiet --count").and_return("")
|
115
127
|
|
116
|
-
|
128
|
+
@pep8.count_errors
|
117
129
|
|
118
|
-
|
130
|
+
expect(@pep8.status_report[:warnings]).to be_empty
|
131
|
+
end
|
119
132
|
end
|
120
133
|
|
121
134
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: danger-pep8
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gustavo Barbosa
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-12-
|
13
|
+
date: 2016-12-26 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: danger-plugin-api
|