+Before:
+ Save g:ale_warn_about_trailing_blank_lines
+ Save g:ale_warn_about_trailing_whitespace
+
+ let g:ale_warn_about_trailing_blank_lines = 1
+ let g:ale_warn_about_trailing_whitespace = 1
+
+ runtime ale_linters/python/pycodestyle.vim
+
+After:
+ Restore
+
+ unlet! b:ale_warn_about_trailing_blank_lines
+ unlet! b:ale_warn_about_trailing_whitespace
+
+ call ale#linter#Reset()
+
+Execute(The pycodestyle handler should parse output):
+ AssertEqual
+ \ [
+ \ {
+ \ 'lnum': 8,
+ \ 'col': 3,
+ \ 'type': 'E',
+ \ 'text': 'SyntaxError: invalid syntax',
+ \ 'code': 'E999',
+ \ },
+ \ {
+ \ 'lnum': 69,
+ \ 'col': 11,
+ \ 'text': 'multiple imports on one line',
+ \ 'code': 'E401',
+ \ 'type': 'E',
+ \ 'sub_type': 'style',
+ \ },
+ \ {
+ \ 'lnum': 77,
+ \ 'col': 1,
+ \ 'text': 'expected 2 blank lines, found 1',
+ \ 'code': 'E302',
+ \ 'type': 'E',
+ \ 'sub_type': 'style',
+ \ },
+ \ {
+ \ 'lnum': 88,
+ \ 'col': 5,
+ \ 'text': 'expected 1 blank line, found 0',
+ \ 'code': 'E301',
+ \ 'type': 'E',
+ \ 'sub_type': 'style',
+ \ },
+ \ {
+ \ 'lnum': 222,
+ \ 'col': 34,
+ \ 'text': 'deprecated form of raising exception',
+ \ 'code': 'W602',
+ \ 'type': 'W',
+ \ 'sub_type': 'style',
+ \ },
+ \ {
+ \ 'lnum': 544,
+ \ 'col': 21,
+ \ 'text': '.has_key() is deprecated, use ''in''',
+ \ 'code': 'W601',
+ \ 'type': 'W',
+ \ 'sub_type': 'style',
+ \ },
+ \ ],
+ \ ale_linters#python#pycodestyle#Handle(bufnr(''), [
+ \ 'stdin:8:3: E999 SyntaxError: invalid syntax',
+ \ 'stdin:69:11: E401 multiple imports on one line',
+ \ 'stdin:77:1: E302 expected 2 blank lines, found 1',
+ \ 'stdin:88:5: E301 expected 1 blank line, found 0',
+ \ 'stdin:222:34: W602 deprecated form of raising exception',
+ \ 'example.py:544:21: W601 .has_key() is deprecated, use ''in''',
+ \ ])
+
+Execute(Warnings about trailing whitespace should be reported by default):
+ AssertEqual
+ \ [
+ \ {
+ \ 'lnum': 6,
+ \ 'col': 1,
+ \ 'code': 'W291',
+ \ 'type': 'W',
+ \ 'sub_type': 'style',
+ \ 'text': 'who cares',
+ \ },
+ \ {
+ \ 'lnum': 6,
+ \ 'col': 1,
+ \ 'code': 'W293',
+ \ 'type': 'W',
+ \ 'sub_type': 'style',
+ \ 'text': 'who cares',
+ \ },
+ \ ],
+ \ ale_linters#python#pycodestyle#Handle(bufnr(''), [
+ \ 'foo.py:6:1: W291 who cares',
+ \ 'foo.py:6:1: W293 who cares',
+ \ ])
+
+Execute(Disabling trailing whitespace warnings should work):
+ let b:ale_warn_about_trailing_whitespace = 0
+
+ AssertEqual
+ \ [
+ \ ],
+ \ ale_linters#python#pycodestyle#Handle(bufnr(''), [
+ \ 'foo.py:6:1: W291 who cares',
+ \ 'foo.py:6:1: W293 who cares',
+ \ ])
+
+Execute(Warnings about trailing blank lines should be reported by default):
+ AssertEqual
+ \ [
+ \ {
+ \ 'lnum': 6,
+ \ 'col': 1,
+ \ 'code': 'W391',
+ \ 'type': 'W',
+ \ 'sub_type': 'style',
+ \ 'text': 'blank line at end of file',
+ \ },
+ \ ],
+ \ ale_linters#python#pycodestyle#Handle(bufnr(''), [
+ \ 'foo.py:6:1: W391 blank line at end of file',
+ \ ])
+
+Execute(Disabling trailing blank line warnings should work):
+ let b:ale_warn_about_trailing_blank_lines = 0
+
+ AssertEqual
+ \ [
+ \ ],
+ \ ale_linters#python#pycodestyle#Handle(bufnr(''), [
+ \ 'foo.py:6:1: W391 blank line at end of file',
+ \ ])
+
+Execute(E112 should be a syntax error):
+ AssertEqual
+ \ [
+ \ {
+ \ 'lnum': 6,
+ \ 'col': 1,
+ \ 'code': 'E112',
+ \ 'type': 'E',
+ \ 'text': 'expected an indented block',
+ \ },
+ \ ],
+ \ ale_linters#python#pycodestyle#Handle(bufnr(''), [
+ \ 'foo.py:6:1: E112 expected an indented block',
+ \ ])