From e319d489410df7705d72708ff9e44ae730721ac8 Mon Sep 17 00:00:00 2001 From: Noah <180408022+nlaburu@users.noreply.github.com> Date: Mon, 24 Feb 2025 03:36:56 +0100 Subject: [PATCH] Fixed the issue with Black ignoring config file to tell it which file is being processed. (#3406) (#4894) * Fixed the issue with Black ignoring files is being processed. (#3406) Add test for stdin-filename on test/fixers/test_ruff_format_fixer_callback.vader * Fixed the issue with Black ignoring files is being processed. (#3406) Fixed the problem on Windows's tests. * Fixed the issue with Black ignoring config file to tell it which file is being processed. Trailing whitespace removed --- autoload/ale/fixers/black.vim | 3 ++ test/fixers/test_black_fixer_callback.vader | 43 ++++++++++++++------- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/autoload/ale/fixers/black.vim b/autoload/ale/fixers/black.vim index 624e5459..6f263f13 100644 --- a/autoload/ale/fixers/black.vim +++ b/autoload/ale/fixers/black.vim @@ -42,6 +42,9 @@ function! ale#fixers#black#Fix(buffer) abort call add(l:cmd, l:options) endif + let l:fname = expand('#' . a:buffer . '...') + call add(l:cmd, '--stdin-filename '.ale#Escape(ale#path#Simplify(l:fname))) + if expand('#' . a:buffer . ':e') is? 'pyi' call add(l:cmd, '--pyi') endif diff --git a/test/fixers/test_black_fixer_callback.vader b/test/fixers/test_black_fixer_callback.vader index 079f5f8f..1a1f82fc 100644 --- a/test/fixers/test_black_fixer_callback.vader +++ b/test/fixers/test_black_fixer_callback.vader @@ -11,39 +11,49 @@ After: unlet! b:bin_dir Execute(The black callback should return the correct default values): - silent execute 'file ' . fnameescape(g:dir . '/../test-files/python/with_virtualenv/subdir/foo/bar.py') + let file_path = g:dir . '/../test-files/python/with_virtualenv/subdir/foo/bar.py' + silent execute 'file ' . fnameescape(file_path) + let fname = ale#Escape(ale#path#Simplify(file_path)) + AssertEqual \ { \ 'cwd': '%s:h', - \ 'command': ale#Escape(ale#path#Simplify(g:dir . '/../test-files/python/with_virtualenv/env/' . b:bin_dir . '/black')) . ' -'}, + \ 'command': ale#Escape(ale#path#Simplify(g:dir . '/../test-files/python/with_virtualenv/env/' . b:bin_dir . '/black')) . ' --stdin-filename ' . fname . ' -'}, \ ale#fixers#black#Fix(bufnr('')) Execute(The black callback should include options): let g:ale_python_black_options = '--some-option' let g:ale_python_black_change_directory = 0 - - silent execute 'file ' . fnameescape(g:dir . '/../test-files/python/with_virtualenv/subdir/foo/bar.py') + + let file_path = g:dir . '/../test-files/python/with_virtualenv/subdir/foo/bar.py' + silent execute 'file ' . fnameescape(file_path) + let fname = ale#Escape(ale#path#Simplify(file_path)) + AssertEqual - \ {'command': ale#Escape(ale#path#Simplify(g:dir . '/../test-files/python/with_virtualenv/env/' . b:bin_dir . '/black')) . ' --some-option -' }, + \ {'command': ale#Escape(ale#path#Simplify(g:dir . '/../test-files/python/with_virtualenv/env/' . b:bin_dir . '/black')) . ' --some-option --stdin-filename ' . fname . ' -'}, \ ale#fixers#black#Fix(bufnr('')) Execute(The black callback should include --pyi for .pyi files): let g:ale_python_black_change_directory = 0 - silent execute 'file ' . fnameescape(g:dir . '/../test-files/python/with_virtualenv/subdir/foo/bar.pyi') + let file_path = g:dir . '/../test-files/python/with_virtualenv/subdir/foo/bar.pyi' + silent execute 'file ' . fnameescape(file_path) + let fname = ale#Escape(ale#path#Simplify(file_path)) AssertEqual - \ {'command': ale#Escape(ale#path#Simplify(g:dir . '/../test-files/python/with_virtualenv/env/' . b:bin_dir . '/black')) . ' --pyi -' }, + \ {'command': ale#Escape(ale#path#Simplify(g:dir . '/../test-files/python/with_virtualenv/env/' . b:bin_dir . '/black')) . ' --stdin-filename ' . fname . ' --pyi -'}, \ ale#fixers#black#Fix(bufnr('')) Execute(The black callback should not concatenate options): let g:ale_python_black_options = '--some-option' let g:ale_python_black_change_directory = 0 - silent execute 'file ' . fnameescape(g:dir . '/../test-files/python/with_virtualenv/subdir/foo/bar.pyi') + let file_path = g:dir . '/../test-files/python/with_virtualenv/subdir/foo/bar.pyi' + silent execute 'file ' . fnameescape(file_path) + let fname = ale#Escape(ale#path#Simplify(file_path)) AssertEqual - \ {'command': ale#Escape(ale#path#Simplify(g:dir . '/../test-files/python/with_virtualenv/env/' . b:bin_dir . '/black')) . ' --some-option --pyi -' }, + \ {'command': ale#Escape(ale#path#Simplify(g:dir . '/../test-files/python/with_virtualenv/env/' . b:bin_dir . '/black')) . ' --some-option --stdin-filename ' . fname. ' --pyi -'}, \ ale#fixers#black#Fix(bufnr('')) Execute(Pipenv is detected when python_black_auto_pipenv is set): @@ -52,8 +62,10 @@ Execute(Pipenv is detected when python_black_auto_pipenv is set): call ale#test#SetFilename('../test-files/python/pipenv/whatever.py') + let fname = ale#Escape(ale#path#Simplify(g:dir .'/../test-files/python/pipenv/whatever.py')) + AssertEqual - \ {'command': ale#Escape('pipenv') . ' run black -'}, + \ {'command': ale#Escape('pipenv') . ' run black --stdin-filename '.fname.' -'}, \ ale#fixers#black#Fix(bufnr('')) Execute(Poetry is detected when python_black_auto_poetry is set): @@ -62,8 +74,10 @@ Execute(Poetry is detected when python_black_auto_poetry is set): call ale#test#SetFilename('../test-files/python/poetry/whatever.py') + let fname = ale#Escape(ale#path#Simplify(g:dir .'/../test-files/python/poetry/whatever.py')) + AssertEqual - \ {'command': ale#Escape('poetry') . ' run black -'}, + \ {'command': ale#Escape('poetry') . ' run black --stdin-filename '.fname.' -'}, \ ale#fixers#black#Fix(bufnr('')) Execute(uv is detected when python_black_auto_uv is set): @@ -71,7 +85,10 @@ Execute(uv is detected when python_black_auto_uv is set): let g:ale_python_black_change_directory = 0 call ale#test#SetFilename('../test-files/python/uv/whatever.py') - + + let fname = ale#Escape(ale#path#Simplify(g:dir .'/../test-files/python/uv/whatever.py')) + AssertEqual - \ {'command': ale#Escape('uv') . ' run black -'}, + \ {'command': ale#Escape('uv') . ' run black --stdin-filename '.fname.' -'}, \ ale#fixers#black#Fix(bufnr('')) + \ No newline at end of file