forked from mirrors/gecko-dev
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)
117 lines
3.1 KiB
Python
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()
|