summaryrefslogtreecommitdiff
path: root/test/command_callback/test_thrift_command_callback.vader
diff options
context:
space:
mode:
authorJon Parise <jon@indelible.org>2017-08-30 10:59:40 -0700
committerJon Parise <jon@indelible.org>2017-08-30 11:08:06 -0700
commitf4c5d29c64ccb1aa02a0d77ca84e52b0ef84eca0 (patch)
tree9fd69f2c9933766853c8481416efc3fa0cc22653 /test/command_callback/test_thrift_command_callback.vader
parentc7536fb4fdf76747dc3920cb21f39fd702477c90 (diff)
downloadale-f4c5d29c64ccb1aa02a0d77ca84e52b0ef84eca0.zip
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.
Diffstat (limited to 'test/command_callback/test_thrift_command_callback.vader')
-rw-r--r--test/command_callback/test_thrift_command_callback.vader61
1 files changed, 61 insertions, 0 deletions
diff --git a/test/command_callback/test_thrift_command_callback.vader b/test/command_callback/test_thrift_command_callback.vader
new file mode 100644
index 00000000..43487f42
--- /dev/null
+++ b/test/command_callback/test_thrift_command_callback.vader
@@ -0,0 +1,61 @@
+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'