Add pymarkdown for Markdown linting (#4906)

Add support for pymarkdown

Closes #4785
This commit is contained in:
Raph471
2025-03-11 13:31:31 +01:00
committed by GitHub
parent f0c8eb4fa8
commit b26608681d
7 changed files with 236 additions and 1 deletions

View File

@@ -0,0 +1,50 @@
Before:
call ale#assert#SetUpLinterTest('markdown', 'pymarkdown')
After:
call ale#assert#TearDownLinterTest()
Execute(The pymarkdown command callback should return default string):
AssertLinter 'pymarkdown', ale#Escape('pymarkdown') . ' scan-stdin'
Execute(The pycodestyle command callback should allow options):
let g:markdown_pymarkdown_options = '--exclude=test*.py'
Execute(The pymarkdown executable should be configurable):
let g:ale_markdown_pymarkdown_executable = '~/.local/bin/pymarkdown'
AssertLinter '~/.local/bin/pymarkdown',
\ ale#Escape('~/.local/bin/pymarkdown') . ' scan-stdin'
Execute(Setting executable to 'pipenv' appends 'run pymarkdown'):
let g:ale_markdown_pymarkdown_executable = 'path/to/pipenv'
AssertLinter 'path/to/pipenv',
\ ale#Escape('path/to/pipenv') . ' run pymarkdown scan-stdin'
Execute(Pipenv is detected when markdown_pymarkdown_auto_pipenv is set):
let g:ale_markdown_pymarkdown_auto_pipenv = 1
call ale#test#SetFilename('../test-files/python/pipenv/whatever.py')
AssertLinter 'pipenv',
\ ale#Escape('pipenv') . ' run pymarkdown scan-stdin'
Execute(Setting executable to 'poetry' appends 'run pymarkdown'):
let g:ale_markdown_pymarkdown_executable = 'path/to/poetry'
AssertLinter 'path/to/poetry',
\ ale#Escape('path/to/poetry') . ' run pymarkdown scan-stdin'
Execute(Poetry is detected when markdown_pymarkdown_auto_poetry is set):
let g:ale_markdown_pymarkdown_auto_poetry = 1
call ale#test#SetFilename('../test-files/python/poetry/whatever.py')
AssertLinter 'poetry',
\ ale#Escape('poetry') . ' run pymarkdown scan-stdin'
Execute(uv is detected when markdown_pymarkdown_auto_uv is set):
let g:ale_markdown_pymarkdown_auto_uv = 1
call ale#test#SetFilename('../test-files/python/uv/whatever.py')
AssertLinter 'uv',
\ ale#Escape('uv') . ' run pymarkdown scan-stdin'

View File

@@ -0,0 +1,52 @@
Before:
Save g:ale_warn_about_trailing_whitespace
let g:ale_warn_about_trailing_whitespace = 1
runtime ale_linters/markdown/pymarkdown.vim
After:
Restore
unlet! b:ale_warn_about_trailing_whitespace
call ale#linter#Reset()
Execute (Should parse error correctly):
AssertEqual
\ [
\ {
\ 'lnum': 1,
\ 'col': 1,
\ 'type': 'M',
\ 'text': 'Headings should be surrounded by blank lines',
\ 'code': 'MD022',
\ }
\ ],
\ ale_linters#markdown#pymarkdown#Handle(bufnr(''), [
\ 'foo.md:1:1: MD022: Headings should be surrounded by blank lines',
\ ])
Execute(Warnings about trailing whitespace should be reported by default):
AssertEqual
\ [
\ {
\ 'lnum': 1,
\ 'col': 1,
\ 'type': 'M',
\ 'text': 'who cares',
\ 'code': 'MD009',
\ },
\ ],
\ ale_linters#markdown#pymarkdown#Handle(bufnr(''), [
\ 'foo.md:1:1: MD009: who cares',
\ ])
Execute(Disabling trailing whitespace warnings should work):
let b:ale_warn_about_trailing_whitespace = 0
AssertEqual
\ [
\ ],
\ ale_linters#markdown#pymarkdown#Handle(bufnr(''), [
\ 'foo.md:1:1: MD009: who cares',
\ ])