diff options
Diffstat (limited to 'python/mozlint/mozlint/formatters/treeherder.py')
-rw-r--r-- | python/mozlint/mozlint/formatters/treeherder.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/python/mozlint/mozlint/formatters/treeherder.py b/python/mozlint/mozlint/formatters/treeherder.py new file mode 100644 index 000000000..7c27011cf --- /dev/null +++ b/python/mozlint/mozlint/formatters/treeherder.py @@ -0,0 +1,31 @@ +# 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 + +from ..result import ResultContainer + + +class TreeherderFormatter(object): + """Formatter for treeherder friendly output. + + This formatter looks ugly, but prints output such that + treeherder is able to highlight the errors and warnings. + This is a stop-gap until bug 1276486 is fixed. + """ + fmt = "TEST-UNEXPECTED-{level} | {path}:{lineno}{column} | {message} ({rule})" + + def __call__(self, result): + message = [] + for path, errors in sorted(result.iteritems()): + for err in errors: + assert isinstance(err, ResultContainer) + + d = {s: getattr(err, s) for s in err.__slots__} + d["column"] = ":%s" % d["column"] if d["column"] else "" + d['level'] = d['level'].upper() + d['rule'] = d['rule'] or d['linter'] + message.append(self.fmt.format(**d)) + + return "\n".join(message) |