forked from mirrors/gecko-dev
		
	 02a7b4ebdf
			
		
	
	
		02a7b4ebdf
		
	
	
	
	
		
			
			Allow-list all Python code in tree for use with the black linter, and re-format all code in-tree accordingly. To produce this patch I did all of the following: 1. Make changes to tools/lint/black.yml to remove include: stanza and update list of source extensions. 2. Run ./mach lint --linter black --fix 3. Make some ad-hoc manual updates to python/mozbuild/mozbuild/test/configure/test_configure.py -- it has some hard-coded line numbers that the reformat breaks. 4. Make some ad-hoc manual updates to `testing/marionette/client/setup.py`, `testing/marionette/harness/setup.py`, and `testing/firefox-ui/harness/setup.py`, which have hard-coded regexes that break after the reformat. 5. Add a set of exclusions to black.yml. These will be deleted in a follow-up bug (1672023). # ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D94045
		
			
				
	
	
		
			83 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # This Source Code Form is subject to the terms of the Mozilla Public
 | |
| # License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 | |
| 
 | |
| import os
 | |
| 
 | |
| import mozunit
 | |
| import pytest
 | |
| 
 | |
| from mozlint.parser import Parser
 | |
| from mozlint.errors import (
 | |
|     LinterNotFound,
 | |
|     LinterParseError,
 | |
| )
 | |
| 
 | |
| here = os.path.abspath(os.path.dirname(__file__))
 | |
| 
 | |
| 
 | |
| @pytest.fixture(scope="module")
 | |
| def parse(lintdir):
 | |
|     parser = Parser(here)
 | |
| 
 | |
|     def _parse(name):
 | |
|         path = os.path.join(lintdir, name)
 | |
|         return parser(path)
 | |
| 
 | |
|     return _parse
 | |
| 
 | |
| 
 | |
| def test_parse_valid_linter(parse):
 | |
|     lintobj = parse("string.yml")
 | |
|     assert isinstance(lintobj, list)
 | |
|     assert len(lintobj) == 1
 | |
| 
 | |
|     lintobj = lintobj[0]
 | |
|     assert isinstance(lintobj, dict)
 | |
|     assert "name" in lintobj
 | |
|     assert "description" in lintobj
 | |
|     assert "type" in lintobj
 | |
|     assert "payload" in lintobj
 | |
|     assert "extensions" in lintobj
 | |
|     assert "include" in lintobj
 | |
|     assert lintobj["include"] == ["."]
 | |
|     assert set(lintobj["extensions"]) == set(["js", "jsm"])
 | |
| 
 | |
| 
 | |
| def test_parser_valid_multiple(parse):
 | |
|     lintobj = parse("multiple.yml")
 | |
|     assert isinstance(lintobj, list)
 | |
|     assert len(lintobj) == 2
 | |
| 
 | |
|     assert lintobj[0]["name"] == "StringLinter"
 | |
|     assert lintobj[1]["name"] == "RegexLinter"
 | |
| 
 | |
| 
 | |
| @pytest.mark.parametrize(
 | |
|     "linter",
 | |
|     [
 | |
|         "invalid_type.yml",
 | |
|         "invalid_extension.ym",
 | |
|         "invalid_include.yml",
 | |
|         "invalid_include_with_glob.yml",
 | |
|         "invalid_exclude.yml",
 | |
|         "invalid_support_files.yml",
 | |
|         "missing_attrs.yml",
 | |
|         "missing_definition.yml",
 | |
|         "non_existing_include.yml",
 | |
|         "non_existing_exclude.yml",
 | |
|         "non_existing_support_files.yml",
 | |
|     ],
 | |
| )
 | |
| def test_parse_invalid_linter(parse, linter):
 | |
|     with pytest.raises(LinterParseError):
 | |
|         parse(linter)
 | |
| 
 | |
| 
 | |
| def test_parse_non_existent_linter(parse):
 | |
|     with pytest.raises(LinterNotFound):
 | |
|         parse("missing_file.lint")
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     mozunit.main()
 |