blob: eeb50e77fa6d92466ac09fe567b13e078daeee10 [file] [log] [blame]
# 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 json
from base import BaseFormatter
class ErrorSummaryFormatter(BaseFormatter):
def __init__(self):
self.line_count = 0
def __call__(self, data):
rv = BaseFormatter.__call__(self, data)
self.line_count += 1
return rv
def _output(self, data_type, data):
data["action"] = data_type
data["line"] = self.line_count
return "%s\n" % json.dumps(data)
def _output_test(self, test, subtest, item):
data = {"test": test,
"subtest": subtest,
"status": item["status"],
"expected": item["expected"],
"message": item.get("message"),
"stack": item.get("stack")}
return self._output("test_result", data)
def test_status(self, item):
if "expected" not in item:
return
return self._output_test(item["test"], item["subtest"], item)
def test_end(self, item):
if "expected" not in item:
return
return self._output_test(item["test"], None, item)
def log(self, item):
if item["level"] not in ("ERROR", "CRITICAL"):
return
data = {"level": item["level"],
"message": item["message"]}
return self._output("log", data)
def crash(self, item):
data = {"test": item.get("test"),
"signature": item["signature"],
"stackwalk_stdout": item.get("stackwalk_stdout"),
"stackwalk_stderr": item.get("stackwalk_stderr")}
return self._output("crash", data)