mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-09 21:00:42 +02:00
There is only a single linter (test-disable.yml) that uses a glob in any include path, and that usage is easily replaced by using the 'extensions' key instead. Since globs in include directives aren't very useful, let's disallow them. This will allow us to simplify the 'filterpaths' logic quite substantially and make future refactorings in this area easier. Differential Revision: https://phabricator.services.mozilla.com/D6798 --HG-- extra : moz-landing-system : lando
72 lines
1.7 KiB
Python
72 lines
1.7 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/.
|
|
|
|
from __future__ import absolute_import
|
|
|
|
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'])
|
|
|
|
|
|
@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()
|