blob: 0e888ce269dd98faa618ded54b03a92e28e0ef0b [file] [log] [blame]
import json
from mozlog.structured.formatters.base import BaseFormatter
class WptreportFormatter(BaseFormatter):
"""Formatter that produces results in the format that wpreport expects."""
def __init__(self):
self.raw_results = {}
def suite_end(self, data):
results = {}
results["results"] = []
for test_name in self.raw_results:
result = {"test": test_name}
result.update(self.raw_results[test_name])
results["results"].append(result)
return json.dumps(results)
def find_or_create_test(self, data):
test_name = data["test"]
if test_name not in self.raw_results:
self.raw_results[test_name] = {
"subtests": [],
"status": "",
"message": None
}
return self.raw_results[test_name]
def create_subtest(self, data):
test = self.find_or_create_test(data)
subtest_name = data["subtest"]
subtest = {
"name": subtest_name,
"status": "",
"message": None
}
test["subtests"].append(subtest)
return subtest
def test_status(self, data):
subtest = self.create_subtest(data)
subtest["status"] = data["status"]
if "message" in data:
subtest["message"] = data["message"]
def test_end(self, data):
test = self.find_or_create_test(data)
test["status"] = data["status"]
if "message" in data:
test["message"] = data["message"]