From 42cbff29f8613729cfd9c26db9ed55a0bf484f2c Mon Sep 17 00:00:00 2001 From: w0rp Date: Mon, 13 May 2019 13:44:29 +0100 Subject: [PATCH] Fix #2497 - ALE should not lint on save when disabled after fixing --- autoload/ale/fix.vim | 1 + test/fix/test_ale_fix.vader | 48 ++++++++++++++++++++++++ test/test_no_linting_on_write_quit.vader | 4 +- 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/autoload/ale/fix.vim b/autoload/ale/fix.vim index 92ae3e14..49e650c7 100644 --- a/autoload/ale/fix.vim +++ b/autoload/ale/fix.vim @@ -42,6 +42,7 @@ function! ale#fix#ApplyQueuedFixes() abort if l:data.should_save let l:should_lint = g:ale_fix_on_save + \ && ale#Var(l:buffer, 'lint_on_save') else let l:should_lint = l:data.changes_made endif diff --git a/test/fix/test_ale_fix.vader b/test/fix/test_ale_fix.vader index 9e5ad027..05cc4457 100644 --- a/test/fix/test_ale_fix.vader +++ b/test/fix/test_ale_fix.vader @@ -8,6 +8,7 @@ Before: silent! cd /testplugin/test/fix + unlet! b:ale_lint_on_save let g:ale_enabled = 0 let g:ale_echo_cursor = 0 let g:ale_run_synchronously = 1 @@ -191,6 +192,7 @@ After: unlet! g:ale_run_synchronously_callbacks unlet! g:ale_emulate_job_failure unlet! b:ale_fixers + unlet! b:ale_lint_on_save unlet! b:ale_fix_on_save unlet! b:ale_quitting delfunction AddCarets @@ -631,6 +633,52 @@ Expect(The buffer should be the same): b c +Execute(ALEFix should not lint the buffer on save if linting on save is disabled globally): + let g:ale_fix_on_save = 1 + let g:ale_lint_on_save = 0 + let g:ale_enabled = 1 + + let g:test_filename = tempname() + execute 'noautocmd silent file ' . fnameescape(g:test_filename) + + let g:ale_fixers.testft = ['DoNothing'] + + call SetUpLinters() + call ale#events#SaveEvent(bufnr('')) + call ale#test#FlushJobs() + + Assert !filereadable(g:test_filename), 'The file should not have been saved' + + AssertEqual [], ale#test#GetLoclistWithoutModule() + +Expect(The buffer should be the same): + a + b + c + +Execute(ALEFix should not lint the buffer on save if linting on save is disabled locally): + let g:ale_fix_on_save = 1 + let b:ale_lint_on_save = 0 + let g:ale_enabled = 1 + + let g:test_filename = tempname() + execute 'noautocmd silent file ' . fnameescape(g:test_filename) + + let g:ale_fixers.testft = ['DoNothing'] + + call SetUpLinters() + call ale#events#SaveEvent(bufnr('')) + call ale#test#FlushJobs() + + Assert !filereadable(g:test_filename), 'The file should not have been saved' + + AssertEqual [], ale#test#GetLoclistWithoutModule() + +Expect(The buffer should be the same): + a + b + c + Given testft (A file with three lines): a b diff --git a/test/test_no_linting_on_write_quit.vader b/test/test_no_linting_on_write_quit.vader index bbd80d8f..3e49b506 100644 --- a/test/test_no_linting_on_write_quit.vader +++ b/test/test_no_linting_on_write_quit.vader @@ -86,7 +86,7 @@ Execute(No linting should be for :w after :q fails): AssertEqual 1, len(ale#test#GetLoclistWithoutModule()) Execute(No linting should be done on :wq or :x after fixing files): - let g:ale_lint_on_save = 0 + let g:ale_lint_on_save = 1 let g:ale_fix_on_save = 1 call ale#events#SaveEvent(bufnr('')) @@ -103,7 +103,7 @@ Execute(No linting should be done on :wq or :x after fixing files): AssertEqual [], ale#test#GetLoclistWithoutModule() Execute(Linting should be done after :q fails and fixing files): - let g:ale_lint_on_save = 0 + let g:ale_lint_on_save = 1 let g:ale_fix_on_save = 1 call ale#events#QuitEvent(bufnr(''))