diff options
Diffstat (limited to 'python/mozlint/test/test_roller.py')
-rw-r--r-- | python/mozlint/test/test_roller.py | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/python/mozlint/test/test_roller.py b/python/mozlint/test/test_roller.py new file mode 100644 index 000000000..b4b82c346 --- /dev/null +++ b/python/mozlint/test/test_roller.py @@ -0,0 +1,82 @@ +# 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__])) |