140 lines
3.9 KiB
Text
140 lines
3.9 KiB
Text
|
Before:
|
||
|
function! CollectResults(buffer, output)
|
||
|
return []
|
||
|
endfunction
|
||
|
|
||
|
function! FirstChainFunction(buffer)
|
||
|
return 'first'
|
||
|
endfunction
|
||
|
|
||
|
function! SecondChainFunction(buffer, output)
|
||
|
" We'll skip this command
|
||
|
return ''
|
||
|
endfunction
|
||
|
|
||
|
function! ThirdChainFunction(buffer, output)
|
||
|
return 'third'
|
||
|
endfunction
|
||
|
|
||
|
function! FourthChainFunction(buffer, output)
|
||
|
return 'fourth'
|
||
|
endfunction
|
||
|
|
||
|
let g:linter = {
|
||
|
\ 'name': 'testlinter',
|
||
|
\ 'callback': 'CollectResults',
|
||
|
\ 'executable': 'echo',
|
||
|
\ 'command_chain': [
|
||
|
\ {'callback': 'FirstChainFunction'},
|
||
|
\ {'callback': 'SecondChainFunction'},
|
||
|
\ {'callback': 'ThirdChainFunction'},
|
||
|
\ {'callback': 'FourthChainFunction'},
|
||
|
\ ],
|
||
|
\ 'read_buffer': 1,
|
||
|
\}
|
||
|
|
||
|
function! ProcessIndex(chain_index)
|
||
|
return ale#engine#ProcessChain(347, g:linter, a:chain_index, [])
|
||
|
endfunction
|
||
|
|
||
|
After:
|
||
|
delfunction CollectResults
|
||
|
delfunction FirstChainFunction
|
||
|
delfunction SecondChainFunction
|
||
|
delfunction ThirdChainFunction
|
||
|
delfunction ProcessIndex
|
||
|
unlet! g:linter
|
||
|
unlet! g:result
|
||
|
|
||
|
Execute(Engine invocation should return the command for the first item correctly):
|
||
|
let g:result = ProcessIndex(0)
|
||
|
|
||
|
AssertEqual 'first', g:result.command
|
||
|
AssertEqual 1, g:result.next_chain_index
|
||
|
|
||
|
Execute(Engine invocation should return the command for the second item correctly):
|
||
|
let g:result = ProcessIndex(1)
|
||
|
|
||
|
AssertEqual 'third', g:result.command
|
||
|
AssertEqual 3, g:result.next_chain_index
|
||
|
|
||
|
Execute(Engine invocation should return the command for the fourth item correctly):
|
||
|
let g:result = ProcessIndex(3)
|
||
|
|
||
|
AssertEqual 'fourth', g:result.command
|
||
|
AssertEqual 4, g:result.next_chain_index
|
||
|
|
||
|
Execute(Engine invocation should return the command for a single callback correctly):
|
||
|
unlet g:linter.command_chain
|
||
|
let g:linter.command_callback = 'FirstChainFunction'
|
||
|
|
||
|
let g:result = ProcessIndex(0)
|
||
|
|
||
|
AssertEqual 'first', g:result.command
|
||
|
|
||
|
Execute(Engine invocation should return the command for a command string correctly):
|
||
|
unlet g:linter.command_chain
|
||
|
let g:linter.command = 'foo bar'
|
||
|
|
||
|
let g:result = ProcessIndex(0)
|
||
|
|
||
|
AssertEqual 'foo bar', g:result.command
|
||
|
|
||
|
Execute(Engine invocation should process read_buffer correctly for simple commands):
|
||
|
unlet g:linter.command_chain
|
||
|
let g:linter.command = 'foo bar'
|
||
|
let g:linter.read_buffer = 0
|
||
|
|
||
|
let g:result = ProcessIndex(0)
|
||
|
|
||
|
AssertEqual 'foo bar', g:result.command
|
||
|
AssertEqual 0, g:result.read_buffer
|
||
|
|
||
|
let g:linter.command_callback = 'FirstChainFunction'
|
||
|
unlet g:linter.command
|
||
|
|
||
|
let g:result = ProcessIndex(0)
|
||
|
|
||
|
AssertEqual 'first', g:result.command
|
||
|
AssertEqual 0, g:result.read_buffer
|
||
|
|
||
|
Execute(Engine invocation should allow read_buffer to be enabled for a command in the middle of a chain):
|
||
|
let g:linter.command_chain[2].read_buffer = 1
|
||
|
|
||
|
let g:result = ProcessIndex(2)
|
||
|
|
||
|
AssertEqual g:result.command, 'third'
|
||
|
AssertEqual g:result.read_buffer, 1
|
||
|
|
||
|
Execute(Engine invocation should allow read_buffer to be disabled for the end of a chain):
|
||
|
let g:linter.command_chain[3].read_buffer = 0
|
||
|
|
||
|
let g:result = ProcessIndex(3)
|
||
|
|
||
|
AssertEqual g:result.command, 'fourth'
|
||
|
AssertEqual g:result.read_buffer, 0
|
||
|
|
||
|
Execute(Engine invocation should not use read_buffer from earlier items in a chain):
|
||
|
let g:linter.command_chain[1].read_buffer = 1
|
||
|
|
||
|
let g:result = ProcessIndex(1)
|
||
|
|
||
|
AssertEqual g:result.command, 'third'
|
||
|
AssertEqual g:result.read_buffer, 0
|
||
|
|
||
|
Execute(Engine invocation should allow the output_stream setting to be changed in the middle of a chain):
|
||
|
let g:linter.command_chain[2].output_stream = 'both'
|
||
|
|
||
|
let g:result = ProcessIndex(2)
|
||
|
|
||
|
AssertEqual g:result.command, 'third'
|
||
|
AssertEqual g:result.output_stream, 'both'
|
||
|
|
||
|
Execute(Engine invocation should not use output_stream from earlier items in a chain):
|
||
|
let g:linter.command_chain[1].output_stream = 'both'
|
||
|
|
||
|
let g:result = ProcessIndex(1)
|
||
|
|
||
|
AssertEqual g:result.command, 'third'
|
||
|
AssertEqual g:result.output_stream, 'stdout'
|