summaryrefslogtreecommitdiff
path: root/test/fixers
diff options
context:
space:
mode:
Diffstat (limited to 'test/fixers')
-rw-r--r--test/fixers/test_black_fixer_callback.vader39
-rw-r--r--test/fixers/test_brittany_fixer_callback.vader1
-rw-r--r--test/fixers/test_elm_format_fixer_callback.vader10
-rw-r--r--test/fixers/test_mix_format_fixer_callback.vader18
-rw-r--r--test/fixers/test_perltidy_fixer_callback.vader40
-rw-r--r--test/fixers/test_php_cs_fixer.vader65
-rw-r--r--test/fixers/test_prettier_fixer_callback.vader140
-rw-r--r--test/fixers/test_qmlfmt_fixer_callback.vader12
-rw-r--r--test/fixers/test_rufo_fixer_callback.vader33
-rw-r--r--test/fixers/test_scalafmt_fixer_callback.vader69
-rw-r--r--test/fixers/test_tidy_fixer_callback.vader29
11 files changed, 450 insertions, 6 deletions
diff --git a/test/fixers/test_black_fixer_callback.vader b/test/fixers/test_black_fixer_callback.vader
new file mode 100644
index 00000000..365b0fa6
--- /dev/null
+++ b/test/fixers/test_black_fixer_callback.vader
@@ -0,0 +1,39 @@
+Before:
+ Save g:ale_python_black_executable
+ Save g:ale_python_black_options
+
+ " Use an invalid global executable, so we don't match it.
+ let g:ale_python_black_executable = 'xxxinvalid'
+ let g:ale_python_black_options = ''
+
+ call ale#test#SetDirectory('/testplugin/test/fixers')
+ silent cd ..
+ silent cd command_callback
+ let g:dir = getcwd()
+
+ let b:bin_dir = has('win32') ? 'Scripts' : 'bin'
+
+After:
+ Restore
+
+ unlet! b:bin_dir
+
+ call ale#test#RestoreDirectory()
+
+Execute(The black callback should return the correct default values):
+ AssertEqual
+ \ 0,
+ \ ale#fixers#black#Fix(bufnr(''))
+
+ silent execute 'file ' . fnameescape(g:dir . '/python_paths/with_virtualenv/subdir/foo/bar.py')
+ AssertEqual
+ \ {'command': ale#Escape(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/env/' . b:bin_dir . '/black')) . ' -'},
+ \ ale#fixers#black#Fix(bufnr(''))
+
+Execute(The black callback should include options):
+ let g:ale_python_black_options = '--some-option'
+
+ silent execute 'file ' . fnameescape(g:dir . '/python_paths/with_virtualenv/subdir/foo/bar.py')
+ AssertEqual
+ \ {'command': ale#Escape(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/env/' . b:bin_dir . '/black')) . ' --some-option -' },
+ \ ale#fixers#black#Fix(bufnr(''))
diff --git a/test/fixers/test_brittany_fixer_callback.vader b/test/fixers/test_brittany_fixer_callback.vader
index a0182b52..073e368c 100644
--- a/test/fixers/test_brittany_fixer_callback.vader
+++ b/test/fixers/test_brittany_fixer_callback.vader
@@ -18,6 +18,7 @@ Execute(The brittany callback should return the correct default values):
\ {
\ 'read_temporary_file': 1,
\ 'command': ale#Escape('xxxinvalid')
+ \ . ' --write-mode inplace'
\ . ' %t',
\ },
\ ale#fixers#brittany#Fix(bufnr(''))
diff --git a/test/fixers/test_elm_format_fixer_callback.vader b/test/fixers/test_elm_format_fixer_callback.vader
index d613aa84..682c22ca 100644
--- a/test/fixers/test_elm_format_fixer_callback.vader
+++ b/test/fixers/test_elm_format_fixer_callback.vader
@@ -18,7 +18,7 @@ Execute(The elm-format command should have default params):
\ ale#Escape(ale#path#Simplify(g:dir . '/../elm-test-files/node_modules/.bin/elm-format'))
\ . ' %t --yes',
\ },
- \ ale#fixers#format#Fix(bufnr(''))
+ \ ale#fixers#elm_format#Fix(bufnr(''))
Execute(The elm-format command should manage use_global = 1 param):
call ale#test#SetFilename('../elm-test-files/src/subdir/testfile.elm')
@@ -31,7 +31,7 @@ Execute(The elm-format command should manage use_global = 1 param):
\ ale#Escape('elm-format')
\ . ' %t --yes',
\ },
- \ ale#fixers#format#Fix(bufnr(''))
+ \ ale#fixers#elm_format#Fix(bufnr(''))
Execute(The elm-format command should manage executable param):
call ale#test#SetFilename('../elm-test-files/src/subdir/testfile.elm')
@@ -45,7 +45,7 @@ Execute(The elm-format command should manage executable param):
\ ale#Escape('elmformat')
\ . ' %t --yes',
\ },
- \ ale#fixers#format#Fix(bufnr(''))
+ \ ale#fixers#elm_format#Fix(bufnr(''))
Execute(The elm-format command should manage empty options):
call ale#test#SetFilename('../elm-test-files/src/subdir/testfile.elm')
@@ -58,7 +58,7 @@ Execute(The elm-format command should manage empty options):
\ ale#Escape(ale#path#Simplify(g:dir . '/../elm-test-files/node_modules/.bin/elm-format'))
\ . ' %t',
\ },
- \ ale#fixers#format#Fix(bufnr(''))
+ \ ale#fixers#elm_format#Fix(bufnr(''))
Execute(The elm-format command should manage custom options):
call ale#test#SetFilename('../elm-test-files/src/subdir/testfile.elm')
@@ -71,4 +71,4 @@ Execute(The elm-format command should manage custom options):
\ ale#Escape(ale#path#Simplify(g:dir . '/../elm-test-files/node_modules/.bin/elm-format'))
\ . ' %t --param1 --param2',
\ },
- \ ale#fixers#format#Fix(bufnr(''))
+ \ ale#fixers#elm_format#Fix(bufnr(''))
diff --git a/test/fixers/test_mix_format_fixer_callback.vader b/test/fixers/test_mix_format_fixer_callback.vader
index c6c97c57..365fbecf 100644
--- a/test/fixers/test_mix_format_fixer_callback.vader
+++ b/test/fixers/test_mix_format_fixer_callback.vader
@@ -1,10 +1,15 @@
Before:
- call ale#test#SetDirectory('/testplugin/test/fixers')
Save g:ale_elixir_mix_executable
+ Save g:ale_elixir_mix_format_options
let g:ale_elixir_mix_executable = 'xxxinvalid'
+ let g:ale_elixir_mix_format_options = ''
+
+ call ale#test#SetDirectory('/testplugin/test/fixers')
After:
+ Restore
+
call ale#test#RestoreDirectory()
Execute(The mix_format callback should return the correct default values):
@@ -18,3 +23,14 @@ Execute(The mix_format callback should return the correct default values):
\ },
\ ale#fixers#mix_format#Fix(bufnr(''))
+Execute(The mix_format callback should include the correct format options):
+ let g:ale_elixir_mix_format_options = 'invalid_options'
+ call ale#test#SetFilename('../elixir-test-files/testfile.ex')
+
+ AssertEqual
+ \ {
+ \ 'read_temporary_file': 1,
+ \ 'command': ale#Escape('xxxinvalid')
+ \ . ' format invalid_options %t',
+ \ },
+ \ ale#fixers#mix_format#Fix(bufnr(''))
diff --git a/test/fixers/test_perltidy_fixer_callback.vader b/test/fixers/test_perltidy_fixer_callback.vader
new file mode 100644
index 00000000..c7430bfa
--- /dev/null
+++ b/test/fixers/test_perltidy_fixer_callback.vader
@@ -0,0 +1,40 @@
+Before:
+ Save g:ale_perl_perltidy_executable
+ Save g:ale_perl_perltidy_options
+
+ " Use an invalid global executable, so we don't match it.
+ let g:ale_perl_perltidy_executable = 'xxxinvalid'
+ let g:ale_perl_perltidy_options = ''
+
+ call ale#test#SetDirectory('/testplugin/test/fixers')
+
+After:
+ Restore
+
+ call ale#test#RestoreDirectory()
+
+Execute(The perltidy callback should return the correct default values):
+ call ale#test#SetFilename('../pl_files/testfile.pl')
+
+ AssertEqual
+ \ {
+ \ 'read_temporary_file': 1,
+ \ 'command': ale#Escape('xxxinvalid')
+ \ . ' -b'
+ \ . ' %t',
+ \ },
+ \ ale#fixers#perltidy#Fix(bufnr(''))
+
+Execute(The perltidy callback should include custom perltidy options):
+ let g:ale_perl_perltidy_options = "-r '(a) -> a'"
+ call ale#test#SetFilename('../pl_files/testfile.pl')
+
+ AssertEqual
+ \ {
+ \ 'read_temporary_file': 1,
+ \ 'command': ale#Escape('xxxinvalid')
+ \ . ' -b'
+ \ . ' ' . g:ale_perl_perltidy_options
+ \ . ' %t',
+ \ },
+ \ ale#fixers#perltidy#Fix(bufnr(''))
diff --git a/test/fixers/test_php_cs_fixer.vader b/test/fixers/test_php_cs_fixer.vader
new file mode 100644
index 00000000..b47c190c
--- /dev/null
+++ b/test/fixers/test_php_cs_fixer.vader
@@ -0,0 +1,65 @@
+Before:
+ Save g:ale_php_cs_fixer_executable
+ Save g:ale_php_cs_fixer_options
+ let g:ale_php_cs_fixer_executable = 'php-cs-fixer'
+ let g:ale_php_cs_fixer_options = ''
+
+ call ale#test#SetDirectory('/testplugin/test/fixers')
+ silent cd ..
+ silent cd command_callback
+ let g:dir = getcwd()
+
+After:
+ Restore
+
+ call ale#test#RestoreDirectory()
+
+
+Execute(project with php-cs-fixer should use local by default):
+ call ale#test#SetFilename('php_paths/project-with-php-cs-fixer/test.php')
+
+ AssertEqual
+ \ ale#path#Simplify(g:dir . '/php_paths/project-with-php-cs-fixer/vendor/bin/php-cs-fixer'),
+ \ ale#fixers#php_cs_fixer#GetExecutable(bufnr(''))
+
+Execute(use-global should override local detection):
+ let g:ale_php_cs_fixer_use_global = 1
+ call ale#test#SetFilename('php_paths/project-with-php-cs-fixer/test.php')
+
+ AssertEqual
+ \ 'php-cs-fixer',
+ \ ale#fixers#php_cs_fixer#GetExecutable(bufnr(''))
+
+Execute(project without php-cs-fixer should use global):
+ call ale#test#SetFilename('php_paths/project-without-php-cs-fixer/test.php')
+
+ AssertEqual
+ \ 'php-cs-fixer',
+ \ ale#fixers#php_cs_fixer#GetExecutable(bufnr(''))
+
+
+
+
+Execute(The php-cs-fixer callback should return the correct default values):
+ call ale#test#SetFilename('php_paths/project-without-php-cs-fixer/foo/test.php')
+
+ AssertEqual
+ \ {
+ \ 'read_temporary_file': 1,
+ \ 'command': ale#Escape('php-cs-fixer')
+ \ . ' ' . g:ale_php_cs_fixer_options
+ \ . ' fix %t'
+ \ },
+ \ ale#fixers#php_cs_fixer#Fix(bufnr(''))
+
+Execute(The php-cs-fixer callback should include custom php-cs-fixer options):
+ let g:ale_php_cs_fixer_options = '--config="$HOME/.php_cs"'
+ call ale#test#SetFilename('php_paths/project-without-php-cs-fixer/test.php')
+
+ AssertEqual
+ \ {
+ \ 'command': ale#Escape(g:ale_php_cs_fixer_executable)
+ \ . ' --config="$HOME/.php_cs" fix %t',
+ \ 'read_temporary_file': 1,
+ \ },
+ \ ale#fixers#php_cs_fixer#Fix(bufnr(''))
diff --git a/test/fixers/test_prettier_fixer_callback.vader b/test/fixers/test_prettier_fixer_callback.vader
index c4f36f52..2018c3a6 100644
--- a/test/fixers/test_prettier_fixer_callback.vader
+++ b/test/fixers/test_prettier_fixer_callback.vader
@@ -95,3 +95,143 @@ Execute(The version number should be cached):
\ . ' --stdin-filepath %s --stdin',
\ },
\ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), [])
+
+Execute(Should set --parser based on filetype, TypeScript):
+ call ale#test#SetFilename('../prettier-test-files/testfile')
+
+ set filetype=typescript
+
+ AssertEqual
+ \ {
+ \ 'command': 'cd ' . ale#Escape(expand('%:p:h')) . ' && '
+ \ . ale#Escape(g:ale_javascript_prettier_executable)
+ \ . ' --parser typescript'
+ \ . ' --stdin-filepath %s --stdin',
+ \ },
+ \ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), ['1.6.0'])
+
+Execute(Should set --parser based on filetype, CSS):
+ call ale#test#SetFilename('../prettier-test-files/testfile')
+
+ set filetype=css
+
+ AssertEqual
+ \ {
+ \ 'command': 'cd ' . ale#Escape(expand('%:p:h')) . ' && '
+ \ . ale#Escape(g:ale_javascript_prettier_executable)
+ \ . ' --parser css'
+ \ . ' --stdin-filepath %s --stdin',
+ \ },
+ \ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), ['1.6.0'])
+
+Execute(Should set --parser based on filetype, LESS):
+ call ale#test#SetFilename('../prettier-test-files/testfile')
+
+ set filetype=less
+
+ AssertEqual
+ \ {
+ \ 'command': 'cd ' . ale#Escape(expand('%:p:h')) . ' && '
+ \ . ale#Escape(g:ale_javascript_prettier_executable)
+ \ . ' --parser less'
+ \ . ' --stdin-filepath %s --stdin',
+ \ },
+ \ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), ['1.6.0'])
+
+Execute(Should set --parser based on filetype, SCSS):
+ call ale#test#SetFilename('../prettier-test-files/testfile')
+
+ set filetype=scss
+
+ AssertEqual
+ \ {
+ \ 'command': 'cd ' . ale#Escape(expand('%:p:h')) . ' && '
+ \ . ale#Escape(g:ale_javascript_prettier_executable)
+ \ . ' --parser scss'
+ \ . ' --stdin-filepath %s --stdin',
+ \ },
+ \ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), ['1.6.0'])
+
+Execute(Should set --parser based on filetype, JSON):
+ call ale#test#SetFilename('../prettier-test-files/testfile')
+
+ set filetype=json
+
+ AssertEqual
+ \ {
+ \ 'command': 'cd ' . ale#Escape(expand('%:p:h')) . ' && '
+ \ . ale#Escape(g:ale_javascript_prettier_executable)
+ \ . ' --parser json'
+ \ . ' --stdin-filepath %s --stdin',
+ \ },
+ \ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), ['1.6.0'])
+
+Execute(Should set --parser based on filetype, JSON5):
+ call ale#test#SetFilename('../prettier-test-files/testfile')
+
+ set filetype=json5
+
+ AssertEqual
+ \ {
+ \ 'command': 'cd ' . ale#Escape(expand('%:p:h')) . ' && '
+ \ . ale#Escape(g:ale_javascript_prettier_executable)
+ \ . ' --parser json5'
+ \ . ' --stdin-filepath %s --stdin',
+ \ },
+ \ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), ['1.6.0'])
+
+Execute(Should set --parser based on filetype, GraphQL):
+ call ale#test#SetFilename('../prettier-test-files/testfile')
+
+ set filetype=graphql
+
+ AssertEqual
+ \ {
+ \ 'command': 'cd ' . ale#Escape(expand('%:p:h')) . ' && '
+ \ . ale#Escape(g:ale_javascript_prettier_executable)
+ \ . ' --parser graphql'
+ \ . ' --stdin-filepath %s --stdin',
+ \ },
+ \ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), ['1.6.0'])
+
+Execute(Should set --parser based on filetype, Markdown):
+ call ale#test#SetFilename('../prettier-test-files/testfile')
+
+ set filetype=markdown
+
+ AssertEqual
+ \ {
+ \ 'command': 'cd ' . ale#Escape(expand('%:p:h')) . ' && '
+ \ . ale#Escape(g:ale_javascript_prettier_executable)
+ \ . ' --parser markdown'
+ \ . ' --stdin-filepath %s --stdin',
+ \ },
+ \ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), ['1.6.0'])
+
+Execute(Should set --parser based on filetype, Vue):
+ call ale#test#SetFilename('../prettier-test-files/testfile')
+
+ set filetype=vue
+
+ AssertEqual
+ \ {
+ \ 'command': 'cd ' . ale#Escape(expand('%:p:h')) . ' && '
+ \ . ale#Escape(g:ale_javascript_prettier_executable)
+ \ . ' --parser vue'
+ \ . ' --stdin-filepath %s --stdin',
+ \ },
+ \ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), ['1.6.0'])
+
+Execute(Should set --parser based on first filetype of multiple filetypes):
+ call ale#test#SetFilename('../prettier-test-files/testfile')
+
+ set filetype=css.scss
+
+ AssertEqual
+ \ {
+ \ 'command': 'cd ' . ale#Escape(expand('%:p:h')) . ' && '
+ \ . ale#Escape(g:ale_javascript_prettier_executable)
+ \ . ' --parser css'
+ \ . ' --stdin-filepath %s --stdin',
+ \ },
+ \ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), ['1.6.0'])
diff --git a/test/fixers/test_qmlfmt_fixer_callback.vader b/test/fixers/test_qmlfmt_fixer_callback.vader
new file mode 100644
index 00000000..e216f2e1
--- /dev/null
+++ b/test/fixers/test_qmlfmt_fixer_callback.vader
@@ -0,0 +1,12 @@
+Before:
+ Save g:ale_qml_qmlfmt_executable
+
+After:
+ Restore
+
+Execute(The qmlfmt fixer should use the options you set):
+ let g:ale_qml_qmlfmt_executable = 'foo-exe'
+
+ AssertEqual
+ \ {'command': ale#Escape('foo-exe')},
+ \ ale#fixers#qmlfmt#Fix(bufnr(''))
diff --git a/test/fixers/test_rufo_fixer_callback.vader b/test/fixers/test_rufo_fixer_callback.vader
new file mode 100644
index 00000000..a0828406
--- /dev/null
+++ b/test/fixers/test_rufo_fixer_callback.vader
@@ -0,0 +1,33 @@
+Before:
+ Save g:ale_ruby_rufo_executable
+
+ " Use an invalid global executable, so we don't match it.
+ let g:ale_ruby_rufo_executable = 'xxxinvalid'
+
+ call ale#test#SetDirectory('/testplugin/test/fixers')
+ silent cd ..
+ silent cd command_callback
+ let g:dir = getcwd()
+
+After:
+ Restore
+
+ call ale#test#RestoreDirectory()
+
+Execute(The rufo command should contain `bundle exec` when executable is `bundle`):
+ let g:ale_ruby_rufo_executable = 'bundle'
+ call ale#test#SetFilename('ruby_paths/dummy.rb')
+
+ AssertEqual
+ \ ale#Escape('bundle') . ' exec rufo %t',
+ \ ale#fixers#rufo#GetCommand(bufnr(''))
+
+Execute(The rufo callback should return the correct default values):
+ call ale#test#SetFilename('ruby_paths/dummy.rb')
+
+ AssertEqual
+ \ {
+ \ 'read_temporary_file': 1,
+ \ 'command': ale#Escape('xxxinvalid') . ' %t'
+ \ },
+ \ ale#fixers#rufo#Fix(bufnr(''))
diff --git a/test/fixers/test_scalafmt_fixer_callback.vader b/test/fixers/test_scalafmt_fixer_callback.vader
new file mode 100644
index 00000000..d82fda43
--- /dev/null
+++ b/test/fixers/test_scalafmt_fixer_callback.vader
@@ -0,0 +1,69 @@
+Before:
+ Save g:ale_scala_scalafmt_executable
+ Save g:ale_scala_scalafmt_options
+
+ " Use an invalid global executable, so we don't match it.
+ let g:ale_scala_scalafmt_executable = 'xxxinvalid'
+ let g:ale_scala_scalafmt_options = ''
+
+ call ale#test#SetDirectory('/testplugin/test/fixers')
+ silent cd ..
+ silent cd command_callback
+ let g:dir = getcwd()
+
+After:
+ Restore
+
+ call ale#test#RestoreDirectory()
+
+Execute(The scalafmt callback should return the correct default values):
+ call ale#test#SetFilename('scala_paths/dummy.scala')
+
+ AssertEqual
+ \ {
+ \ 'read_temporary_file': 1,
+ \ 'command': ale#Escape(g:ale_scala_scalafmt_executable)
+ \ . ' %t',
+ \ },
+ \ ale#fixers#scalafmt#Fix(bufnr(''))
+
+Execute(The scalafmt callback should use ng with scalafmt automatically):
+ let g:ale_scala_scalafmt_executable = 'ng'
+ call ale#test#SetFilename('scala_paths/dummy.scala')
+
+ AssertEqual
+ \ {
+ \ 'read_temporary_file': 1,
+ \ 'command': ale#Escape('ng')
+ \ . ' scalafmt'
+ \ . ' %t',
+ \ },
+ \ ale#fixers#scalafmt#Fix(bufnr(''))
+
+Execute(The scalafmt callback should include custom scalafmt options):
+ let g:ale_scala_scalafmt_options = '--diff'
+ call ale#test#SetFilename('scala_paths/dummy.scala')
+
+ AssertEqual
+ \ {
+ \ 'read_temporary_file': 1,
+ \ 'command': ale#Escape(g:ale_scala_scalafmt_executable)
+ \ . ' --diff'
+ \ . ' %t',
+ \ },
+ \ ale#fixers#scalafmt#Fix(bufnr(''))
+
+Execute(The scalafmt callback should include custom scalafmt options and use ng with scalafmt):
+ let g:ale_scala_scalafmt_options = '--diff'
+ let g:ale_scala_scalafmt_executable = 'ng'
+ call ale#test#SetFilename('scala_paths/dummy.scala')
+
+ AssertEqual
+ \ {
+ \ 'read_temporary_file': 1,
+ \ 'command': ale#Escape('ng')
+ \ . ' scalafmt'
+ \ . ' --diff'
+ \ . ' %t',
+ \ },
+ \ ale#fixers#scalafmt#Fix(bufnr(''))
diff --git a/test/fixers/test_tidy_fixer_callback.vader b/test/fixers/test_tidy_fixer_callback.vader
new file mode 100644
index 00000000..5677d8fd
--- /dev/null
+++ b/test/fixers/test_tidy_fixer_callback.vader
@@ -0,0 +1,29 @@
+Before:
+ Save g:ale_html_tidy_executable
+
+ let g:ale_html_tidy_executable = 'tidy_paths/tidy'
+
+ call ale#test#SetDirectory('/testplugin/test/fixers')
+
+ silent cd ..
+ silent cd command_callback
+ let g:dir = getcwd()
+
+After:
+ Restore
+
+ call ale#test#RestoreDirectory()
+
+Execute(The tidy callback should return 0 if tidy not found):
+ let g:ale_html_tidy_executable = 'xxxinvalidpath'
+ AssertEqual
+ \ 0,
+ \ ale#fixers#tidy#Fix(bufnr(''))
+
+Execute(The tidy callback should return the correct default command):
+ AssertEqual
+ \ {
+ \ 'command': ale#Escape('tidy_paths/tidy')
+ \ . ' -q --tidy-mark no --show-errors 0 --show-warnings 0'
+ \ },
+ \ ale#fixers#tidy#Fix(bufnr(''))