]> git.madduck.net Git - etc/vim.git/blob - .vim/bundle/ale/test/test_computed_lint_file_values.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:

Merge commit '76265755a1add77121c8f9dabb3e9bb70fe9a972' as '.vim/bundle/ale'
[etc/vim.git] / .vim / bundle / ale / test / test_computed_lint_file_values.vader
1 Before:
2   Save g:ale_enabled
3   Save g:ale_run_synchronously
4   Save g:ale_set_lists_synchronously
5   Save g:ale_buffer_info
6
7   let g:ale_enabled = 1
8   let g:ale_buffer_info = {}
9   let g:ale_run_synchronously = 1
10   let g:ale_set_lists_synchronously = 1
11
12   function! TestCallback(buffer, output)
13     " Windows adds extra spaces to the text from echo.
14     return [{
15     \ 'lnum': 2,
16     \ 'col': 3,
17     \ 'text': 'testlinter1',
18     \}]
19   endfunction
20   function! TestCallback2(buffer, output)
21     " Windows adds extra spaces to the text from echo.
22     return [{
23     \ 'lnum': 1,
24     \ 'col': 3,
25     \ 'text': 'testlinter2',
26     \}]
27   endfunction
28   function! TestCallback3(buffer, output)
29     " Windows adds extra spaces to the text from echo.
30     return [{
31     \ 'lnum': 3,
32     \ 'col': 3,
33     \ 'text': 'testlinter3',
34     \}]
35   endfunction
36
37   " These two linters computer their lint_file values after running commands.
38   call ale#linter#Define('foobar', {
39   \ 'name': 'testlinter1',
40   \ 'callback': 'TestCallback',
41   \ 'executable': has('win32') ? 'cmd' : 'echo',
42   \ 'command': has('win32') ? 'echo foo bar' : '/bin/sh -c ''echo foo bar''',
43   \ 'lint_file': {b -> ale#command#Run(b, 'echo', {-> 1})},
44   \})
45   call ale#linter#Define('foobar', {
46   \ 'name': 'testlinter2',
47   \ 'callback': 'TestCallback2',
48   \ 'executable': has('win32') ? 'cmd' : 'echo',
49   \ 'command': has('win32') ? 'echo foo bar' : '/bin/sh -c ''echo foo bar''',
50   \ 'lint_file': {b -> ale#command#Run(b, 'echo', {-> ale#command#Run(b, 'echo', {-> 1})})},
51   \})
52   " This one directly computes the result.
53   call ale#linter#Define('foobar', {
54   \ 'name': 'testlinter3',
55   \ 'callback': 'TestCallback3',
56   \ 'executable': has('win32') ? 'cmd' : 'echo',
57   \ 'command': has('win32') ? 'echo foo bar' : '/bin/sh -c ''echo foo bar''',
58   \ 'lint_file': {b -> 1},
59   \})
60
61   let g:filename = tempname()
62   call writefile([], g:filename)
63   call ale#test#SetFilename(g:filename)
64
65 After:
66   delfunction TestCallback
67
68   call ale#engine#Cleanup(bufnr(''))
69   Restore
70   call ale#linter#Reset()
71
72   " Items and markers, etc.
73   call setloclist(0, [])
74   call clearmatches()
75   call ale#sign#Clear()
76
77   if filereadable(g:filename)
78     call delete(g:filename)
79   endif
80
81   unlet g:filename
82
83 Given foobar(A file with some lines):
84   foo
85   bar
86   baz
87
88 Execute(lint_file results where the result is eventually computed should be run):
89   call ale#Queue(0, 'lint_file')
90   call ale#test#FlushJobs()
91
92   AssertEqual
93   \ [
94   \   {
95   \     'bufnr': bufnr('%'),
96   \     'lnum': 1,
97   \     'vcol': 0,
98   \     'col': 3,
99   \     'text': 'testlinter2',
100   \     'type': 'E',
101   \     'nr': -1,
102   \     'pattern': '',
103   \     'valid': 1,
104   \   },
105   \   {
106   \     'bufnr': bufnr('%'),
107   \     'lnum': 2,
108   \     'vcol': 0,
109   \     'col': 3,
110   \     'text': 'testlinter1',
111   \     'type': 'E',
112   \     'nr': -1,
113   \     'pattern': '',
114   \     'valid': 1,
115   \   },
116   \   {
117   \     'bufnr': bufnr('%'),
118   \     'lnum': 3,
119   \     'vcol': 0,
120   \     'col': 3,
121   \     'text': 'testlinter3',
122   \     'type': 'E',
123   \     'nr': -1,
124   \     'pattern': '',
125   \     'valid': 1,
126   \   },
127   \ ],
128   \ ale#test#GetLoclistWithoutNewerKeys()
129
130 Execute(Linters where lint_file eventually evaluates to 1 shouldn't be run if we don't want to run them):
131   call ale#Queue(0, '')
132   call ale#test#FlushJobs()
133
134   AssertEqual [], ale#test#GetLoclistWithoutNewerKeys()
135
136 Execute(Keeping computed lint_file jobs running should work):
137   AssertEqual 'testlinter2', ale#linter#Get('foobar')[1].name
138
139   call ale#engine#InitBufferInfo(bufnr(''))
140
141   call ale#engine#MarkLinterActive(
142   \ g:ale_buffer_info[bufnr('')],
143   \ ale#linter#Get('foobar')[1]
144   \)
145   call ale#engine#RunLinters(bufnr(''), ale#linter#Get('foobar'), 0)
146
147   Assert !empty(g:ale_buffer_info[bufnr('')].active_linter_list),
148   \ 'The active linter list was empty'
149   Assert ale#engine#IsCheckingBuffer(bufnr('')),
150   \ 'The IsCheckingBuffer function returned 0'