summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander "Ace" Olofsson <ace@haxalot.com>2017-06-28 16:27:02 +0200
committerw0rp <w0rp@users.noreply.github.com>2017-06-28 15:27:02 +0100
commitf883d4d4fd20a928f2d224f342d5751ff3fd1a18 (patch)
treee6d11c9e9cd5622f2f9307d402f58d42a40a52b0
parentf984c5fb83024cb78bff8900ced30b733660d636 (diff)
downloadale-f883d4d4fd20a928f2d224f342d5751ff3fd1a18.zip
Add puppet-lint fixer (#701)
* Add puppet-lint fixer * Add vader test for puppetlint fixer * Ensure puppetlint variables are initialized
-rw-r--r--autoload/ale/fix/registry.vim5
-rw-r--r--autoload/ale/fixers/puppetlint.vim21
-rw-r--r--test/command_callback/puppet_paths/dummy.pp0
-rw-r--r--test/fixers/test_puppetlint_fixer_callback.vader31
4 files changed, 57 insertions, 0 deletions
diff --git a/autoload/ale/fix/registry.vim b/autoload/ale/fix/registry.vim
index 020946fb..7219410d 100644
--- a/autoload/ale/fix/registry.vim
+++ b/autoload/ale/fix/registry.vim
@@ -32,6 +32,11 @@ let s:default_registry = {
\ 'suggested_filetypes': ['javascript'],
\ 'description': 'Apply prettier-eslint to a file.',
\ },
+\ 'puppetlint': {
+\ 'function': 'ale#fixers#puppetlint#Fix',
+\ 'suggested_filetypes': ['puppet'],
+\ 'description': 'Run puppet-lint -f on a file.',
+\ },
\ 'remove_trailing_lines': {
\ 'function': 'ale#fixers#generic#RemoveTrailingBlankLines',
\ 'suggested_filetypes': [],
diff --git a/autoload/ale/fixers/puppetlint.vim b/autoload/ale/fixers/puppetlint.vim
new file mode 100644
index 00000000..81f34e89
--- /dev/null
+++ b/autoload/ale/fixers/puppetlint.vim
@@ -0,0 +1,21 @@
+" Author: Alexander Olofsson <alexander.olofsson@liu.se>
+" Description: puppet-lint fixer
+
+if !exists('g:ale_puppet_puppetlint_executable')
+ let g:ale_puppet_puppetlint_executable = 'puppet-lint'
+endif
+if !exists('g:ale_puppet_puppetlint_options')
+ let g:ale_puppet_puppetlint_options = ''
+endif
+
+function! ale#fixers#puppetlint#Fix(buffer) abort
+ let l:executable = ale#Var(a:buffer, 'puppet_puppetlint_executable')
+
+ return {
+ \ 'command': ale#Escape(l:executable)
+ \ . ' ' . ale#Var(a:buffer, 'puppet_puppetlint_options')
+ \ . ' --fix'
+ \ . ' %t',
+ \ 'read_temporary_file': 1,
+ \}
+endfunction
diff --git a/test/command_callback/puppet_paths/dummy.pp b/test/command_callback/puppet_paths/dummy.pp
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/command_callback/puppet_paths/dummy.pp
diff --git a/test/fixers/test_puppetlint_fixer_callback.vader b/test/fixers/test_puppetlint_fixer_callback.vader
new file mode 100644
index 00000000..398f61dc
--- /dev/null
+++ b/test/fixers/test_puppetlint_fixer_callback.vader
@@ -0,0 +1,31 @@
+Before:
+ Save g:ale_puppet_puppetlint_executable
+ Save g:ale_puppet_puppetlint_options
+
+ " Use an invalid global executable, so we don't match it.
+ let g:ale_puppet_puppetlint_executable = 'xxxinvalid'
+ let g:ale_puppet_puppetlint_options = '--invalid'
+
+ silent! execute 'cd /testplugin/test/command_callback'
+ silent cd ..
+ silent cd command_callback
+ let g:dir = getcwd()
+
+After:
+ Restore
+
+ silent execute 'cd ' . fnameescape(g:dir)
+ " Set the file to something else,
+ " or we'll cause issues when running other tests
+ silent file 'dummy.pp'
+ unlet! g:dir
+
+Execute(The puppetlint callback should return the correct default values):
+ silent execute 'file ' . fnameescape(g:dir . '/puppet_paths/dummy.pp')
+
+ AssertEqual
+ \ {'read_temporary_file': 1,
+ \ 'command': "'" . g:ale_puppet_puppetlint_executable . "'"
+ \ . ' ' . g:ale_puppet_puppetlint_options
+ \ . ' --fix %t' },
+ \ ale#fixers#puppetlint#Fix(bufnr(''))