Add a buildifier fixer for Bazel files (#3499)

This fixer enables buildifier's formatting and "lint fix" modes.
Additional options can be provided via `bazel_buildifier_options`.

It also implements some basic logic for guessing the file's type.
buildifier itself usually does this based on the filenames provided on
the command line, but because we're piping our buffer via stdin, we need
to do this manually.
This commit is contained in:
Jon Parise authored and GitHub committed 2021-02-21 21:35:26 +09:00
1 parent 2550f5d952
commit 90b9597d50
10 files changed
+119

No files matched your search

Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
@@ -0,0 +1,43 @@
Before:
let g:ale_bazel_buildifier_options = ''
call ale#assert#SetUpFixerTest('bzl', 'buildifier')
After:
call ale#assert#TearDownFixerTest()
Execute(The buildifier callback should return the correct default values):
call ale#test#SetFilename('bazel_paths/WORKSPACE')
AssertFixer
\ {
\ 'command': ale#Escape(g:ale_bazel_buildifier_executable)
\ . ' -mode fix -lint fix -type workspace -'
\ }
Execute(The buildifier callback should include any additional options):
call ale#test#SetFilename('bazel_paths/WORKSPACE')
let g:ale_bazel_buildifier_options = '--some-option'
AssertFixer
\ {
\ 'command': ale#Escape(g:ale_bazel_buildifier_executable)
\ . ' -mode fix -lint fix -type workspace --some-option -',
\ }
Execute(The buildifier callback should recognize BUILD files):
call ale#test#SetFilename('bazel_paths/BUILD')
AssertFixer
\ {
\ 'command': ale#Escape(g:ale_bazel_buildifier_executable)
\ . ' -mode fix -lint fix -type build -'
\ }
Execute(The buildifier callback should recognize .bzl files):
call ale#test#SetFilename('bazel_paths/defs.bzl')
AssertFixer
\ {
\ 'command': ale#Escape(g:ale_bazel_buildifier_executable)
\ . ' -mode fix -lint fix -type bzl -'
\ }