# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import os import pathlib import typing import jinja2 def make_report( name: str, results: typing.List[typing.Dict], log_file_dir: pathlib.Path ) -> None: """Write an xunit report sponge_log.xml to the specified directory. Arguments: name {str} - Name of the report results {typing.List[typing.Dict]} - List of synth results Each result has the following fields: name: str output: str error: bool skipped: bool """ with open(pathlib.Path(__file__).parent / "report.xml.j2") as fh: template = jinja2.Template(fh.read()) output = template.render( name=name, failures=len([result for result in results if result["error"]]), skips=len([result for result in results if result["skipped"]]), results=results, ) os.makedirs(log_file_dir, exist_ok=True) with open(log_file_dir / "sponge_log.xml", "w") as fh: fh.write(output)