forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			115 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
	
		
			3 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[1].rule == "E501"
 | 
						|
    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()
 |