+Before:
+ Save g:ale_buffer_info
+ Save g:ale_enabled
+ Save b:ale_enabled
+ Save g:ale_maximum_file_size
+ Save b:ale_maximum_file_size
+
+ function! SetUpCursorData()
+ let g:ale_buffer_info = {
+ \ bufnr('%'): {
+ \ 'loclist': [
+ \ {
+ \ 'lnum': 2,
+ \ 'col': 10,
+ \ 'linter_name': 'testlinter',
+ \ 'type': 'W',
+ \ 'text': 'X'
+ \ },
+ \ ],
+ \ },
+ \}
+
+ call cursor(2, 16)
+ endfunction
+
+ function! TestCallback(buffer, output)
+ return []
+ endfunction
+
+ call ale#linter#Define('foobar', {
+ \ 'name': 'testlinter',
+ \ 'callback': 'TestCallback',
+ \ 'executable': 'echo',
+ \ 'command': 'true',
+ \})
+
+ function GetLastMessage()
+ redir => l:output
+ silent mess
+ redir END
+
+ " Filter out messages that could come from saving this test file.
+ let l:lines = filter(split(l:output, "\n"), 'v:val !~ ''written\|No line''')
+
+ return empty(l:lines) ? '' : l:lines[-1]
+ endfunction
+
+ echomsg ''
+
+After:
+ Restore
+ call ale#linter#Reset()
+ delfunction TestCallback
+ delfunction GetLastMessage
+ delfunction SetUpCursorData
+
+Given foobar (Some imaginary filetype):
+ foo
+ bar
+ baz
+
+Execute(Linting shouldn't happen when ALE is disabled globally):
+ let g:ale_enabled = 0
+ let g:ale_buffer_info = {}
+
+ call ale#Queue(0)
+
+ AssertEqual {}, g:ale_buffer_info
+ call SetUpCursorData()
+ call ale#cursor#EchoCursorWarning()
+ AssertEqual '', GetLastMessage()
+
+Execute(Linting shouldn't happen when ALE is disabled locally):
+ let b:ale_enabled = 0
+ let g:ale_buffer_info = {}
+
+ call ale#Queue(0)
+
+ AssertEqual {}, g:ale_buffer_info
+ call SetUpCursorData()
+ call ale#cursor#EchoCursorWarning()
+ AssertEqual '', GetLastMessage()
+
+Execute(Linting shouldn't happen when the file is too large with global options):
+ let g:ale_maximum_file_size = 12
+ let g:ale_buffer_info = {}
+
+ call ale#Queue(0)
+
+ AssertEqual {}, g:ale_buffer_info
+ " We shouldn't show cursor warnings.
+ call SetUpCursorData()
+ call ale#cursor#EchoCursorWarning()
+ AssertEqual '', GetLastMessage()
+
+Execute(Linting shouldn't happen when the file is too large with local options):
+ let b:ale_maximum_file_size = 12
+ let g:ale_buffer_info = {}
+
+ call ale#Queue(0)
+
+ AssertEqual {}, g:ale_buffer_info
+ call SetUpCursorData()
+ call ale#cursor#EchoCursorWarning()
+ AssertEqual '', GetLastMessage()