This repository has been archived on 2024-07-19. You can view files and clone it, but cannot push or open issues or pull requests.
ale/test/fixers/test_python_add_blank_lines_fixer.vader
Bert JW Regeer 8e7e810db6 Bugfix: python add blank lines (#1944)
* Don't add newlines when not a control statement for Python
* Add test for accidental newline fix
* Add docstring detection to avoid adding unnecessarily newlines
* Add tests for docstring detection
2018-09-25 10:02:01 +01:00

167 lines
2.8 KiB
Text

Before:
Save g:ale_fixers
After:
Restore
Given python(Some Python without blank lines):
def foo():
""" This is a simple test docstring """
return 1
def bar():
'''This is another simple test docstring'''
return 1
return 4
def bar():
"""
This is a multi-line
docstring
"""
if x:
pass
for l in x:
pass
for l in x:
pass
break
continue
elif x:
pass
while x:
pass
while x:
pass
else:
pass
if x:
pass
elif x:
pass
else:
pass
Execute(Blank lines should be added appropriately):
let g:ale_fixers = {'python': ['add_blank_lines_for_python_control_statements']}
ALEFix
Expect python(Newlines should be added):
def foo():
""" This is a simple test docstring """
return 1
def bar():
'''This is another simple test docstring'''
return 1
return 4
def bar():
"""
This is a multi-line
docstring
"""
if x:
pass
for l in x:
pass
for l in x:
pass
break
continue
elif x:
pass
while x:
pass
while x:
pass
else:
pass
if x:
pass
elif x:
pass
else:
pass
Given python(A file with a main block):
import os
def main():
print('hello')
if __name__ == '__main__':
main()
Execute(Fix the file):
let g:ale_fixers = {'python': ['add_blank_lines_for_python_control_statements']}
ALEFix
Expect python(extra newlines shouldn't be added to the main block):
import os
def main():
print('hello')
if __name__ == '__main__':
main()
Given python(A file with variables/docstring that start with a control statement):
def some():
"""
This is a docstring that contains an
break control statement and also contains a
return something funny.
"""
continue_some_var = True
forward_something = False
if (
continue_some_var and
forwarded_something
):
return True
Execute(Fix the file):
let g:ale_fixers = {'python': ['add_blank_lines_for_python_control_statements']}
ALEFix
Expect python(Extra new lines are not added to the file):
def some():
"""
This is a docstring that contains an
break control statement and also contains a
return something funny.
"""
continue_some_var = True
forward_something = False
if (
continue_some_var and
forwarded_something
):
return True