diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /python/mozlint/test/test_formatters.py | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'python/mozlint/test/test_formatters.py')
-rw-r--r-- | python/mozlint/test/test_formatters.py | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/python/mozlint/test/test_formatters.py b/python/mozlint/test/test_formatters.py new file mode 100644 index 000000000..b9e6512b2 --- /dev/null +++ b/python/mozlint/test/test_formatters.py @@ -0,0 +1,90 @@ +# 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 unicode_literals + +import json +import sys +from collections import defaultdict + +import pytest + +from mozlint import ResultContainer +from mozlint import formatters + + +@pytest.fixture +def results(scope='module'): + containers = ( + ResultContainer( + linter='foo', + path='a/b/c.txt', + message="oh no foo", + lineno=1, + ), + ResultContainer( + linter='bar', + path='d/e/f.txt', + message="oh no bar", + hint="try baz instead", + level='warning', + lineno=4, + column=2, + rule="bar-not-allowed", + ), + ResultContainer( + linter='baz', + path='a/b/c.txt', + message="oh no baz", + lineno=4, + source="if baz:", + ), + ) + results = defaultdict(list) + for c in containers: + results[c.path].append(c) + return results + + +def test_stylish_formatter(results): + expected = """ +a/b/c.txt + 1 error oh no foo (foo) + 4 error oh no baz (baz) + +d/e/f.txt + 4:2 warning oh no bar bar-not-allowed (bar) + +\u2716 3 problems (2 errors, 1 warning) +""".strip() + + fmt = formatters.get('stylish', disable_colors=True) + assert expected == fmt(results) + + +def test_treeherder_formatter(results): + expected = """ +TEST-UNEXPECTED-ERROR | a/b/c.txt:1 | oh no foo (foo) +TEST-UNEXPECTED-ERROR | a/b/c.txt:4 | oh no baz (baz) +TEST-UNEXPECTED-WARNING | d/e/f.txt:4:2 | oh no bar (bar-not-allowed) +""".strip() + + fmt = formatters.get('treeherder') + assert expected == fmt(results) + + +def test_json_formatter(results): + fmt = formatters.get('json') + formatted = json.loads(fmt(results)) + + assert set(formatted.keys()) == set(results.keys()) + + slots = ResultContainer.__slots__ + for errors in formatted.values(): + for err in errors: + assert all(s in err for s in slots) + + +if __name__ == '__main__': + sys.exit(pytest.main(['--verbose', __file__])) |