Mercurial > repos > shellac > sam_consensus_v3
diff env/lib/python3.9/site-packages/allure_commons/logger.py @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author | shellac |
---|---|
date | Mon, 22 Mar 2021 18:12:50 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/env/lib/python3.9/site-packages/allure_commons/logger.py Mon Mar 22 18:12:50 2021 +0000 @@ -0,0 +1,88 @@ +import errno +import io +import os +import sys +import json +import uuid +import shutil +from six import text_type +from attr import asdict +from allure_commons import hookimpl + +INDENT = 4 + + +class AllureFileLogger(object): + + def __init__(self, report_dir, clean=False): + self._report_dir = report_dir + + try: + os.makedirs(report_dir) + except OSError as e: + if e.errno != errno.EEXIST: + raise + elif clean: + for f in os.listdir(report_dir): + f = os.path.join(report_dir, f) + if os.path.isfile(f): + os.unlink(f) + + def _report_item(self, item): + indent = INDENT if os.environ.get("ALLURE_INDENT_OUTPUT") else None + filename = item.file_pattern.format(prefix=uuid.uuid4()) + data = asdict(item, filter=lambda attr, value: not (type(value) != bool and not bool(value))) + with io.open(os.path.join(self._report_dir, filename), 'w', encoding='utf8') as json_file: + if sys.version_info.major < 3: + json_file.write( + unicode(json.dumps(data, indent=indent, ensure_ascii=False, encoding='utf8'))) # noqa: F821 + else: + json.dump(data, json_file, indent=indent, ensure_ascii=False) + + @hookimpl + def report_result(self, result): + self._report_item(result) + + @hookimpl + def report_container(self, container): + self._report_item(container) + + @hookimpl + def report_attached_file(self, source, file_name): + destination = os.path.join(self._report_dir, file_name) + shutil.copy2(source, destination) + + @hookimpl + def report_attached_data(self, body, file_name): + destination = os.path.join(self._report_dir, file_name) + with open(destination, 'wb') as attached_file: + if isinstance(body, text_type): + attached_file.write(body.encode('utf-8')) + else: + attached_file.write(body) + + +class AllureMemoryLogger(object): + + def __init__(self): + self.test_cases = [] + self.test_containers = [] + self.attachments = {} + + @hookimpl + def report_result(self, result): + data = asdict(result, filter=lambda attr, value: not (type(value) != bool and not bool(value))) + self.test_cases.append(data) + + @hookimpl + def report_container(self, container): + data = asdict(container, filter=lambda attr, value: not (type(value) != bool and not bool(value))) + self.test_containers.append(data) + + @hookimpl + def report_attached_file(self, source, file_name): + pass + + @hookimpl + def report_attached_data(self, body, file_name): + self.attachments[file_name] = body