# # Copyright (c) 2024 Bitdefender # SPDX-License-Identifier: Apache-2.0 # import time from core import util class Report(object): def __init__(self, enabled: bool): self._fd = None self._f_name = None self._ts = int(time.time()) self._enabled = enabled self.ropen() def __del__(self) -> type(None): """ Close the fd when the object is destroyed. """ if not self._enabled: return self.rclose() util.pr_debug("[*] report written to file : %s" % (self._f_name)) def ropen(self) -> type(None): """ Open the file and store the fd. """ if not self._enabled: return self._f_name = str(self._ts) + ".report" util.pr_debug("[*] write report to file : %s" % (self._f_name)) self._fd = open(self._f_name, "w") def rclose(self) -> type(None): """ Close the fd handle. """ if not self._enabled: return self._fd.close() def rwrite(self, expected, actual, f_path, ldiff) -> type(None): """ Write in the file the differences between the two outputs, but also their complete content. """ if not self._enabled: return self._fd.write("-" * 90) self._fd.write("\n") self._fd.write("f_path = %s" % (f_path)) self._fd.write("\n") for diff in ldiff: self._fd.write("=" * 40 + " DIFF " + "=" * 40) self._fd.write("\n") for elem in diff: self._fd.write(elem[0]) self._fd.write("\n") self._fd.write(elem[1]) self._fd.write("\n") self._fd.write("=" * 40 + " EXPECTED " + "=" * 40) self._fd.write("\n") self._fd.write(expected) self._fd.write("=" * 40 + " ACTUAL " + "=" * 40) self._fd.write("\n") self._fd.write(actual)