1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- # 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 ResultContainer
- from mozlint.errors import LintersNotConfigured, LintException
- here = os.path.abspath(os.path.dirname(__file__))
- linters = ('string.lint', 'regex.lint', 'external.lint')
- def test_roll_no_linters_configured(lint, files):
- with pytest.raises(LintersNotConfigured):
- lint.roll(files)
- def test_roll_successful(lint, linters, files):
- lint.read(linters)
- result = lint.roll(files)
- assert len(result) == 1
- assert lint.return_code == 1
- path = result.keys()[0]
- assert os.path.basename(path) == 'foobar.js'
- errors = result[path]
- assert isinstance(errors, list)
- assert len(errors) == 6
- container = errors[0]
- assert isinstance(container, ResultContainer)
- assert container.rule == 'no-foobar'
- def test_roll_catch_exception(lint, lintdir, files):
- lint.read(os.path.join(lintdir, 'raises.lint'))
- # suppress printed traceback from test output
- old_stderr = sys.stderr
- sys.stderr = open(os.devnull, 'w')
- with pytest.raises(LintException):
- lint.roll(files)
- sys.stderr = old_stderr
- def test_roll_with_excluded_path(lint, linters, files):
- lint.lintargs.update({'exclude': ['**/foobar.js']})
- lint.read(linters)
- result = lint.roll(files)
- assert len(result) == 0
- assert lint.return_code == 0
- def test_roll_with_invalid_extension(lint, lintdir, filedir):
- lint.read(os.path.join(lintdir, 'external.lint'))
- result = lint.roll(os.path.join(filedir, 'foobar.py'))
- assert len(result) == 0
- assert lint.return_code == 0
- def test_roll_with_failure_code(lint, lintdir, files):
- lint.read(os.path.join(lintdir, 'badreturncode.lint'))
- assert lint.return_code is None
- result = lint.roll(files)
- assert len(result) == 0
- assert lint.return_code == 1
- if __name__ == '__main__':
- sys.exit(pytest.main(['--verbose', __file__]))
|