]> git.madduck.net Git - etc/vim.git/blob - .vim/bundle/ale/test/test_linter_retrieval.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 'a39f715c13be3352193ffd9c5b7536b8786eff64' as '.vim/bundle/vim-lsp'
[etc/vim.git] / .vim / bundle / ale / test / test_linter_retrieval.vader
1 Before:
2   Save g:ale_linters
3   Save g:ale_linter_aliases
4
5   let g:testlinter1 = {'name': 'testlinter1', 'executable': 'testlinter1', 'command': 'testlinter1', 'callback': 'testCB1', 'output_stream': 'stdout', 'read_buffer': 1, 'lint_file': 0, 'aliases': [], 'lsp': ''}
6   let g:testlinter2 = {'name': 'testlinter2', 'executable': 'testlinter2', 'command': 'testlinter2', 'callback': 'testCB2', 'output_stream': 'stdout', 'read_buffer': 0, 'lint_file': 1, 'aliases': [], 'lsp': ''}
7   call ale#linter#Reset()
8   call ale#linter#PreventLoading('testft')
9   call ale#linter#PreventLoading('javascript')
10   call ale#linter#PreventLoading('typescript')
11
12 After:
13   Restore
14
15   unlet! g:testlinter1
16   unlet! g:testlinter2
17   unlet! b:ale_linters
18   unlet! b:ale_linter_aliases
19   call ale#linter#Reset()
20
21 Execute (You should be able to get a defined linter):
22   call ale#linter#Define('testft', g:testlinter1)
23   AssertEqual [g:testlinter1], ale#linter#Get('testft')
24
25 Execute (You should be able get select a single linter):
26   call ale#linter#Define('testft', g:testlinter1)
27   call ale#linter#Define('testft', g:testlinter2)
28   let g:ale_linters = {'testft': ['testlinter1']}
29
30   AssertEqual [g:testlinter1], ale#linter#Get('testft')
31
32 Execute (You should be able to select a linter by an alias):
33   let g:testlinter1.aliases = ['foo', 'linter1alias']
34
35   call ale#linter#Define('testft', g:testlinter1)
36   call ale#linter#Define('testft', g:testlinter2)
37   let g:ale_linters = {'testft': ['linter1alias']}
38
39   AssertEqual [g:testlinter1], ale#linter#Get('testft')
40
41 Execute (You should be able to select linters with a buffer option):
42   call ale#linter#Define('testft', g:testlinter1)
43   call ale#linter#Define('testft', g:testlinter2)
44   let g:ale_linters = {'testft': ['testlinter1', 'testlinter2']}
45   let b:ale_linters = {'testft': ['testlinter1']}
46
47   AssertEqual [g:testlinter1], ale#linter#Get('testft')
48
49 Execute (b:ale_linters should work when set to a List):
50   call ale#linter#Define('testft', g:testlinter1)
51   call ale#linter#Define('testft', g:testlinter2)
52   let g:ale_linters = {'testft': ['testlinter1', 'testlinter2']}
53   let b:ale_linters = ['testlinter1']
54
55   AssertEqual [g:testlinter1], ale#linter#Get('testft')
56
57 Execute (b:ale_linters should disable all linters when set to an empty List):
58   call ale#linter#Define('testft', g:testlinter1)
59   call ale#linter#Define('testft', g:testlinter2)
60   let g:ale_linters = {'testft': ['testlinter1', 'testlinter2']}
61   let b:ale_linters = []
62
63   AssertEqual [], ale#linter#Get('testft')
64
65 Execute (b:ale_linters should enable all available linters when set to 'all'):
66   call ale#linter#Define('testft', g:testlinter1)
67   call ale#linter#Define('testft', g:testlinter2)
68   let g:ale_linters = {'testft': ['testlinter1']}
69   let b:ale_linters = 'all'
70
71   AssertEqual [g:testlinter1, g:testlinter2], ale#linter#Get('testft')
72
73 Execute (Buffer settings shouldn't completely replace global settings):
74   call ale#linter#Define('testft', g:testlinter1)
75   call ale#linter#Define('testft', g:testlinter2)
76   let g:ale_linters = {'testft': ['testlinter1']}
77   let b:ale_linters = {'testft2': ['testlinter1', 'testlinter2']}
78
79   AssertEqual [g:testlinter1], ale#linter#Get('testft')
80
81 Execute (You should be able to alias linters from one filetype to another):
82   call ale#linter#Define('testft1', g:testlinter1)
83   let g:ale_linter_aliases = {'testft2': 'testft1'}
84
85   AssertEqual [g:testlinter1], ale#linter#Get('testft2')
86
87 Execute (You should be able to filter aliased linters):
88   call ale#linter#Define('testft1', g:testlinter1)
89   call ale#linter#Define('testft1', g:testlinter2)
90   let g:ale_linters = {'testft1': ['testlinter1'], 'testft2': ['testlinter2']}
91   let g:ale_linter_aliases = {'testft2': 'testft1'}
92
93   AssertEqual [g:testlinter1], ale#linter#Get('testft1')
94   AssertEqual [g:testlinter2], ale#linter#Get('testft2')
95
96 Execute (Dot-separated filetypes should be handled correctly):
97   call ale#linter#Define('testft1', g:testlinter1)
98   call ale#linter#Define('testft2', g:testlinter2)
99
100   AssertEqual [g:testlinter1, g:testlinter2], ale#linter#Get('testft1.testft2')
101
102 Execute (Linters for multiple aliases should be loaded):
103   call ale#linter#Define('testft1', g:testlinter1)
104   call ale#linter#Define('testft2', g:testlinter2)
105   let ale_linter_aliases = {'testft3': ['testft1', 'testft2']}
106
107   AssertEqual [g:testlinter1, g:testlinter2], ale#linter#Get('testft3')
108
109 Execute (You should be able to alias filetypes to themselves and another):
110   call ale#linter#Define('testft1', g:testlinter1)
111   call ale#linter#Define('testft2', g:testlinter2)
112   let ale_linter_aliases = {'testft1': ['testft1', 'testft2']}
113
114   AssertEqual [g:testlinter1, g:testlinter2], ale#linter#Get('testft1')
115
116 Execute (Buffer-local overrides for aliases should be used):
117   call ale#linter#Define('testft1', g:testlinter1)
118   call ale#linter#Define('testft2', g:testlinter2)
119   let g:ale_linter_aliases = {'testft1': ['testft2']}
120   let b:ale_linter_aliases = {'testft1': ['testft1', 'testft2']}
121
122   AssertEqual [g:testlinter1, g:testlinter2], ale#linter#Get('testft1')
123
124 Execute (The local alias option shouldn't completely replace the global one):
125   call ale#linter#Define('testft1', g:testlinter1)
126   call ale#linter#Define('testft2', g:testlinter2)
127   let g:ale_linter_aliases = {'testft1': ['testft1', 'testft2']}
128   " This is a key set for a different filetype.
129   " We should look for a key in this Dictionary first, and then check the
130   " global Dictionary.
131   let b:ale_linter_aliases = {'testft3': ['testft1']}
132
133   AssertEqual [g:testlinter1, g:testlinter2], ale#linter#Get('testft1')
134
135 Execute (Lists should be accepted for local aliases):
136   call ale#linter#Define('testft1', g:testlinter1)
137   call ale#linter#Define('testft2', g:testlinter2)
138   let g:ale_linter_aliases = {'testft1': ['testft1', 'testft2']}
139   " We should load the testft2 linters for this buffer, with no duplicates.
140   let b:ale_linter_aliases = ['testft2']
141
142   AssertEqual [g:testlinter2], ale#linter#Get('anything.else')
143
144 Execute (Strings should be accepted for local aliases):
145   call ale#linter#Define('testft1', g:testlinter1)
146   call ale#linter#Define('testft2', g:testlinter2)
147   let g:ale_linter_aliases = {'testft1': ['testft1', 'testft2']}
148   " We should load the testft2 linters for this buffer, with no duplicates.
149   let b:ale_linter_aliases = 'testft2'
150
151   AssertEqual [g:testlinter2], ale#linter#Get('anything.else')
152
153 Execute (Buffer-local overrides for aliases should be used):
154   call ale#linter#Define('testft1', g:testlinter1)
155   call ale#linter#Define('testft2', g:testlinter2)
156   let g:ale_linter_aliases = {'testft1': ['testft2']}
157   let b:ale_linter_aliases = {'testft1': ['testft1', 'testft2']}
158
159   AssertEqual [g:testlinter1, g:testlinter2], ale#linter#Get('testft1')
160
161 Execute (Linters new linters with the same name should replace old ones):
162   let g:testlinter1.name = g:testlinter2.name
163
164   call ale#linter#Define('testft1', g:testlinter1)
165   call ale#linter#Define('testft1', g:testlinter2)
166
167   AssertEqual [g:testlinter2], ale#linter#GetAll(['testft1'])
168
169 Execute (Linters should be loaded from disk appropriately):
170   call ale#linter#Reset()
171   AssertEqual [{'name': 'testlinter', 'output_stream': 'stdout', 'executable': 'testlinter', 'command': 'testlinter', 'callback': 'testCB', 'read_buffer': 1, 'lint_file': 0, 'aliases': [], 'lsp': ''}], ale#linter#Get('testft')
172
173
174 Execute (Linters for later filetypes should replace the former ones):
175   call ale#linter#Define('javascript', {
176   \   'name': 'eslint',
177   \   'executable': 'y',
178   \   'command': 'y',
179   \   'callback': 'y',
180   \})
181   call ale#linter#Define('typescript', {
182   \   'name': 'eslint',
183   \   'executable': 'x',
184   \   'command': 'x',
185   \   'callback': 'x',
186   \})
187
188   AssertEqual [
189   \ {'output_stream': 'stdout', 'lint_file': 0, 'read_buffer': 1, 'name': 'eslint', 'executable': 'x', 'lsp': '', 'aliases': [], 'command': 'x', 'callback': 'x'}
190   \], ale#linter#Get('javascript.typescript')