From 7ac117cd8deefc8d657d7df9a6ba30c8b567d4e8 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Thu, 20 Jun 2024 15:00:55 +1000 Subject: [PATCH] Use a json encoder for IfcTester JSON reports to ensure everything is stringable --- src/ifctester/ifctester/reporter.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ifctester/ifctester/reporter.py b/src/ifctester/ifctester/reporter.py index cbe56546a1..ee41023c83 100644 --- a/src/ifctester/ifctester/reporter.py +++ b/src/ifctester/ifctester/reporter.py @@ -374,8 +374,8 @@ class Json(Reporter): ResultsFailedEntity( { "reason": f["reason"], - "element": str(f["element"]), - "element_type": str(ifcopenshell.util.element.get_type(f["element"])), + "element": f["element"], + "element_type": ifcopenshell.util.element.get_type(f["element"]), "class": f["element"].is_a(), "predefined_type": ifcopenshell.util.element.get_predefined_type(f["element"]), "name": getattr(f["element"], "Name", None), @@ -391,13 +391,16 @@ class Json(Reporter): def to_string(self) -> str: import json - return json.dumps(self.results) + return json.dumps(self.results, default=self.encode) def to_file(self, filepath: str) -> None: import json with open(filepath, "w", encoding="utf-8") as outfile: - return json.dump(self.results, outfile, ensure_ascii=False) + return json.dump(self.results, outfile, ensure_ascii=False, default=self.encode) + + def encode(self, obj): + return str(obj) class Html(Json):