Files
tubestation/python/mozlint/test/conftest.py
Andrew Halberstadt f58b1651f0 Bug 1288432 - [mozlint] Use yaml for lint definitions and separate implementation of external linters, r=bc
Rather than using .lint.py files that contain a LINTER object, linter definitions are now in
standalone .yml files. In the case of external linters that need to run python code, the payload
is now of the form:
<module path>:<object path>

The <module path> is the import path to the module, and <object path> is the callable object to
use within that module. It is up to the consumer of mozlint to ensure the <module path> lives on
sys.path. For example, if an external lint's function lives in package 'foo', file 'bar.py' and
function 'lint', the payload would read:
foo.bar:lint

This mechanism was borrowed from taskcluster.

MozReview-Commit-ID: AIsfbVmozy4
2017-06-02 09:49:26 -04:00

46 lines
1.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 sys
import pytest
from mozlint import LintRoller
here = os.path.abspath(os.path.dirname(__file__))
@pytest.fixture
def lint(request):
lintargs = getattr(request.module, 'lintargs', {})
return LintRoller(root=here, **lintargs)
@pytest.fixture(scope='session')
def filedir():
return os.path.join(here, 'files')
@pytest.fixture(scope='module')
def files(filedir, request):
suffix_filter = getattr(request.module, 'files', [''])
return [os.path.join(filedir, p) for p in os.listdir(filedir)
if any(p.endswith(suffix) for suffix in suffix_filter)]
@pytest.fixture(scope='session')
def lintdir():
lintdir = os.path.join(here, 'linters')
sys.path.insert(0, lintdir)
return lintdir
@pytest.fixture(scope='module')
def linters(lintdir, request):
suffix_filter = getattr(request.module, 'linters', ['.lint.py'])
return [os.path.join(lintdir, p) for p in os.listdir(lintdir)
if any(p.endswith(suffix) for suffix in suffix_filter)]