]> git.madduck.net Git - etc/vim.git/blob - test/handler/test_flakehell_handler.vader

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Squashed '.vim/bundle/ale/' content from commit 22185c4c
[etc/vim.git] / test / handler / test_flakehell_handler.vader
1 Before:
2   Save g:ale_warn_about_trailing_blank_lines
3   Save g:ale_warn_about_trailing_whitespace
4
5   let g:ale_warn_about_trailing_blank_lines = 1
6   let g:ale_warn_about_trailing_whitespace = 1
7
8   runtime ale_linters/python/flakehell.vim
9
10 After:
11   Restore
12
13   unlet! b:ale_warn_about_trailing_blank_lines
14   unlet! b:ale_warn_about_trailing_whitespace
15
16   call ale#linter#Reset()
17
18 Execute(The flakehell handler should handle basic warnings and syntax errors):
19   AssertEqual
20   \ [
21   \   {
22   \     'lnum': 6,
23   \     'col': 6,
24   \     'vcol': 1,
25   \     'type': 'E',
26   \     'text': 'indentation is not a multiple of four',
27   \     'code': 'E111',
28   \     'sub_type': 'style',
29   \   },
30   \   {
31   \     'lnum': 7,
32   \     'col': 6,
33   \     'vcol': 1,
34   \     'type': 'W',
35   \     'text': 'some warning',
36   \     'code': 'W123',
37   \     'sub_type': 'style',
38   \   },
39   \   {
40   \     'lnum': 8,
41   \     'col': 3,
42   \     'vcol': 1,
43   \     'type': 'E',
44   \     'text': 'SyntaxError: invalid syntax',
45   \     'code': 'E999',
46   \   },
47   \ ],
48   \ ale_linters#python#flakehell#Handle(1, [
49   \   'stdin:6:6: E111 indentation is not a multiple of four',
50   \   'stdin:7:6: W123 some warning',
51   \   'stdin:8:3: E999 SyntaxError: invalid syntax',
52   \ ])
53
54 Execute(The flakehell handler should set end column indexes for certain errors):
55   AssertEqual
56   \ [
57   \   {
58   \     'lnum': 25,
59   \     'col': 1,
60   \     'vcol': 1,
61   \     'type': 'E',
62   \     'end_col': 3,
63   \     'text': 'undefined name ''foo''',
64   \     'code': 'F821',
65   \   },
66   \   {
67   \     'lnum': 28,
68   \     'col': 5,
69   \     'vcol': 1,
70   \     'type': 'E',
71   \     'end_col': 9,
72   \     'text': 'hello may be undefined, or defined from star imports: x',
73   \     'code': 'F405',
74   \   },
75   \   {
76   \     'lnum': 104,
77   \     'col': 5,
78   \     'vcol': 1,
79   \     'type': 'E',
80   \     'end_col': 12,
81   \     'text': '''continue'' not properly in loop',
82   \     'code': 'F999',
83   \   },
84   \   {
85   \     'lnum': 106,
86   \     'col': 5,
87   \     'vcol': 1,
88   \     'type': 'E',
89   \     'end_col': 9,
90   \     'text': '''break'' outside loop',
91   \     'code': 'F999',
92   \   },
93   \   {
94   \     'lnum': 109,
95   \     'col': 5,
96   \     'vcol': 1,
97   \     'type': 'E',
98   \     'end_col': 8,
99   \     'text': 'local variable ''test'' is assigned to but never used',
100   \     'code': 'F841',
101   \   },
102   \ ],
103   \ ale_linters#python#flakehell#Handle(1, [
104   \ 'foo.py:25:1: F821 undefined name ''foo''',
105   \ 'foo.py:28:5: F405 hello may be undefined, or defined from star imports: x',
106   \ 'foo.py:104:5: F999 ''continue'' not properly in loop',
107   \ 'foo.py:106:5: F999 ''break'' outside loop',
108   \ 'foo.py:109:5: F841 local variable ''test'' is assigned to but never used',
109   \ ])
110
111 Execute(The flakehell handler should handle stack traces):
112   AssertEqual
113   \ [
114   \   {
115   \     'lnum': 1,
116   \     'text': 'ImportError: No module named parser (See :ALEDetail)',
117   \     'detail': join([
118   \       'Traceback (most recent call last):',
119   \       '  File "/usr/local/bin/flakehell", line 7, in <module>',
120   \       '    from flakehell.main.cli import main',
121   \       '  File "/usr/local/lib/python2.7/dist-packages/flakehell/main/cli.py", line 2, in <module>',
122   \       '    from flakehell.main import application',
123   \       '  File "/usr/local/lib/python2.7/dist-packages/flakehell/main/application.py", line 17, in <module>',
124   \       '    from flakehell.plugins import manager as plugin_manager',
125   \       '  File "/usr/local/lib/python2.7/dist-packages/flakehell/plugins/manager.py", line 5, in <module>',
126   \       '    import pkg_resources',
127   \       '  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 35, in <module>',
128   \       '    import email.parser',
129   \       'ImportError: No module named parser',
130   \     ], "\n"),
131   \   },
132   \ ],
133   \ ale_linters#python#flakehell#Handle(42, [
134   \   'Traceback (most recent call last):',
135   \   '  File "/usr/local/bin/flakehell", line 7, in <module>',
136   \   '    from flakehell.main.cli import main',
137   \   '  File "/usr/local/lib/python2.7/dist-packages/flakehell/main/cli.py", line 2, in <module>',
138   \   '    from flakehell.main import application',
139   \   '  File "/usr/local/lib/python2.7/dist-packages/flakehell/main/application.py", line 17, in <module>',
140   \   '    from flakehell.plugins import manager as plugin_manager',
141   \   '  File "/usr/local/lib/python2.7/dist-packages/flakehell/plugins/manager.py", line 5, in <module>',
142   \   '    import pkg_resources',
143   \   '  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 35, in <module>',
144   \   '    import email.parser',
145   \   'ImportError: No module named parser',
146   \ ])
147
148 Execute(The flakehell handler should handle names with spaces):
149   AssertEqual
150   \ [
151   \   {
152   \     'lnum': 6,
153   \     'col': 6,
154   \     'vcol': 1,
155   \     'type': 'E',
156   \     'text': 'indentation is not a multiple of four',
157   \     'code': 'E111',
158   \     'sub_type': 'style',
159   \   },
160   \ ],
161   \ ale_linters#python#flakehell#Handle(42, [
162   \   'C:\something\with spaces.py:6:6: E111 indentation is not a multiple of four',
163   \ ])
164
165 Execute(Warnings about trailing whitespace should be reported by default):
166   AssertEqual
167   \ [
168   \   {
169   \     'lnum': 6,
170   \     'col': 1,
171   \     'vcol': 1,
172   \     'code': 'W291',
173   \     'type': 'W',
174   \     'sub_type': 'style',
175   \     'text': 'who cares',
176   \   },
177   \   {
178   \     'lnum': 6,
179   \     'col': 1,
180   \     'vcol': 1,
181   \     'code': 'W293',
182   \     'type': 'W',
183   \     'sub_type': 'style',
184   \     'text': 'who cares',
185   \   },
186   \ ],
187   \ ale_linters#python#flakehell#Handle(bufnr(''), [
188   \   'foo.py:6:1: W291 who cares',
189   \   'foo.py:6:1: W293 who cares',
190   \ ])
191
192 Execute(Disabling trailing whitespace warnings should work):
193   let b:ale_warn_about_trailing_whitespace = 0
194
195   AssertEqual
196   \ [
197   \ ],
198   \ ale_linters#python#flakehell#Handle(bufnr(''), [
199   \   'foo.py:6:1: W291 who cares',
200   \   'foo.py:6:1: W293 who cares',
201   \ ])
202
203 Execute(Warnings about trailing blank lines should be reported by default):
204   AssertEqual
205   \ [
206   \   {
207   \     'lnum': 6,
208   \     'col': 1,
209   \     'vcol': 1,
210   \     'code': 'W391',
211   \     'type': 'W',
212   \     'sub_type': 'style',
213   \     'text': 'blank line at end of file',
214   \   },
215   \ ],
216   \ ale_linters#python#flakehell#Handle(bufnr(''), [
217   \   'foo.py:6:1: W391 blank line at end of file',
218   \ ])
219
220 Execute(Disabling trailing blank line warnings should work):
221   let b:ale_warn_about_trailing_blank_lines = 0
222
223   AssertEqual
224   \ [
225   \ ],
226   \ ale_linters#python#flakehell#Handle(bufnr(''), [
227   \   'foo.py:6:1: W391 blank line at end of file',
228   \ ])
229
230 Execute(F401 should be a warning):
231   AssertEqual
232   \ [
233   \   {
234   \     'lnum': 6,
235   \     'col': 1,
236   \     'vcol': 1,
237   \     'code': 'F401',
238   \     'type': 'W',
239   \     'text': 'module imported but unused',
240   \   },
241   \ ],
242   \ ale_linters#python#flakehell#Handle(bufnr(''), [
243   \   'foo.py:6:1: F401 module imported but unused',
244   \ ])
245
246 Execute(E112 should be a syntax error):
247   AssertEqual
248   \ [
249   \   {
250   \     'lnum': 6,
251   \     'col': 1,
252   \     'vcol': 1,
253   \     'code': 'E112',
254   \     'type': 'E',
255   \     'text': 'expected an indented block',
256   \   },
257   \ ],
258   \ ale_linters#python#flakehell#Handle(bufnr(''), [
259   \   'foo.py:6:1: E112 expected an indented block',
260   \ ])
261
262 Execute(Compatibility with hacking which uses older style flakehell):
263   AssertEqual
264   \ [
265   \   {
266   \     'lnum': 6,
267   \     'col': 1,
268   \     'vcol': 1,
269   \     'code': 'H306',
270   \     'type': 'W',
271   \     'text': 'imports not in alphabetical order (smtplib, io)',
272   \   },
273   \ ],
274   \ ale_linters#python#flakehell#Handle(bufnr(''), [
275   \   'foo.py:6:1: H306: imports not in alphabetical order (smtplib, io)',
276   \ ])