summaryrefslogtreecommitdiff
path: root/test/handler
diff options
context:
space:
mode:
authorpmacosta <pmacosta@users.noreply.github.com>2018-12-06 13:27:03 -0500
committerBjorn Neergaard <bjorn@neersighted.com>2018-12-06 11:27:03 -0700
commitfdd37acc1f381230fc2ed87303e98c7a4daafaad (patch)
treef7e139d3f7c3d7c3b683efa1fd8f0171cd647f75 /test/handler
parent2760cf7018893b42c4ae5c750a7f1d38669aa821 (diff)
downloadale-fdd37acc1f381230fc2ed87303e98c7a4daafaad.zip
Add support for pydocstyle linter (#2085)
The linter can correctly parse pydocstyle output with any of the following command-line options enabled: --explain, --source, --debug, and/or --verbose
Diffstat (limited to 'test/handler')
-rw-r--r--test/handler/test_pydocstyle_handler.vader116
1 files changed, 116 insertions, 0 deletions
diff --git a/test/handler/test_pydocstyle_handler.vader b/test/handler/test_pydocstyle_handler.vader
new file mode 100644
index 00000000..d155dc9a
--- /dev/null
+++ b/test/handler/test_pydocstyle_handler.vader
@@ -0,0 +1,116 @@
+Before:
+ Save g:ale_warn_about_trailing_whitespace
+
+ let g:ale_warn_about_trailing_whitespace = 1
+
+ runtime ale_linters/python/pydocstyle.vim
+
+After:
+ Restore
+
+ call ale#linter#Reset()
+
+ silent file something_else.py
+
+" File sample.py
+" # sample.py file
+"
+" def main():
+" """
+" This is a multi-line description that should produce multiple errors to be
+" tested by the handler
+" """
+" return Fales
+"
+"
+" if __name__ == '__main__':
+" main()
+"
+" The command to generate the handler input is:
+"
+" $ python -m pydocstyle --verbose --source --explain sample.py
+" [...]
+" $
+
+Execute(Basic pydocstyle warnings should be handled):
+ AssertEqual
+ \ [
+ \ {
+ \ 'lnum': 1,
+ \ 'col': 1,
+ \ 'text': 'Missing docstring in public module',
+ \ 'code': 'D100',
+ \ 'type': 'W',
+ \ },
+ \ {
+ \ 'lnum': 4,
+ \ 'col': 1,
+ \ 'text': '1 blank line required between summary line and description (found 0)',
+ \ 'code': 'D205',
+ \ 'type': 'W',
+ \ },
+ \ {
+ \ 'lnum': 4,
+ \ 'col': 1,
+ \ 'text': 'First line should end with a period (not ''e'')',
+ \ 'code': 'D400',
+ \ 'type': 'W',
+ \ },
+ \ {
+ \ 'lnum': 4,
+ \ 'col': 1,
+ \ 'text': 'First line should be in imperative mood; try rephrasing (found ''This'')',
+ \ 'code': 'D401',
+ \ 'type': 'W',
+ \ },
+ \ ],
+ \ ale_linters#python#pydocstyle#Handle(bufnr(''), [
+ \ 'Checking file ' . fnamemodify(bufname(bufnr('')), ':p') . '.',
+ \ ale#Escape(fnamemodify(bufname(bufnr('')), ':t')) . ':1 at module level:',
+ \ ' D100: Missing docstring in public module',
+ \ '',
+ \ ' All modules should normally have docstrings. [...] all functions and',
+ \ ' classes exported by a module should also have docstrings. Public',
+ \ ' methods (including the __init__ constructor) should also have',
+ \ ' docstrings.',
+ \ ' Note: Public (exported) definitions are either those with names listed',
+ \ ' in __all__ variable (if present), or those that do not start',
+ \ ' with a single underscore.',
+ \ '',
+ \ ' 1: # 2: 3: s 4: a 5: m 6: p 7: l ...',
+ \ '',
+ \ '',
+ \ ale#Escape(fnamemodify(bufname(bufnr('')), ':t')) . ':4 in public function `main`:',
+ \ ' D205: 1 blank line required between summary line and description (found 0)',
+ \ '',
+ \ ' Multi-line docstrings consist of a summary line just like a one-line',
+ \ ' docstring, followed by a blank line, followed by a more elaborate',
+ \ ' description. The summary line may be used by automatic indexing tools;',
+ \ ' it is important that it fits on one line and is separated from the',
+ \ ' rest of the docstring by a blank line.',
+ \ '',
+ \ ' 3: d 4: e 5: f 6: 7: m 8: a 9: i ...',
+ \ '',
+ \ '',
+ \ ale#Escape(fnamemodify(bufname(bufnr('')), ':t')) . ':4 in public function `main`:',
+ \ ' D400: First line should end with a period (not ''e'')',
+ \ '',
+ \ ' The [first line of a] docstring is a phrase ending in a period.',
+ \ '',
+ \ ' 3: d 4: e 5: f 6: 7: m 8: a 9: i ...',
+ \ '',
+ \ '',
+ \ ale#Escape(fnamemodify(bufname(bufnr('')), ':t')) . ':4 in public function `main`:',
+ \ ' D401: First line should be in imperative mood; try rephrasing (found ''This'')',
+ \ '',
+ \ ' [Docstring] prescribes the function or method''s effect as a command:',
+ \ ' ("Do this", "Return that"), not as a description; e.g. don''t write',
+ \ ' "Returns the pathname ...".',
+ \ '',
+ \ ' 3: d 4: e 5: f 6: 7: m 8: a 9: i ...',
+ \ ])
+
+Execute(Handler should handle empty output):
+ AssertEqual
+ \ [],
+ \ ale_linters#python#pydocstyle#Handle(bufnr(''), [])