ale/test/command_callback/test_thrift_command_callback.vader
Jon Parise f4c5d29c64 Add a linter for Apache Thrift IDL files
This linter works by invoking the `thrift` compiler with the buffer
contents and reporting any parser and code generation issues.

The handler rolls its own output-matching loop because we have the
(unfortunate) requirement of handling error output that spans multiple
lines.

Unit tests cover both the command callback and handler, and there is
initial documentation for all of the option variables.
2017-08-30 11:08:06 -07:00

62 lines
2.0 KiB
Plaintext

Before:
Save g:ale_thrift_thrift_executable
Save g:ale_thrift_thrift_generators
Save g:ale_thrift_thrift_includes
Save g:ale_thrift_thrift_options
unlet! b:ale_thrift_thrift_executable
unlet! b:ale_thrift_thrift_generators
unlet! b:ale_thrift_thrift_includes
unlet! b:ale_thrift_thrift_options
function! GetCommand(buffer) abort
call ale#engine#InitBufferInfo(a:buffer)
let l:result = ale_linters#thrift#thrift#GetCommand(a:buffer)
call ale#engine#Cleanup(a:buffer)
return l:result
endfunction
runtime ale_linters/thrift/thrift.vim
After:
Restore
delfunction GetCommand
unlet! b:ale_thrift_thrift_executable
unlet! b:ale_thrift_thrift_generators
unlet! b:ale_thrift_thrift_includes
unlet! b:ale_thrift_thrift_options
call ale#linter#Reset()
Execute(The executable should be configurable):
AssertEqual 'thrift', ale_linters#thrift#thrift#GetExecutable(bufnr(''))
let b:ale_thrift_thrift_executable = 'foobar'
AssertEqual 'foobar', ale_linters#thrift#thrift#GetExecutable(bufnr(''))
Execute(The executable should be used in the command):
Assert GetCommand(bufnr('%')) =~# "^'thrift'"
let b:ale_thrift_thrift_executable = 'foobar'
Assert GetCommand(bufnr('%')) =~# "^'foobar'"
Execute(The list of generators should be configurable):
Assert GetCommand(bufnr('%')) =~# '--gen cpp'
let b:ale_thrift_thrift_generators = ['java', 'py:dynamic']
Assert GetCommand(bufnr('%')) =~# '--gen java --gen py:dynamic'
let b:ale_thrift_thrift_generators = []
Assert GetCommand(bufnr('%')) =~# '--gen cpp'
Execute(The list of include paths should be configurable):
Assert GetCommand(bufnr('%')) !~# '-I'
let b:ale_thrift_thrift_includes = ['included/path']
Assert GetCommand(bufnr('%')) =~# '-I included/path'
Execute(The string of compiler options should be configurable):
Assert GetCommand(bufnr('%')) =~# '-strict'
let b:ale_thrift_thrift_options = '-strict --allow-64bit-consts'
Assert GetCommand(bufnr('%')) =~# '-strict --allow-64bit-consts'