summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ale_linters/python/flake8.vim2
-rw-r--r--autoload/ale/handlers/python.vim10
-rw-r--r--test/handler/test_common_handlers.vader37
3 files changed, 48 insertions, 1 deletions
diff --git a/ale_linters/python/flake8.vim b/ale_linters/python/flake8.vim
index 1bed03b5..253c7101 100644
--- a/ale_linters/python/flake8.vim
+++ b/ale_linters/python/flake8.vim
@@ -99,7 +99,7 @@ call ale#linter#Define('python', {
\ 'executable_callback': 'ale_linters#python#flake8#GetExecutable',
\ 'command_chain': [
\ {'callback': 'ale_linters#python#flake8#VersionCheck'},
-\ {'callback': 'ale_linters#python#flake8#GetCommand'},
+\ {'callback': 'ale_linters#python#flake8#GetCommand', 'output_stream': 'both'},
\ ],
\ 'callback': 'ale#handlers#python#HandlePEP8Format',
\})
diff --git a/autoload/ale/handlers/python.vim b/autoload/ale/handlers/python.vim
index 952df8f4..419e262e 100644
--- a/autoload/ale/handlers/python.vim
+++ b/autoload/ale/handlers/python.vim
@@ -2,6 +2,16 @@
" Description: Error handling for flake8, etc.
function! ale#handlers#python#HandlePEP8Format(buffer, lines) abort
+ for l:line in a:lines[:10]
+ if match(l:line, '^Traceback') >= 0
+ return [{
+ \ 'lnum': 1,
+ \ 'text': 'An exception was thrown. See :ALEDetail',
+ \ 'detail': join(a:lines, "\n"),
+ \}]
+ endif
+ endfor
+
" Matches patterns line the following:
"
" Matches patterns line the following:
diff --git a/test/handler/test_common_handlers.vader b/test/handler/test_common_handlers.vader
index e945b2cc..0a83f944 100644
--- a/test/handler/test_common_handlers.vader
+++ b/test/handler/test_common_handlers.vader
@@ -75,6 +75,43 @@ Execute (HandlePEP8Format should handle names with spaces):
\ 'C:\something\with spaces.py:6:6: E111 indentation is not a multiple of four',
\ ])
+Execute (HandlePEP8Format should 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 <module>',
+ \ ' from flake8.main.cli import main',
+ \ ' File "/usr/local/lib/python2.7/dist-packages/flake8/main/cli.py", line 2, in <module>',
+ \ ' from flake8.main import application',
+ \ ' File "/usr/local/lib/python2.7/dist-packages/flake8/main/application.py", line 17, in <module>',
+ \ ' from flake8.plugins import manager as plugin_manager',
+ \ ' File "/usr/local/lib/python2.7/dist-packages/flake8/plugins/manager.py", line 5, in <module>',
+ \ ' import pkg_resources',
+ \ ' File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 35, in <module>',
+ \ ' import email.parser',
+ \ 'ImportError: No module named parser',
+ \ ], "\n"),
+ \ },
+ \ ],
+ \ ale#handlers#python#HandlePEP8Format(42, [
+ \ 'Traceback (most recent call last):',
+ \ ' File "/usr/local/bin/flake8", line 7, in <module>',
+ \ ' from flake8.main.cli import main',
+ \ ' File "/usr/local/lib/python2.7/dist-packages/flake8/main/cli.py", line 2, in <module>',
+ \ ' from flake8.main import application',
+ \ ' File "/usr/local/lib/python2.7/dist-packages/flake8/main/application.py", line 17, in <module>',
+ \ ' from flake8.plugins import manager as plugin_manager',
+ \ ' File "/usr/local/lib/python2.7/dist-packages/flake8/plugins/manager.py", line 5, in <module>',
+ \ ' import pkg_resources',
+ \ ' File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 35, in <module>',
+ \ ' import email.parser',
+ \ 'ImportError: No module named parser',
+ \ ])
+
Execute (HandleGCCFormat should handle the correct lines of output):
AssertEqual
\ [