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.
3 Save g:ale_cache_executable_check_failures
4 Save g:ale_change_sign_column_color
5 Save g:ale_command_wrapper
6 Save g:ale_completion_delay
7 Save g:ale_completion_enabled
8 Save g:ale_completion_max_suggestions
10 Save g:ale_echo_cursor
11 Save g:ale_echo_msg_error_str
12 Save g:ale_echo_msg_format
13 Save g:ale_echo_msg_info_str
14 Save g:ale_echo_msg_warning_str
15 Save g:ale_fix_on_save
17 Save g:ale_history_enabled
18 Save g:ale_history_log_output
19 Save g:ale_info_default_mode
20 Save g:ale_keep_list_window_open
22 Save g:ale_lint_on_enter
23 Save g:ale_lint_on_filetype_changed
24 Save g:ale_lint_on_insert_leave
25 Save g:ale_lint_on_save
26 Save g:ale_lint_on_text_changed
28 Save g:ale_linters_explicit
29 Save g:ale_linters_ignore
30 Save g:ale_list_vertical
31 Save g:ale_list_window_size
32 Save g:ale_loclist_msg_format
33 Save g:ale_lsp_error_messages
34 Save g:ale_max_buffer_history_size
36 Save g:ale_maximum_file_size
38 Save g:ale_pattern_options
39 Save g:ale_pattern_options_enabled
41 Save g:ale_set_balloons
42 Save g:ale_set_highlights
43 Save g:ale_set_loclist
44 Save g:ale_set_quickfix
46 Save g:ale_sign_column_always
49 Save g:ale_sign_offset
50 Save g:ale_sign_style_error
51 Save g:ale_sign_style_warning
52 Save g:ale_sign_warning
53 Save g:ale_sign_highlight_linenrs
55 Save g:ale_use_neovim_diagnostics_api
56 Save g:ale_use_global_executables
57 Save g:ale_virtualtext_cursor
58 Save g:ale_warn_about_trailing_blank_lines
59 Save g:ale_warn_about_trailing_whitespace
63 let g:ale_buffer_info = {}
64 let g:ale_cache_executable_check_failures = 0
65 let g:ale_change_sign_column_color = 0
66 let g:ale_command_wrapper = ''
67 let g:ale_completion_delay = 100
68 let g:ale_completion_enabled = 0
69 let g:ale_completion_max_suggestions = 50
70 let g:ale_disable_lsp = 0
71 let g:ale_echo_cursor = 1
72 let g:ale_echo_msg_error_str = 'Error'
73 let g:ale_echo_msg_format = '%code: %%s'
74 let g:ale_echo_msg_info_str = 'Info'
75 let g:ale_echo_msg_warning_str = 'Warning'
76 let g:ale_fix_on_save = 0
77 let g:ale_history_enabled = 1
78 let g:ale_history_log_output = 1
79 " This needs to be set to echo for this series of tests.
80 let g:ale_info_default_mode = 'echo'
81 let g:ale_keep_list_window_open = 0
82 let g:ale_lint_delay = 200
83 let g:ale_lint_on_enter = 1
84 let g:ale_lint_on_filetype_changed = 1
85 let g:ale_lint_on_insert_leave = 1
86 let g:ale_lint_on_save = 1
87 let g:ale_lint_on_text_changed = 'normal'
88 let g:ale_linters_explicit = 0
89 let g:ale_linters_ignore = {'python': ['pyright']}
90 let g:ale_list_vertical = 0
91 let g:ale_list_window_size = 10
92 let g:ale_loclist_msg_format = '%code: %%s'
93 let g:ale_lsp_error_messages = {}
94 let g:ale_max_buffer_history_size = 20
95 let g:ale_max_signs = -1
96 let g:ale_maximum_file_size = 0
97 let g:ale_open_list = 0
98 let g:ale_pattern_options = {}
99 let g:ale_pattern_options_enabled = 0
101 let g:ale_set_balloons = 0
102 let g:ale_set_highlights = 1
103 let g:ale_set_loclist = 1
104 let g:ale_set_quickfix = 0
105 let g:ale_set_signs = 1
106 let g:ale_sign_column_always = 0
107 let g:ale_sign_error = '>>'
108 let g:ale_sign_info = '--'
109 let g:ale_sign_offset = 1000000
110 let g:ale_sign_style_error = '>>'
111 let g:ale_sign_style_warning = '--'
112 let g:ale_sign_warning = '--'
113 let g:ale_sign_highlight_linenrs = 0
114 let g:ale_type_map = {}
115 let g:ale_use_neovim_diagnostics_api = 0
116 let g:ale_use_global_executables = v:null
117 let g:ale_virtualtext_cursor = 'disabled'
118 let g:ale_warn_about_trailing_blank_lines = 1
119 let g:ale_warn_about_trailing_whitespace = 1
121 let g:testlinter1 = {'name': 'testlinter1', 'executable': 'testlinter1', 'command': 'testlinter1', 'callback': 'testCB1', 'output_stream': 'stdout'}
122 let g:testlinter2 = {'name': 'testlinter2', 'executable': 'testlinter2', 'command': 'testlinter2', 'callback': 'testCB2', 'output_stream': 'stdout'}
124 call ale#engine#ResetExecutableCache()
125 call ale#linter#Reset()
126 call ale#linter#PreventLoading('testft')
127 let g:ale_linters = {}
128 let g:ale_fixers = {}
129 let g:ale_linter_aliases = {}
130 let g:ale_buffer_info = {}
131 let g:fixer_lines = [
132 \ ' Suggested Fixers:',
133 \ ' ''foo'' - Fix things the foo way',
136 let g:globals_lines = [
137 \ ' Global Variables:',
138 \ 'let g:ale_cache_executable_check_failures = 0',
139 \ 'let g:ale_change_sign_column_color = 0',
140 \ 'let g:ale_command_wrapper = ''''',
141 \ 'let g:ale_completion_delay = 100',
142 \ 'let g:ale_completion_enabled = 0',
143 \ 'let g:ale_completion_max_suggestions = 50',
144 \ 'let g:ale_disable_lsp = 0',
145 \ 'let g:ale_echo_cursor = 1',
146 \ 'let g:ale_echo_msg_error_str = ''Error''',
147 \ 'let g:ale_echo_msg_format = ''%code: %%s''',
148 \ 'let g:ale_echo_msg_info_str = ''Info''',
149 \ 'let g:ale_echo_msg_warning_str = ''Warning''',
150 \ 'let g:ale_enabled = 1',
151 \ 'let g:ale_fix_on_save = 0',
152 \ 'let g:ale_fixers = {}',
153 \ 'let g:ale_history_enabled = 1',
154 \ 'let g:ale_info_default_mode = ''echo''',
155 \ 'let g:ale_history_log_output = 1',
156 \ 'let g:ale_keep_list_window_open = 0',
157 \ 'let g:ale_lint_delay = 200',
158 \ 'let g:ale_lint_on_enter = 1',
159 \ 'let g:ale_lint_on_filetype_changed = 1',
160 \ 'let g:ale_lint_on_insert_leave = 1',
161 \ 'let g:ale_lint_on_save = 1',
162 \ 'let g:ale_lint_on_text_changed = ''normal''',
163 \ 'let g:ale_linter_aliases = {}',
164 \ 'let g:ale_linters = {}',
165 \ 'let g:ale_linters_explicit = 0',
166 \ 'let g:ale_linters_ignore = {''python'': [''pyright'']}',
167 \ 'let g:ale_list_vertical = 0',
168 \ 'let g:ale_list_window_size = 10',
169 \ 'let g:ale_loclist_msg_format = ''%code: %%s''',
170 \ 'let g:ale_max_buffer_history_size = 20',
171 \ 'let g:ale_max_signs = -1',
172 \ 'let g:ale_maximum_file_size = 0',
173 \ 'let g:ale_open_list = 0',
174 \ 'let g:ale_pattern_options = {}',
175 \ 'let g:ale_pattern_options_enabled = 0',
176 \ 'let g:ale_root = {}',
177 \ 'let g:ale_set_balloons = 0',
178 \ 'let g:ale_set_highlights = 1',
179 \ 'let g:ale_set_loclist = 1',
180 \ 'let g:ale_set_quickfix = 0',
181 \ 'let g:ale_set_signs = 1',
182 \ 'let g:ale_sign_column_always = 0',
183 \ 'let g:ale_sign_error = ''>>''',
184 \ 'let g:ale_sign_info = ''--''',
185 \ 'let g:ale_sign_offset = 1000000',
186 \ 'let g:ale_sign_style_error = ''>>''',
187 \ 'let g:ale_sign_style_warning = ''--''',
188 \ 'let g:ale_sign_warning = ''--''',
189 \ 'let g:ale_sign_highlight_linenrs = 0',
190 \ 'let g:ale_type_map = {}',
191 \ 'let g:ale_use_neovim_diagnostics_api = 0',
192 \ 'let g:ale_use_global_executables = v:null',
193 \ 'let g:ale_virtualtext_cursor = ''disabled''',
194 \ 'let g:ale_warn_about_trailing_blank_lines = 1',
195 \ 'let g:ale_warn_about_trailing_whitespace = 1',
198 let g:command_header = [
199 \ ' Command History:',
202 function CheckInfo(expected_list) abort
206 noautocmd silent ALEInfo
209 AssertEqual a:expected_list, split(l:output, "\n")
212 call ale#test#SetDirectory('/testplugin/test')
214 call ale#fix#registry#Clear()
215 call ale#fix#registry#Add('foo', 'x', [], 'Fix things the foo way')
220 if exists('g:info_test_file') && filereadable(g:info_test_file)
221 call delete(g:info_test_file)
230 unlet! g:variables_lines
231 unlet! g:globals_string
232 unlet! g:command_header
233 unlet! g:ale_testft_testlinter1_foo
234 unlet! g:ale_testft_testlinter1_bar
235 unlet! g:ale_testft2_testlinter2_foo
236 unlet! b:ale_testft2_testlinter2_foo
237 unlet! g:ale_testft2_testlinter2_bar
238 unlet! g:info_test_file
239 unlet! g:ale_testft_build_dir_names
240 unlet! g:ale_testft_testlinter2_option
241 delfunction CheckInfo
243 call ale#test#RestoreDirectory()
244 call ale#fix#registry#ResetToDefaults()
246 Given nolintersft (Empty buffer with no linters):
247 Execute (ALEInfo with no linters should return the right output):
250 \ ' Current Filetype: nolintersft',
251 \ 'Available Linters: []',
252 \ ' Enabled Linters: []',
253 \ ' Ignored Linters: []',
260 Given (Empty buffer with no filetype):
261 Execute (ALEInfo should return buffer-local global ALE settings):
262 let b:ale_linters = {'x': ['y']}
266 \ 'let b:ale_linters = {''x'': [''y'']}',
267 \ index(g:globals_lines, 'let g:ale_linters = {}') + 1
272 \ ' Current Filetype: ',
273 \ 'Available Linters: []',
274 \ ' Enabled Linters: []',
275 \ ' Ignored Linters: []',
282 Given (Empty buffer with no filetype):
283 Execute (ALEInfo with no filetype should return the right output):
286 \ ' Current Filetype: ',
287 \ 'Available Linters: []',
288 \ ' Enabled Linters: []',
289 \ ' Ignored Linters: []',
296 Given testft (Empty buffer):
297 Execute (ALEInfo with a single linter should return the right output):
298 call ale#linter#Define('testft', g:testlinter1)
302 \ ' Current Filetype: testft',
303 \ 'Available Linters: [''testlinter1'']',
304 \ ' Enabled Linters: [''testlinter1'']',
305 \ ' Ignored Linters: []',
312 Given testft (Empty buffer):
313 Execute (ALEInfo with two linters should return the right output):
314 call ale#linter#Define('testft', g:testlinter1)
315 call ale#linter#Define('testft', g:testlinter2)
319 \ ' Current Filetype: testft',
320 \ 'Available Linters: [''testlinter1'', ''testlinter2'']',
321 \ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
322 \ ' Ignored Linters: []',
329 Given testft (Empty buffer):
330 Execute (ALEInfo should calculate enabled linters correctly):
331 call ale#linter#Define('testft', g:testlinter1)
332 call ale#linter#Define('testft', g:testlinter2)
333 let g:ale_linters = {'testft': ['testlinter2']}
335 let g:globals_lines[index(g:globals_lines, 'let g:ale_linters = {}')]
336 \ = 'let g:ale_linters = {''testft'': [''testlinter2'']}'
340 \ ' Current Filetype: testft',
341 \ 'Available Linters: [''testlinter1'', ''testlinter2'']',
342 \ ' Enabled Linters: [''testlinter2'']',
343 \ ' Ignored Linters: []',
350 Given testft (Empty buffer):
351 Execute (ALEInfo should only return linters for current filetype):
352 call ale#linter#Define('testft', g:testlinter1)
353 call ale#linter#Define('testft2', g:testlinter2)
357 \ ' Current Filetype: testft',
358 \ 'Available Linters: [''testlinter1'']',
359 \ ' Enabled Linters: [''testlinter1'']',
360 \ ' Ignored Linters: []',
367 Given testft.testft2 (Empty buffer with two filetypes):
368 Execute (ALEInfo with compound filetypes should return linters for both of them):
369 call ale#linter#Define('testft', g:testlinter1)
370 call ale#linter#Define('testft2', g:testlinter2)
374 \ ' Current Filetype: testft.testft2',
375 \ 'Available Linters: [''testlinter1'', ''testlinter2'']',
376 \ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
377 \ ' Ignored Linters: []',
384 Given testft.testft2 (Empty buffer with two filetypes):
385 Execute (ALEInfo should return appropriately named global variables):
386 let g:ale_testft_testlinter1_foo = 'abc'
387 let g:ale_testft_testlinter1_bar = ['abc']
388 let g:ale_testft2_testlinter2_foo = 123
389 let g:ale_testft2_testlinter2_bar = {'x': 'y'}
391 call ale#linter#Define('testft', g:testlinter1)
392 call ale#linter#Define('testft2', g:testlinter2)
396 \ ' Current Filetype: testft.testft2',
397 \ 'Available Linters: [''testlinter1'', ''testlinter2'']',
398 \ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
399 \ ' Ignored Linters: []',
403 \ ' Linter Variables:',
404 \ 'let g:ale_testft2_testlinter2_bar = {''x'': ''y''}',
405 \ 'let g:ale_testft2_testlinter2_foo = 123',
406 \ 'let g:ale_testft_testlinter1_bar = [''abc'']',
407 \ 'let g:ale_testft_testlinter1_foo = ''abc''',
414 Execute (ALEInfoToFile should write to a file correctly):
415 let g:ale_testft_testlinter1_foo = 'abc'
416 let g:ale_testft_testlinter1_bar = ['abc']
417 let g:ale_testft2_testlinter2_foo = 123
418 let g:ale_testft2_testlinter2_bar = {'x': 'y'}
420 call ale#linter#Define('testft', g:testlinter1)
421 call ale#linter#Define('testft2', g:testlinter2)
423 let g:info_test_file = tempname()
424 execute 'ALEInfoToFile ' . fnameescape(g:info_test_file)
428 \ ' Current Filetype: testft.testft2',
429 \ 'Available Linters: [''testlinter1'', ''testlinter2'']',
430 \ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
431 \ ' Ignored Linters: []',
435 \ ' Linter Variables:',
436 \ 'let g:ale_testft2_testlinter2_bar = {''x'': ''y''}',
437 \ 'let g:ale_testft2_testlinter2_foo = 123',
438 \ 'let g:ale_testft_testlinter1_bar = [''abc'']',
439 \ 'let g:ale_testft_testlinter1_foo = ''abc''',
443 \ + g:command_header,
444 \ readfile(g:info_test_file)
446 Given testft.testft2 (Empty buffer with two filetypes):
447 Execute (ALEInfo should buffer-local linter variables):
448 let g:ale_testft2_testlinter2_foo = 123
449 let b:ale_testft2_testlinter2_foo = 456
451 call ale#linter#Define('testft', g:testlinter1)
452 call ale#linter#Define('testft2', g:testlinter2)
456 \ ' Current Filetype: testft.testft2',
457 \ 'Available Linters: [''testlinter1'', ''testlinter2'']',
458 \ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
459 \ ' Ignored Linters: []',
463 \ ' Linter Variables:',
464 \ 'let g:ale_testft2_testlinter2_foo = 123',
465 \ 'let b:ale_testft2_testlinter2_foo = 456',
472 Given testft.testft2 (Empty buffer with two filetypes):
473 Execute (ALEInfo should output linter aliases):
474 let g:testlinter1.aliases = ['testftalias1', 'testftalias2']
475 let g:testlinter2.aliases = ['testftalias3', 'testftalias4']
477 let g:ale_testft2_testlinter2_foo = 123
478 let b:ale_testft2_testlinter2_foo = 456
480 call ale#linter#Define('testft', g:testlinter1)
481 call ale#linter#Define('testft2', g:testlinter2)
485 \ ' Current Filetype: testft.testft2',
486 \ 'Available Linters: [''testlinter1'', ''testlinter2'']',
487 \ ' Linter Aliases:',
488 \ '''testlinter1'' -> [''testftalias1'', ''testftalias2'']',
489 \ '''testlinter2'' -> [''testftalias3'', ''testftalias4'']',
490 \ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
491 \ ' Ignored Linters: []',
495 \ ' Linter Variables:',
496 \ 'let g:ale_testft2_testlinter2_foo = 123',
497 \ 'let b:ale_testft2_testlinter2_foo = 456',
504 Given testft.testft2 (Empty buffer with two filetypes):
505 Execute (ALEInfo should return command history):
506 let b:ale_history = [
507 \ {'status': 'started', 'job_id': 347, 'command': 'first command'},
508 \ {'status': 'started', 'job_id': 347, 'command': ['/bin/bash', '\c', 'last command']},
511 call ale#linter#Define('testft', g:testlinter1)
512 call ale#linter#Define('testft2', g:testlinter2)
516 \ ' Current Filetype: testft.testft2',
517 \ 'Available Linters: [''testlinter1'', ''testlinter2'']',
518 \ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
519 \ ' Ignored Linters: []',
526 \ '(started) ''first command''',
527 \ '(started) [''/bin/bash'', ''\c'', ''last command'']',
531 Given testft.testft2 (Empty buffer with two filetypes):
532 Execute (ALEInfo command history should print exit codes correctly):
533 let b:ale_history = [
534 \ {'status': 'finished', 'exit_code': 0, 'job_id': 347, 'command': 'first command'},
535 \ {'status': 'finished', 'exit_code': 1, 'job_id': 347, 'command': ['/bin/bash', '\c', 'last command']},
538 call ale#linter#Define('testft', g:testlinter1)
539 call ale#linter#Define('testft2', g:testlinter2)
543 \ ' Current Filetype: testft.testft2',
544 \ 'Available Linters: [''testlinter1'', ''testlinter2'']',
545 \ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
546 \ ' Ignored Linters: []',
553 \ '(finished - exit code 0) ''first command''',
554 \ '(finished - exit code 1) [''/bin/bash'', ''\c'', ''last command'']',
558 Given testft.testft2 (Empty buffer with two filetypes):
559 Execute (ALEInfo command history should print command output if logging is on):
560 let g:ale_history_log_output = 1
562 let b:ale_history = [
564 \ 'status': 'finished',
567 \ 'command': 'first command',
568 \ 'output': ['some', 'first command output'],
571 \ 'status': 'finished',
574 \ 'command': ['/bin/bash', '\c', 'last command'],
575 \ 'output': ['different second command output'],
578 \ 'status': 'finished',
581 \ 'command': 'command with no output',
586 call ale#linter#Define('testft', g:testlinter1)
587 call ale#linter#Define('testft2', g:testlinter2)
591 \ ' Current Filetype: testft.testft2',
592 \ 'Available Linters: [''testlinter1'', ''testlinter2'']',
593 \ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
594 \ ' Ignored Linters: []',
601 \ '(finished - exit code 0) ''first command''',
603 \ '<<<OUTPUT STARTS>>>',
605 \ 'first command output',
606 \ '<<<OUTPUT ENDS>>>',
608 \ '(finished - exit code 1) [''/bin/bash'', ''\c'', ''last command'']',
610 \ '<<<OUTPUT STARTS>>>',
611 \ 'different second command output',
612 \ '<<<OUTPUT ENDS>>>',
614 \ '(finished - exit code 0) ''command with no output''',
616 \ '<<<NO OUTPUT RETURNED>>>',
620 Execute (ALEInfo should include executable checks in the history):
621 call ale#linter#Define('testft', g:testlinter1)
622 call ale#engine#IsExecutable(bufnr(''), has('win32') ? 'cmd' : 'echo')
623 call ale#engine#IsExecutable(bufnr(''), has('win32') ? 'cmd' : 'echo')
624 call ale#engine#IsExecutable(bufnr(''), 'TheresNoWayThisIsExecutable')
625 call ale#engine#IsExecutable(bufnr(''), 'TheresNoWayThisIsExecutable')
629 \ ' Current Filetype: testft.testft2',
630 \ 'Available Linters: [''testlinter1'']',
631 \ ' Enabled Linters: [''testlinter1'']',
632 \ ' Ignored Linters: []',
639 \ '(executable check - success) ' . (has('win32') ? 'cmd' : 'echo'),
640 \ '(executable check - failure) TheresNoWayThisIsExecutable',
641 \ '(executable check - failure) TheresNoWayThisIsExecutable',
645 Execute (The option for caching failing executable checks should work):
646 let g:ale_cache_executable_check_failures = 1
647 " Replace output for the variable we have to modify above.
648 call map(g:globals_lines, {
649 \ _, val -> val =~ 'ale_cache_executable_check_failures' ? 'let g:ale_cache_executable_check_failures = 1' : val
652 call ale#linter#Define('testft', g:testlinter1)
654 call ale#engine#IsExecutable(bufnr(''), has('win32') ? 'cmd' : 'echo')
655 call ale#engine#IsExecutable(bufnr(''), has('win32') ? 'cmd' : 'echo')
656 call ale#engine#IsExecutable(bufnr(''), 'TheresNoWayThisIsExecutable')
657 call ale#engine#IsExecutable(bufnr(''), 'TheresNoWayThisIsExecutable')
661 \ ' Current Filetype: testft.testft2',
662 \ 'Available Linters: [''testlinter1'']',
663 \ ' Enabled Linters: [''testlinter1'']',
664 \ ' Ignored Linters: []',
671 \ '(executable check - success) ' . (has('win32') ? 'cmd' : 'echo'),
672 \ '(executable check - failure) TheresNoWayThisIsExecutable',
676 Given testft (Empty buffer):
677 Execute (LSP errors for a linter should be outputted):
678 let g:ale_lsp_error_messages = {'testlinter1': ['foo', 'bar']}
679 call ale#linter#Define('testft', g:testlinter1)
683 \ ' Current Filetype: testft',
684 \ 'Available Linters: [''testlinter1'']',
685 \ ' Enabled Linters: [''testlinter1'']',
686 \ ' Ignored Linters: []',
691 \ ' LSP Error Messages:',
693 \ '(Errors for testlinter1)',
700 Given testft (Empty buffer):
701 Execute (LSP errors for other linters shouldn't appear):
702 let g:ale_lsp_error_messages = {'testlinter2': ['foo']}
703 call ale#linter#Define('testft', g:testlinter1)
707 \ ' Current Filetype: testft',
708 \ 'Available Linters: [''testlinter1'']',
709 \ ' Enabled Linters: [''testlinter1'']',
710 \ ' Ignored Linters: []',
717 Given testft.testft2 (Empty buffer with two filetypes):
718 Execute (ALEInfo should include linter global options):
719 call ale#linter#Define('testft', g:testlinter1)
720 call ale#linter#Define('testft2', g:testlinter2)
722 " eg: like g:c_build_dir_names
723 let g:ale_testft_build_dir_names = ['build', 'bin']
725 let g:variables_lines = [
726 \ ' Linter Variables:',
727 \ 'let g:ale_testft_build_dir_names = [''build'', ''bin'']',
733 \ ' Current Filetype: testft.testft2',
734 \ 'Available Linters: [''testlinter1'', ''testlinter2'']',
735 \ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
736 \ ' Ignored Linters: []',
739 \ + g:variables_lines
744 Given testft (Empty buffer with two filetypes):
745 Execute (ALEInfo should include linter global options for enabled linters):
746 call ale#linter#Define('testft', g:testlinter1)
747 call ale#linter#Define('testft', g:testlinter2)
749 let g:ale_linters = {'testft': ['testlinter1']}
751 " should not appear, since not enabled
752 let g:ale_testft_testlinter2_option = 'test'
754 let g:globals_lines[index(g:globals_lines, 'let g:ale_linters = {}')]
755 \ = 'let g:ale_linters = {''testft'': [''testlinter1'']}'
759 \ ' Current Filetype: testft',
760 \ 'Available Linters: [''testlinter1'', ''testlinter2'']',
761 \ ' Enabled Linters: [''testlinter1'']',
762 \ ' Ignored Linters: []',
770 Given ale-info (An ALEInfo buffer):
771 Execute(ALEInfo should not report information about its own window):