validate: at the end print number of errors found

This commit is contained in:
Andrej730
2026-08-03 18:24:59 +05:00
parent 2fe177885e
commit de4ad60df3
@@ -779,15 +779,13 @@ def validate_ifc_applications(f: ifcopenshell.file, logger: Union[Logger, json_l
class LogDetectionHandler(Handler): class LogDetectionHandler(Handler):
message_logged = False
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.default_handler = logging.StreamHandler() self.default_handler = logging.StreamHandler()
self.count = 0
def emit(self, record): def emit(self, record):
if not self.message_logged: self.count += 1
self.message_logged = True
self.default_handler.emit(record) self.default_handler.emit(record)
@@ -826,6 +824,7 @@ if __name__ == "__main__":
filenames: list[str] = args.files filenames: list[str] = args.files
some_file_is_invalid = False some_file_is_invalid = False
total_errors = 0
if args.recursion_limit > 0: if args.recursion_limit > 0:
sys.setrecursionlimit(args.recursion_limit) sys.setrecursionlimit(args.recursion_limit)
@@ -859,10 +858,12 @@ if __name__ == "__main__":
for x in logger.statements: for x in logger.statements:
print(json.dumps(x, default=conv)) print(json.dumps(x, default=conv))
if handler: if not args.json:
assert handler
logger.removeHandler(handler) logger.removeHandler(handler)
invalid_ifc = handler.message_logged invalid_ifc = bool(handler.count)
else: # json_logger. total_errors += handler.count
else:
invalid_ifc = bool(logger.statements) invalid_ifc = bool(logger.statements)
if invalid_ifc: if invalid_ifc:
@@ -870,5 +871,8 @@ if __name__ == "__main__":
else: else:
print("No validation issues found.") print("No validation issues found.")
if not args.json:
print(f"{total_errors} errors found.")
if some_file_is_invalid: if some_file_is_invalid:
exit(1) exit(1)