diff options
author | Alexander "Ace" Olofsson <ace@haxalot.com> | 2017-06-28 16:27:02 +0200 |
---|---|---|
committer | w0rp <w0rp@users.noreply.github.com> | 2017-06-28 15:27:02 +0100 |
commit | f883d4d4fd20a928f2d224f342d5751ff3fd1a18 (patch) | |
tree | e6d11c9e9cd5622f2f9307d402f58d42a40a52b0 | |
parent | f984c5fb83024cb78bff8900ced30b733660d636 (diff) | |
download | ale-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.vim | 5 | ||||
-rw-r--r-- | autoload/ale/fixers/puppetlint.vim | 21 | ||||
-rw-r--r-- | test/command_callback/puppet_paths/dummy.pp | 0 | ||||
-rw-r--r-- | test/fixers/test_puppetlint_fixer_callback.vader | 31 |
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('')) |