summaryrefslogtreecommitdiff
path: root/test/handler/test_flake8_handler.vader
blob: d8cb51b303c7087bb7d4a69a4750bad4d6c958e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
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': 'indentation is not a multiple of four',
  \     'code': 'E111',
  \     'sub_type': 'style',
  \   },
  \   {
  \     'lnum': 7,
  \     'col': 6,
  \     'type': 'W',
  \     'text': 'some warning',
  \     'code': 'W123',
  \     'sub_type': 'style',
  \   },
  \   {
  \     'lnum': 8,
  \     'col': 3,
  \     'type': 'E',
  \     'text': 'SyntaxError: invalid syntax',
  \     'code': 'E999',
  \   },
  \ ],
  \ 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': 'undefined name ''foo''',
  \     'code': 'F821',
  \   },
  \   {
  \     'lnum': 28,
  \     'col': 5,
  \     'type': 'E',
  \     'end_col': 9,
  \     'text': 'hello may be undefined, or defined from star imports: x',
  \     'code': 'F405',
  \   },
  \   {
  \     'lnum': 104,
  \     'col': 5,
  \     'type': 'E',
  \     'end_col': 12,
  \     'text': '''continue'' not properly in loop',
  \     'code': 'F999',
  \   },
  \   {
  \     'lnum': 106,
  \     'col': 5,
  \     'type': 'E',
  \     'end_col': 9,
  \     'text': '''break'' outside loop',
  \     'code': 'F999',
  \   },
  \   {
  \     'lnum': 109,
  \     'col': 5,
  \     'type': 'E',
  \     'end_col': 8,
  \     'text': 'local variable ''test'' is assigned to but never used',
  \     'code': 'F841',
  \   },
  \ ],
  \ 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 <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_linters#python#flake8#Handle(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 (The flake8 handler should handle names with spaces):
  AssertEqual
  \ [
  \   {
  \     'lnum': 6,
  \     'col': 6,
  \     'type': 'E',
  \     'text': 'indentation is not a multiple of four',
  \     'code': 'E111',
  \     'sub_type': 'style',
  \   },
  \ ],
  \ ale_linters#python#flake8#Handle(42, [
  \   'C:\something\with spaces.py:6:6: E111 indentation is not a multiple of four',
  \ ])