summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorfiatjaf <fiatjaf@alhur.es>2021-03-26 03:38:57 -0300
committerGitHub <noreply@github.com>2021-03-26 15:38:57 +0900
commit655f0070cd2ce575f81092d1faac739fd116b515 (patch)
treea4356862b0137006eaed26706bacdd3026fcea22 /test
parentb1f95dc4fb15efb1d5238845c99548f2906e2ba3 (diff)
downloadale-655f0070cd2ce575f81092d1faac739fd116b515.zip
Add support for V: "v" (compiler) and "vfmt" fixer. (#3622)
* v: add "v fmt" fixer. * v: add "v" (build) linter. * v: fix vlint complaints and add documentation. * v: add tests. * v: use ale#Pad().
Diffstat (limited to 'test')
-rw-r--r--test/fixers/test_vfmt_fixer_callback.vader44
-rw-r--r--test/handler/test_v_handler.vader54
-rw-r--r--test/linter/test_v_command_callback.vader25
-rw-r--r--test/v_files/testfile.v0
4 files changed, 123 insertions, 0 deletions
diff --git a/test/fixers/test_vfmt_fixer_callback.vader b/test/fixers/test_vfmt_fixer_callback.vader
new file mode 100644
index 00000000..cbab1189
--- /dev/null
+++ b/test/fixers/test_vfmt_fixer_callback.vader
@@ -0,0 +1,44 @@
+Before:
+ Save g:ale_v_v_executable
+ Save g:ale_v_vfmt_options
+
+ " Use an invalid global executable, so we don't match it.
+ let g:ale_v_v_executable = 'xxxinvalid'
+ let g:ale_v_vfmt_options = ''
+
+ call ale#test#SetDirectory('/testplugin/test/fixers')
+
+After:
+ Restore
+
+ call ale#test#RestoreDirectory()
+
+Execute(The vfmt callback should return the correct default values):
+ call ale#test#SetFilename('../v_files/testfile.v')
+
+ AssertEqual
+ \ {
+ \ 'command': ale#Escape('xxxinvalid') . ' fmt',
+ \ },
+ \ ale#fixers#vfmt#Fix(bufnr(''))
+
+Execute(The vfmt callback should include custom vfmt options):
+ let g:ale_v_vfmt_options = "-r '(a) -> a'"
+
+ call ale#test#SetFilename('../v_files/testfile.v')
+
+ AssertEqual
+ \ {
+ \ 'command': ale#Escape('xxxinvalid')
+ \ . ' fmt ' . g:ale_v_vfmt_options,
+ \ },
+ \ ale#fixers#vfmt#Fix(bufnr(''))
+
+Execute(The vfmt callback should support Go environment variables):
+ call ale#test#SetFilename('../v_files/testfile.v')
+
+ AssertEqual
+ \ {
+ \ 'command': ale#Escape('xxxinvalid') . ' fmt',
+ \ },
+ \ ale#fixers#vfmt#Fix(bufnr(''))
diff --git a/test/handler/test_v_handler.vader b/test/handler/test_v_handler.vader
new file mode 100644
index 00000000..4d6e3d9b
--- /dev/null
+++ b/test/handler/test_v_handler.vader
@@ -0,0 +1,54 @@
+Before:
+ runtime ale_linters/v/v.vim
+
+After:
+ call ale#linter#Reset()
+
+Execute (The v handler should correctly parse error messages):
+ AssertEqual
+ \ [{
+ \ 'lnum': 4,
+ \ 'col': 3,
+ \ 'filename': ale#path#GetAbsPath(expand('%:p:h'), 'const ants.v'),
+ \ 'type': 'W',
+ \ 'end_col': 14,
+ \ 'text': 'const names cannot contain uppercase letters, use snake_case instead'
+ \ },
+ \ {
+ \ 'lnum': 4,
+ \ 'col': 8,
+ \ 'filename': ale#path#GetAbsPath(expand('%:p:h'), 'main.v'),
+ \ 'type': 'W',
+ \ 'end_col': 10,
+ \ 'text': 'module "os" is imported but never used'
+ \ },
+ \ {
+ \ 'lnum': 20,
+ \ 'col': 10,
+ \ 'filename': ale#path#GetAbsPath(expand('%:p:h'), 'main.v'),
+ \ 'type': 'E',
+ \ 'end_col': 18,
+ \ 'text': 'undefined ident: `win_widt`'
+ \ }],
+ \ ale_linters#v#v#Handler('', [
+ \ './const ants.v:4:3: warning: const names cannot contain uppercase letters, use snake_case instead',
+ \ ' 2 |',
+ \ ' 3 | const (',
+ \ ' 4 | BUTTON_TEXT = "OK"',
+ \ ' | ~~~~~~~~~~~',
+ \ ' 5 | )',
+ \ './main.v:4:8: warning: module "os" is imported but never used',
+ \ ' 2 |',
+ \ ' 3 | import ui',
+ \ ' 4 | import os',
+ \ ' | ~~',
+ \ ' 5 |',
+ \ ' 6 | const (',
+ \ './main.v:20:10: error: undefined ident: `win_widt`',
+ \ ' 18 | mut app := &App{}',
+ \ ' 19 | app.window = ui.window({',
+ \ ' 20 | width: win_widt',
+ \ ' | ~~~~~~~~',
+ \ ' 21 | height: win_height',
+ \ ' 22 | title: "Counter"',
+ \ ])
diff --git a/test/linter/test_v_command_callback.vader b/test/linter/test_v_command_callback.vader
new file mode 100644
index 00000000..17f24ad7
--- /dev/null
+++ b/test/linter/test_v_command_callback.vader
@@ -0,0 +1,25 @@
+Before:
+ Save g:ale_v_v_executable
+
+ call ale#assert#SetUpLinterTest('v', 'v')
+
+ GivenCommandOutput ['/foo/bar', '/foo/baz']
+
+After:
+ Restore
+ call ale#assert#TearDownLinterTest()
+
+Execute(The default command should be correct):
+ AssertLinter 'v', 'v . -o /tmp/vim-ale-v'
+
+Execute(Extra options should be supported):
+ let g:ale_v_v_options = '--foo-bar'
+
+ AssertLinter 'v', 'v --foo-bar . -o /tmp/vim-ale-v'
+
+ let g:ale_v_vbuild_options = ''
+
+Execute(The executable should be configurable):
+ let g:ale_v_v_executable = 'foobar'
+
+ AssertLinter 'foobar', 'foobar . -o /tmp/vim-ale-v'
diff --git a/test/v_files/testfile.v b/test/v_files/testfile.v
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/v_files/testfile.v