fune/tools/lint/test/test_flake8.py
Cristian Tuns c1b52fd95e Backed out 5 changesets (bug 1811850) for causing linting bustages(bugzilla) CLOSED TREE
Backed out changeset e8fcfc7f8108 (bug 1811850)
Backed out changeset f8950d716c9e (bug 1811850)
Backed out changeset f650123cc188 (bug 1811850)
Backed out changeset d96f90c2c58b (bug 1811850)
Backed out changeset c3b0f9666183 (bug 1811850)
2023-03-16 22:16:30 -04:00

117 lines
3.1 KiB
Python

import os
import mozunit
LINTER = "flake8"
fixed = 0
def test_lint_single_file(lint, paths):
results = lint(paths("bad.py"))
assert len(results) == 2
assert results[0].rule == "F401"
assert results[0].level == "error"
assert results[1].rule == "E501"
assert results[1].level == "error"
assert results[1].lineno == 5
# run lint again to make sure the previous results aren't counted twice
results = lint(paths("bad.py"))
assert len(results) == 2
def test_lint_custom_config_ignored(lint, paths):
results = lint(paths("custom"))
assert len(results) == 2
results = lint(paths("custom/good.py"))
assert len(results) == 2
def test_lint_fix(lint, create_temp_file):
global fixed
contents = """
import distutils
def foobar():
pass
""".lstrip()
path = create_temp_file(contents, name="bad.py")
results = lint([path])
assert len(results) == 2
# Make sure the missing blank line is fixed, but the unused import isn't.
results = lint([path], fix=True)
assert len(results) == 1
assert fixed == 1
fixed = 0
# Also test with a directory
path = os.path.dirname(create_temp_file(contents, name="bad2.py"))
results = lint([path], fix=True)
# There should now be two files with 2 combined errors
assert len(results) == 2
assert fixed == 1
assert all(r.rule != "E501" for r in results)
def test_lint_fix_uses_config(lint, create_temp_file):
contents = """
foo = ['A list of strings', 'that go over 80 characters', 'to test if autopep8 fixes it']
""".lstrip()
path = create_temp_file(contents, name="line_length.py")
lint([path], fix=True)
# Make sure autopep8 reads the global config under lintargs['root']. If it
# didn't, then the line-length over 80 would get fixed.
with open(path, "r") as fh:
assert fh.read() == contents
def test_lint_excluded_file(lint, paths, config):
# First file is globally excluded, second one is from .flake8 config.
files = paths("bad.py", "subdir/exclude/bad.py", "subdir/exclude/exclude_subdir")
config["exclude"] = paths("bad.py")
results = lint(files, config)
print(results)
assert len(results) == 0
# Make sure excludes also apply when running from a different cwd.
cwd = paths("subdir")[0]
os.chdir(cwd)
results = lint(paths("subdir/exclude"))
print(results)
assert len(results) == 0
def test_lint_excluded_file_with_glob(lint, paths, config):
config["exclude"] = paths("ext/*.configure")
files = paths("ext")
results = lint(files, config)
print(results)
assert len(results) == 0
files = paths("ext/bad.configure")
results = lint(files, config)
print(results)
assert len(results) == 0
def test_lint_excluded_file_with_no_filter(lint, paths, config):
results = lint(paths("subdir/exclude"), use_filters=False)
print(results)
assert len(results) == 4
def test_lint_uses_custom_extensions(lint, paths):
assert len(lint(paths("ext"))) == 1
assert len(lint(paths("ext/bad.configure"))) == 1
if __name__ == "__main__":
mozunit.main()