Before: runtime ale_linters/python/flake8.vim After: call ale#linter#Reset() Execute(The flake8 handler should handle basic warnings and syntax errors): AssertEqual \ [ \ { \ 'lnum': 6, \ 'col': 6, \ 'type': 'E', \ 'text': 'E111: indentation is not a multiple of four', \ 'sub_type': 'style', \ }, \ { \ 'lnum': 7, \ 'col': 6, \ 'type': 'W', \ 'text': 'W123: some warning', \ 'sub_type': 'style', \ }, \ { \ 'lnum': 8, \ 'col': 3, \ 'type': 'E', \ 'text': 'E999: SyntaxError: invalid syntax', \ }, \ ], \ ale_linters#python#flake8#Handle(1, [ \ 'stdin:6:6: E111 indentation is not a multiple of four', \ 'stdin:7:6: W123 some warning', \ 'stdin:8:3: E999 SyntaxError: invalid syntax', \ ]) Execute(The flake8 handler should set end column indexes should be set for certain errors): AssertEqual \ [ \ { \ 'lnum': 25, \ 'col': 1, \ 'type': 'E', \ 'end_col': 3, \ 'text': 'F821: undefined name ''foo''', \ }, \ { \ 'lnum': 28, \ 'col': 5, \ 'type': 'E', \ 'end_col': 9, \ 'text': 'F405: hello may be undefined, or defined from star imports: x', \ }, \ { \ 'lnum': 104, \ 'col': 5, \ 'type': 'E', \ 'end_col': 12, \ 'text': 'F999: ''continue'' not properly in loop', \ }, \ { \ 'lnum': 106, \ 'col': 5, \ 'type': 'E', \ 'end_col': 9, \ 'text': 'F999: ''break'' outside loop', \ }, \ { \ 'lnum': 109, \ 'col': 5, \ 'type': 'E', \ 'end_col': 8, \ 'text': 'F841: local variable ''test'' is assigned to but never used', \ }, \ ], \ ale_linters#python#flake8#Handle(1, [ \ 'foo.py:25:1: F821 undefined name ''foo''', \ 'foo.py:28:5: F405 hello may be undefined, or defined from star imports: x', \ 'foo.py:104:5: F999 ''continue'' not properly in loop', \ 'foo.py:106:5: F999 ''break'' outside loop', \ 'foo.py:109:5: F841 local variable ''test'' is assigned to but never used', \ ]) Execute(The flake8 handler should handle stack traces): AssertEqual \ [ \ { \ 'lnum': 1, \ 'text': 'An exception was thrown. See :ALEDetail', \ 'detail': join([ \ 'Traceback (most recent call last):', \ ' File "/usr/local/bin/flake8", line 7, in ', \ ' from flake8.main.cli import main', \ ' File "/usr/local/lib/python2.7/dist-packages/flake8/main/cli.py", line 2, in ', \ ' from flake8.main import application', \ ' File "/usr/local/lib/python2.7/dist-packages/flake8/main/application.py", line 17, in ', \ ' from flake8.plugins import manager as plugin_manager', \ ' File "/usr/local/lib/python2.7/dist-packages/flake8/plugins/manager.py", line 5, in ', \ ' import pkg_resources', \ ' File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 35, in ', \ ' import email.parser', \ 'ImportError: No module named parser', \ ], "\n"), \ }, \ ], \ ale_linters#python#flake8#Handle(42, [ \ 'Traceback (most recent call last):', \ ' File "/usr/local/bin/flake8", line 7, in ', \ ' from flake8.main.cli import main', \ ' File "/usr/local/lib/python2.7/dist-packages/flake8/main/cli.py", line 2, in ', \ ' from flake8.main import application', \ ' File "/usr/local/lib/python2.7/dist-packages/flake8/main/application.py", line 17, in ', \ ' from flake8.plugins import manager as plugin_manager', \ ' File "/usr/local/lib/python2.7/dist-packages/flake8/plugins/manager.py", line 5, in ', \ ' import pkg_resources', \ ' File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 35, in ', \ ' import email.parser', \ 'ImportError: No module named parser', \ ]) Execute (The flake8 handler should handle names with spaces): AssertEqual \ [ \ { \ 'lnum': 6, \ 'col': 6, \ 'type': 'E', \ 'text': 'E111: indentation is not a multiple of four', \ 'sub_type': 'style', \ }, \ ], \ ale_linters#python#flake8#Handle(42, [ \ 'C:\something\with spaces.py:6:6: E111 indentation is not a multiple of four', \ ])